Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/01-需求分析/PRD_工具C_科研数据编辑器_V6.md
HaHafeng 1b53ab9d52 feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
2026-01-14 19:15:01 +08:00

5.9 KiB
Raw Blame History

PRD<EFBFBD>啜ool C - 遘醍<E98198>疲焚謐ョ郛冶セ大<EFBDBE>?(The Research Editor)

<EFBFBD>。」迚域悽 V6.0 (AI Code Interpreter 蠅槫シコ迚?
*莠ァ蜩∝ス「諤? Web 遶ッ蜿梧<E89CBF>ク郛冶セ大勣 (GUI 蜿ッ隗<EFBDAF>喧謫堺ス?+ LUI 閾ェ辟カ隸ュ險€莠、莠<EFBDA4>)
*譬ク蠢<EFBFBD>サキ蛟? <EFBFBD>€廢xcel 逧<><E980A7>逕ィ諤ァ窶昜ク寂€弃ython 逧<>シコ螟ァ閭ス蜉帚€晉サ灘粋縲ょ現逕滓里蜿ッ莉・騾夊ソ<E5A48A><EFBFBD><EFBFBD>せ蜃サ螳梧<E89EB3>蠕ョ謫搾シ御ケ溷庄莉・騾夊ソ<E5A48A><EFBDBF>辟カ隸ュ險€<C280>硯 AI 郛門<E9839B>莉」遐∝ョ梧<EFBDAE>螟肴揩逧<E68FA9><EFBFBD>エ嶺ササ蜉。<E89C89>亥ヲる柄螳ス霓ャ謐「縲∝、夐㍾謠定。・<EFBDA1>€?
*謚€譛ッ蠎募コ? Node.js BFF + Python Server-side Sandbox + DeepSeek-V3

荳€縲?莠ァ蜩∵<E89CA9>ク蠢<EFBDB8>炊蠢オ (Core Philosophy)

1.1 蜿梧<E89CBF>ク鬩ア蜉ィ (Dual-Core Interaction)

  • 蟾ヲ閼<EFBFBD> (GUI): 謠蝉セ帷アサ莨シ Excel 逧<>ス第<EFBDBD>シ蜥悟キ・蜈キ譬擾シ碁€ょ粋窶懃峩隗牙シ上€∝次蟄仙喧窶晉噪謫堺ス懶シ亥ヲよ焔蜉ィ菫ョ謾ケ荳€荳ェ蛟シ縲∵賜蠎上€∫ュ幃€会シ峨€?
  • 蜿ウ閼<EFBFBD> (AI Copilot): 謠蝉セ帛ッケ隸晏シ丈サ」遐∬ァ」驥雁勣<E99B81>€ょ粋窶憺€サ霎第€ァ縲∵音驥丞喧窶晉噪謫堺ス懶シ亥ヲや€懈滑蟷エ鮴<EFBDB4><E9AEB4>?0蟯∝<E89FAF>邂ア窶昴€€懷唖髯、謇€譛臥ゥコ陦娯€€€懆ョ。邂礼函蟄俶慮髣エ窶晢シ峨€?

1.2 蜿ッ謗ァ鮟醍將 (Controllable Blackbox)

AI 荳咲峩謗・菫ョ謾ケ謨ー謐ョ<E8AC90>€梧弍**逕滓<E98095> Python 莉」遐<EFBDA3>*縲らウサ扈溷惠謇ァ陦悟燕螻慕、コ**窶憺「<E686BA>桃菴懷今迚<E4BB8A>€*<2A>檎罰逕ィ謌キ遑ョ隶、謇ァ陦鯉シ檎。ョ菫晉ァ醍<EFBDA7>疲焚謐ョ逧<EFBDAE>ク・隹ィ諤ァ縲?

莠後€?譬ク蠢<EFBDB8>ク壼苅豬∫ィ<E288AB> (User Flow)

謨ー謐ョ蟇シ蜈・ -> 蜿梧ィ。蠑乗ク<E4B997>エ?(轤ケ蜃サ蟾・蜈キ譬?OR 蟇ケ隸<EFBDB9> AI) -> 莉」遐<EFBDA3>/謫堺ス懈鴬陦<E9B4AC> -> 螳樊慮鬚<E685AE>ァ域峩譁ー -> 迚域悽蠢ォ辣ァ -> 蟇シ蜃コ扈捺棡

荳峨€?蜉溯<E89C89>讓。蝮苓ッヲ隗」 (Functional Requirements)

1. 逡碁擇蟶<E69387>€ (The Workspace)

  • P0: <EFBFBD><EFBFBD>丞ク<EFBFBD>€ (Split View):
    • 蟾ヲ萓ァ (70%):<>コァ鄂第<E98482>シ (The Grid)<29>悟ア慕、コ謨ー謐ョ鬚<EFBDAE>ァ医€?
    • 蜿ウ萓ァ (30%): 譎コ閭ス萓ァ霎ケ譬?(Smart Sidebar)<29>悟桁蜷?[扈溯ョ。讎りァ<E3828A>] 蜥?[AI 蜉ゥ謇欺] 荳、荳ェ Tab縲?
  • P0: 蜈ィ螻€迥カ諤∵欠遉?
    • 蠖?AI 豁」蝨ィ諤晁€<E69981><C280>蜷守ォッ豁」蝨ィ隶。邂玲慮<E78EB2>悟キヲ萓ァ鄂第<E98482>シ譏セ遉コ *窶廣I 螟<>炊荳?..窶? 驕ョ鄂ゥ<E98482>悟ケカ髞∝ョ夂シ冶セ托シ碁亟豁「蜿悟<E89CBF>蜀イ遯√€?

2. 鬘カ驛ィ謇∝ケウ蟾・蜈キ譬?(Flat Toolbar) 窶披€?GUI 譬ク蠢<EFBDB8>

*菫晉蕗鬮倬「代€<C280><E288B5>㊥蛹也噪謫堺ス懷<EFBDBD>蜿」<E89CBF>御ス應クコ AI 逧<>。・蜈<EFBDA5>€?

  • P0: 蜿倬㍼蜉<E38DBC>蟾・:
    • 逕滓<EFBFBD>譁ー蜿倬<EFBFBD>? 蠑ケ遯怜<E981AF>蠑乗桷蟒コ蝎ィ縲?
    • 隶。邂玲慮髣エ蟾?<>スョ蛹サ蟄ヲ蟶ク謨ー (蟷?365.25螟?縲?
    • 逕滓<EFBFBD>蜩大序驥? 蝗槫ス貞<EFBDBD>譫蝉ク鍋畑縲?
    • 讓ェ郤オ陦ィ霓ャ謐?(Pivot): * 莠、莠貞合郤ァ: 轤ケ蜃サ蜷惹ク榊<EFBDB8>蜿ェ譏ッ郤ッ蜑咲ォッ隶。邂暦シ瑚€梧弍隹<E5BC8D>畑蜷守ォッ Python 騾サ霎托シ梧髪謖∝、<E2889D>炊譖エ螟肴揩逧<E68FA9>スャ謐「縲?
  • P0: 雍ィ驥乗イサ逅<EFBDBB>:
    • 譟・謇セ驥榊、榊€? 謖?ID 謌門<E8AC8C>蟄玲ョオ譟・驥阪€?
    • 螟夐㍾謠定。・ (MICE): 蜈ィ螻€蜈・蜿」<E89CBF>瑚ー<E7919A>畑蜷守ォ?sklearn 謌?fancyimpute 蠎薙€?
  • P0: 譬キ譛ャ遲幃€?<>サコ蜈・謗呈<E8AC97><E59188>㊥縲?

3. AI Copilot 譎コ閭ス蜉ゥ謇<EFBDA9> (The Brain) 窶披€?V6 譬ク蠢<EFBDB8>合郤ァ

*菴堺コ主承萓ァ萓ァ霎ケ譬冗噪 [AI 蜉ゥ謇欺] Tab縲?

3.1 閾ェ辟カ隸ュ險€<C280>サ、隗」譫<EFBDA3>

  • P0: 諢丞崟隸<EFBFBD>悪: 謾ッ謖∵ィ。邉頑欠莉、<E88E89>悟ヲや€懈エ嶺ク€荳区焚謐ョ窶昴€€懈滑逕キ蜿俶<E89CBF>?窶昴€?
  • P0: 荳贋ク区枚諢溽<EFBFBD>? AI 閭ス螟溯ッサ蜿門ス灘燕逧<E78795><E980A7>蜷?(Metadata) 蜥悟燕 5 陦梧焚謐ョ遉コ萓具シ檎炊隗」謨ー謐ョ蜷ォ荵峨€?

3.2 莉」遐∬ァ」驥雁勣讓。蠑?(Code Interpreter)

  • P0: 莉」遐∫函謌<EFBFBD>: AI 髓亥ッケ逕ィ謌キ髴€豎ゑシ檎函謌仙庄謇ァ陦檎噪 Python (Pandas) 莉」遐∝摎縲?
  • P0: <EFBFBD>桃菴懷今迚?(Action Card):
    • AI 荳咲峩謗・謇ァ陦御サ」遐√€?
    • 逡碁擇螻慕、コ荳€荳ェ蜊。迚<EFBFBD>シ壽桃菴懃アサ蝙<EFBFBD>: 謨ー謐ョ蛻<EFBDAE>ョア | 逶ョ譬<EFBDAE><E8ADAC>? 蟷エ鮴<EFBDB4> | 莉」遐<EFBDA3><EFBFBD>ァ医€?
    • 謖蛾聴<EFBFBD>?*[霑占。御サ」遐―]** | **[蜿匁カ<E58C81>]**縲?
  • P0: 謇ァ陦悟渚鬥<EFBFBD>:
    • 謇ァ陦梧<EFBFBD>蜉滂シ壽仞遉?笨<>シ悟キヲ萓ァ陦ィ譬シ閾ェ蜉ィ蛻キ譁ー縲?
    • 謇ァ陦悟、ア雍・<EFBFBD>哂I 閾ェ蜉ィ蛻<EFBDA8>梵 Error Log<6F>悟ー晁ッ戊<EFBDAF>謌台ソョ豁」莉」遐∝ケカ蟒コ隶ョ驥崎ッ輔€?

3.3 蜈ク蝙<EFBDB8> AI 蝨コ譎ッ謾ッ謖<EFBDAF>

  • 鬮倡コァ貂<EFBFBD><EFBFBD>: 窶懈滑謇€譛牙<E8AD9B><EFBFBD>シょクク蛟シ<E89B9F><EFBDBC>>3蛟肴<E89B9F><E882B4>㊥蟾ョ<E89FBE>画崛謐「荳コ郛コ螟ア蛟シ窶昴€?
  • 螟肴揩謠仙叙: 窶應サ寂€倩ッ頑妙窶吝<E7AAB6>荳ュ謠仙叙蜃コ逕ア窶?窶吝<E7AAB6>髫皮噪隨ャ莠碁Κ<CE9A>シ檎函謌先眠蛻冷€€?
  • 謇ケ驥丞、<EFBFBD>炊: 窶懷唖髯、謇€譛臥シコ螟ア邇<EFBDB1><EFBFBD>ソ<EFBFBD> 50% 逧<><E980A7>窶昴€?

4. 譎コ閭ス扈溯ョ。髱「譚ソ (Insight Panel)

*菴堺コ主承萓ァ萓ァ霎ケ譬冗噪 [扈溯ョ。讎りァ<E3828A>] Tab縲?

  • P0: 蛻苓#蜉? 轤ケ蜃サ蟾ヲ萓ァ鄂第<E98482>シ譟蝉ク€蛻暦シ悟承萓ァ閾ェ蜉ィ譏セ遉コ隸・蛻礼噪蛻<E599AA><EFBFBD><EFBFBD>育峩譁ケ蝗セ/鬚第ャ。蝗セ<E89D97>€?
  • P0: 蠢ォ謐キ謫堺ス<EFBFBD>: 蝗セ陦ィ荳区婿逶エ謗・謠蝉セ帚€懷。ォ陦・窶昴€€<C280>邂ア窶昴€€懈丐蟆<E4B890>€晉ュ牙ソォ謐キ謖蛾聴縲?

5. 蟇シ蜃コ荳取オ∬ス?(Export)

  • P0: 扈捺棡蟇シ蜃コ: 謾ッ謖<EFBDAF> Excel (.xlsx) 蜥?SPSS (.sav) 譬シ蠑上€?
  • P0: 謫堺ス懷ョ。隶。: 蟇シ蜃コ逧<EFBDBA>枚莉カ荳ュ<E88DB3>碁刋蟶ヲ荳€莉?"貂<>エ玲律蠢<E5BE8B> (Cleaning Log)"<EFBFBD>瑚ョー蠖穂コ<EFBFBD>園譛臥噪 AI 莉」遐∝柱謇句勘謫堺ス懈ュ・鬪、<E9ACAA>育畑莠守ァ醍<EFBDA7>疲コッ貅撰シ峨€?

蝗帙€?謨ー謐ョ荳取€ァ閭ス遲也払 (Data Strategy)

4.1 諤ァ閭ス蜃<EFBDBD><E89C83> (Guardrails)

  • <EFBFBD>サカ螟ァ蟆城剞蛻カ: 蜊穂クェ譁<EFBDAA>サカ < 20MB縲?
  • 陦梧焚髯仙宛: 蟒コ隶ョ *< 50,000 陦? 莉・菫晁ッ∝燕遶ッ貂イ譟捺オ∫腐蠎ヲ縲?
    • 遲也払: 蜷守ォッ Python 蜿ッ莉・螟<EFBDA5>炊逋セ荳<EFBDBE>。鯉シ御ス<E5BEA1>燕遶?AG Grid 莉<>刈霓ス蜑<EFBDBD> 100-1000 陦御ス應クコ鬚<EFBDBA>ァ茨シ<E88CA8>review Mode<64>会シ悟ッシ蜃コ譌カ謇咲函謌仙<E8AC8C>驥乗枚莉カ縲?

*4.2 螳牙<E89EB3>荳朱嚼遘?

  • P0: 豐咏ョア髫皮ヲサ: AI 逕滓<E98095>逧?Python 莉」遐∝ソ<E2889D>。サ蝨ィ譛榊苅遶ッ逧<EFBDAF>ョ牙<EFBDAE>豐咏ョア<EFBDAE><EFBDB1>ocker/SAE<41>我クュ霑占。鯉シ檎ヲ∵ュ「隶ソ髣ョ螟也ス大柱邉サ扈滓枚莉カ縲?
  • P0: 謨ー謐ョ閼ア謨<EFBFBD>: 遑ョ菫晁セ灘<EFBDBE>郛冶セ大勣逧<E58BA3>焚謐ョ蟾イ蝨ィ蜑咲スョ邇ッ闃ゑシ亥キ・蜈?B<>牙ョ梧<EFBDAE><EFBFBD> PII 閼ア謨上€?

*莠斐€?蝓狗せ荳守サ溯ョ?

  • AI 驥<>コウ邇? 螻慕、コ Action Card 蜷趣シ檎畑謌キ轤ケ蜃サ窶懆ソ占。娯€晉噪豈比セ九€?
  • 莉」遐∵冠髞咏<EFBFBD>? AI 逕滓<E98095><EFBFBD>サ」遐∝惠蜷守ォッ謇ァ陦悟、ア雍・逧<EFBDA5>ッ比セ九€?
  • 蟶ク逕ィ謖<EFBFBD>サ、 Top 10: 扈溯ョ。蛹サ逕滓怙蟶ク蟇ケ AI 隸エ逧<EFBDB4>ッ昴€?

蜈ュ縲?髯<>ス包シ哂I 謖<>サ、髮<EFBDA4>、コ萓?(Few-Shot Examples)

逕ィ謌キ謖<EFBFBD>サ、 AI 蜉ィ菴<EFBDA8> (Action) 逕滓<EFBFBD>莉」遐<EFBFBD>€サ霎<EFBFBD> (Python Pandas)
"謚頑€ァ蛻ォ霓ャ荳コ謨ー蟄<EFBDB0>" Recode df['sex'] = df['sex'].map({'逕?:1, '螂?:0})
"蟷エ鮴<EFBDB4><E9AEB4>?0蛻<30>ク、扈? Binning df['age_group'] = pd.cut(df['age'], bins=[0,60,150], labels=['0','1'])
"蛻<>髯、豐。譛迂D逧<44><EFBFBD>" Filter df = df.dropna(subset=['patient_id'])
"隶。邂唯MI" Formula df['bmi'] = df['weight'] / (df['height']/100)**2
"謚頑ッ丈クェ莠コ逧<EFBDBA>€陦悟序謌仙、夊。? Pivot/Melt df = df.melt(id_vars=['id'], ...)