Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/01-需求分析/PRD:Tool C - 科研数据编辑器 (MVP V1.1).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

100 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **PRD嚗関ool C \- 蝘𤑳<E89D98><F0A491B3>唳旿蝻𤥁<E89DBB><F0A4A581>?(MVP V1.1)**
| <20><><EFBFBD><EFB99D>𧋦 | V1.1 (撌亦<E6928C><EFBFBD><E89D8F><EFBFBD>? |
| :---- | :---- |
| **鈭批<E988AD><E695B6>?* | **Web 蝡舀㺭<E88880><EFBFBD>颲穃膥 (AG Grid \+ AI Chat)** |
| **<EFBFBD><EFBFBD>蝑𣇉裦** | **"AI-First" \+ "Server-side State"**<2A><><EFBFBD><EFBFBD>?AI <20><><EFBFBD> Python 隞<><E99A9E>摰峕<E691B0><EFBFBD><E79A9C>嚗𥕢誑<F0A595A2>滚𦛚蝡?DataFrame 銝箏<E98A9D><EFBFBD><E98A9D>唳旿皞琜<E79A9E><E7909C>滨垢韐蠘提皜脫<E79A9C><E884AB>諹蝠<E8ABB9><EFBFBD>颲㻫<E9A2B2>?|
| **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摨?* | React \+ AG Grid \+ Node.js BFF \+ Python Sandbox (FastAPI) \+ DeepSeek-V3 |
| **<EFBFBD>䀹凒霈啣<EFBFBD>** | V1.1: 憓𧼮<E68693><F0A7BCAE>唳旿<E594B3>峕郊<E5B395><EFBFBD><E7AE8F><EFBFBD><EFBFBD><E4BC83><EFBFBD><EFBFBD>蝑𣇉裦<F0A38789><E8A3A6><EFBFBD>霂萘<E99C82><E89098>賢𪂹<E8B3A2><EFBFBD>銋剹<E98A8B>?|
## **銝<><E98A9D>?MVP <20><EFBFBD><E8A9A8><EFBFBD> (Objectives)**
1. **撉諹<E69289><E8ABB9>剔㴓嚗?* 頝煾<E9A09D>?<3F>𡏭䌊<F0A18FAD>嗉祗閮<E7A597> \-\> Python 隞<><E99A9E> \-\> <20>𡒊垢<F0A1928A><EFBFBD> \-\> <20>滨垢<E6BBA8>瑟鰵<E7919F>?<3F><><EFBFBD><EFBFBD>湧曎頝胯<E9A09D>?
2. **<EFBFBD>唳旿銝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>** 蝖桐<E89D96><E6A190>见𢆡蝻𤥁<E89DBB>銝?AI <20><EFBFBD>銝滚<E98A9D><EFBFBD><E89D92><EFBFBD><EFBFBD><E59786>虾餈賣滲<E8B3A3>?
3. **<EFBFBD>舐鍂<EFBFBD><EFBFBD>** 閫<><E996AB>銝剜<E98A9D>銋梁<E98A8B><E6A281><EFBFBD><EFBFBD>霂肽<E99C82><E882BD><EFBFBD>摰鮋<E691B0>撌亦<E6928C><E4BAA6><EFBFBD><E6A185>?
## **鈭䎚<E988AD>?霂衣<E99C82><E8A1A3><EFBFBD><E8A098><EFBFBD>瘙?(Functional Requirements)**
### **1\. <20>屸𢒰獢<F0A292B0>沲銝𦒘<E98A9D>霂?(Shell & Session)**
* **P0: 撌血𢰧<E8A180><F0A2B0A7><EFBFBD><EFBFBD><E692A3>嚗?* 撌虫儒 AG Grid (70%)嚗<>𢰧靘?AI Chat (30%)<29>?
* **P0: 隡朞<E99AA1><E69C9E><EFBFBD><E598A5>?(Session Init):**
* <20><EFBFBD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD>辣 \-\> <20>𡒊垢撘<E59EA2><E69298>?Python 餈𤤿<E9A488>/摰孵膥 \-\> <20>㰘蝸 df \-\> 餈𥪜<E9A488> sessionId<49>?
* **蝻𣇉<E89DBB><EFBFBD>瘚页<E7989A>** <20>𡒊垢敹<E59EA2>◆撠肽<E692A0> utf-8 <20>?gbk 閫<><E996AB>嚗屸俈甇<EFBCB6><E89189><EFBFBD><E5839A><EFBFBD>?
* **P1: 敹<>歲銝𦒘<E98A9D>瘣?(Keep-alive):**
* <20>滨垢瘥?30s <20><EFBFBD><E785BE><EFBFBD>頝喋<E9A09D>?
* **頞<>𧒄蝑𣇉裦嚗?* <20><EFBFBD>餈?30min <20><EFBFBD>雿頣<E99BBF><E9A0A3>𡒊垢<F0A1928A>𦠜𦆮<F0A6A09C><F0A686AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>甈⊥<E79488>雿𨀣𧒄嚗峕<E59A97>蝷算<E89DB7><EFBFBD>霂嘥歇餈<E6AD87><E9A488>嚗諹窈<E8ABB9>齿鰵<E9BDBF>㰘蝸<E3B098><E89DB8><EFBFBD><EFBFBD>?
### **2\. 頞<>漣蝵烐聢 (The Grid) \- *<2A>滨垢鈭支<E988AD>***
* **P0: <20>唳旿撅閧內 (View):**
* <20><EFBFBD> API <20><><EFBFBD><EFBFBD><E58CA7>唳旿嚗<E697BF><E59A97><EFBFBD>芋撘𧶏<E69298><EFBFBD><E99A9E><EFBFBD>?100-500 銵䕘<E98AB5><E49598>?
* **<2A>㛖掩<E39B96>𧢲綫<F0A7A2B2><EFBFBD>** <20>滨垢<E6BBA8>寞旿<E5AF9E>𡒊垢餈𥪜<E9A488><F0A5AA9C>?dtypes 皜脫<E79A9C><E884AB>堒仍<E5A092><EFBFBD><EFBFBD><EFBFBD>?<3F><>𧋦/<2F><EFBFBD>嚗剹<E59A97>?
* **P0: <20>见𢆡蝻𤥁<E89DBB> (Manual Edit):**
* <20><EFBFBD><E88880><EFBFBD>稬靽格㺿<E6A0BC><EFBFBD><E8A8AB><EFBFBD>?
* **<2A>喲睸<E596B2><EFBFBD><EFBFBD><E59A97><EFBFBD>唳旿<E594B3><E697BF>扇嚗㚁<E59A97>** <20><EFBFBD>靽格㺿<E6A0BC>𠬍<EFBFBD><F0A0AC8D><EFBFBD><E8A8AB>澆𢰧<E6BE86><F0A2B0A7>滯嚗峕㺭<E5B395><EFBFBD>摮睃銁<E79D83>滨垢 dirtyRows <20><EFBFBD>銝准<E98A9D>?
* **P0: <20><EFBFBD><E59786><EFBFBD> (UI Locking):**
* 敶?AI 甇<><EFBFBD><EFBFBD><E689AF><EFBFBD>Grid <20>䀝蛹 **<EFBFBD>芾粉 (Read-only)**嚗峕遬蝷?Loading <20>桃蔗<E6A183>?
### **3\. AI Copilot <20><EFBFBD><E7AE84><EFBFBD> (The Brain) \- *<2A>𡒊垢撽勗𢆡***
#### **3.1 鈭支<E988AD><EFBFBD><E7989A> (Chat Loop)**
1. **<EFBFBD><EFBFBD>颲枏<EFBFBD>嚗?* <20>𨀣<EFBFBD>撟湧<E6929F>憭找<E686AD>60<36><30>挽銝箄<E98A9D><E7AE84>僑蝏<E58391><E89D8F><EFBFBD>?
2. **<EFBFBD>滨蔭<EFBFBD>峕郊 (Auto-Sync):** **(V1.1 <20><EFBFBD>)**
* **<2A><EFBFBD>嚗?* <20>滨垢璉<E59EA2><E79289>交糓<E4BAA4><EFBFBD><E8A18C><EFBFBD>摮条<E691AE><E69DA1>见𢆡靽格㺿 (dirtyRows).
* **<2A><EFBFBD>嚗?* 憒<><E68692><EFBFBD><EFBFBD><E39A81><EFBFBD><EFBFBD>暺睃<E69ABA><E79D83>?PATCH /api/data 撠<><E692A0><EFBFBD>其耨<E585B6><EFBFBD>甇亦<E79487><E4BAA6>𡒊垢 df<64><66>靽?AI <20><EFBFBD><E7AE94><EFBFBD><EFBFBD>唳㺭<E594B3><EFBFBD>雿栶<E99BBF>?
3. **隞<><E99A9E><EFBFBD><EFBFBD><EFBFBD>嚗?* <20>𡒊垢靚<E59EA2>鍂 DeepSeek嚗𣬚<E59A97><F0A3AC9A>?Pandas 隞<><E99A9E><EFBFBD>?
4. **憸<><E686B8>雿𦦵霈?(Action Card):**
* 撅閧內嚗帋誨<E5B88B><E8AAA8><EFBFBD>閫?\+ <20><EFBFBD><E48185>?
* <20>厰僼嚗䨵[餈鞱<E9A488>\] | \[<5B>𡝗<EFBFBD>\]<5D>?
#### **3.2 <20><EFBFBD>銝𤾸<E98A9D>皛?(Execute & Rollback) \- (V1.1 <20><EFBFBD>)**
* **P0: <20>芸𢆡敹怎<E695B9> (Auto-Checkpoint):**
* <20><EFBFBD>銵?exec(code) 銋见<E98A8B><EFBFBD><E59A97>蝡臬<E89DA1>憿餃<E686BF>撖孵<E69296><E5ADB5>?df 餈𥡝<E9A488><F0A5A19D><EFBFBD><EFBFBD>敹怎<E695B9><EFBFBD><E59A97>摨誩<E691A8><E8AAA9><EFBFBD>隞踝<E99A9E><E8B89D>?
* 霈啣<E99C88><E595A3><EFBFBD><E6BBA2><EFBFBD>嚗鋫ctionID: 101, Type: AI\_CODE, Code: "..."<22>?
* **P0: <20><EFBFBD><E689AF><EFBFBD>:**
* <20>𣂼<EFBFBD>嚗朞<E59A97><E69C9E>墧鰵<E5A2A7><E9B0B5><EFBFBD><EFBFBD><EFBFBD>?\-\> <20>瑟鰵 Grid \-\> 瘛餃<E7989B><EFBFBD><E98A9D><EFBFBD>𨀣<EFBFBD>雿𨀣<E99BBF><F0A880A3><EFBFBD><EFBFBD><E884B2><EFBFBD>?
* 憭梯揖嚗𡁏<E59A97><F0A1818F>?Python Traceback \-\> 霈?AI 撠肽<E692A0><E882BD><EFBFBD>靽桀<E99DBD> (Self-Correction) 銝<>甈?\-\> <20><EFBFBD>憭梯揖嚗<E68F96><E59A97><EFBFBD><EFBFBD>撅閧內<E996A7>躰秤<E8BAB0><EFBFBD><E7AC94>?
* **P0: <20><EFBFBD><E697A5><EFBFBD> (Undo):**
* <20>𠰴予獢<E4BA88><E78DA2><EFBFBD><EFBFBD><E28AA5>蠘扇敶蓥<E695B6><E893A5>曄內 \[<5B><EFBFBD>\] <20>厰僼<E58EB0>?
* <20><EFBFBD>嚗朞<E59A97><E69C9E><EFBFBD>蝡?rollback(action\_id) \-\> <20><EFBFBD><EFBCB7>啗砲<E59597><EFBFBD><E6BBA2><EFBFBD>敹怎<E695B9> \-\> <20>瑟鰵 Grid<69>?
### **4\. 敹急㭘<E680A5><E3AD98>誘 (Prompt Chips)**
* **P0:** 憿園<E686BF>撌亙<E6928C><E4BA99>𤩺<EFBFBD><F0A4A9BA><EFBFBD><E6AEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3979B><EFBFBD>鵭摰質蓮<E8B3AA><EFBFBD>嚗㚁<E59A97><E39A81>孵稬隞<E7A8AC><E99A9E>銝算<E98A9D>𨅯翰<F0A885AF><EFBFBD>霂凌<E99C82><E598A5><EFBFBD><E4BAA5><EFBFBD>嚗䔶<E59A97>閫血<E996AB><E8A180><EFBFBD> UI <20><EFBFBD>嚗䔶<E59A97><E494B6><EFBFBD><EFBFBD><E6B2B2><EFBFBD><EFBFBD><E98A9D>?
### **5\. 撖澆枂 (Export)**
* **P0:** 撖澆枂 Excel<65>?
* <20><EFBFBD>嚗𡁜<E59A97>蝡舐凒<E88890><EFBFBD>敶枏<E695B6><E69E8F>?df (<28><><EFBFBD><E98984><EFBFBD>?AI 靽格㺿<E6A0BC><EFBFBD><E5B395>其耨<E585B6>? <20><EFBFBD> Excel 瘚<>僎餈𥪜<E9A488><F0A5AA9C>?
## **銝剹<E98A9D>?撘<>虜憭<E8999C><E686AD><EFBFBD><E996AB> (Error Handling)**
| 撘<><EFBFBD>箸艶 | <20>滨垢銵函緵 | <20>𡒊垢憭<E59EA2><E686AD> |
| :---- | :---- | :---- |
| **銝剜<E98A9D>銋梁<E98A8B>** | <20>鞟內<E99E9F>𦦵<EFBFBD><F0A6A6B5><EFBFBD>聢撘讛<E69298><E8AE9B>怠仃韐伐<E99F90>霂瑟<E99C82><E7919F><EFBFBD>㗇𥋘<E39787>?| 撠肽<E692A0> chardet 璉<>瘚页<E7989A>憭梯揖<E6A2AF>蹱𥁒<E8B9B1>?|
| **AI 隞<><E99A9E><EFBFBD>仿<EFBFBD>** | Chat 瘞娍部<E5A88D>条滯嚗峕遬蝷算<E89DB7>𦯷I 甇<>銁撠肽<E692A0>靽桀<E99DBD>...<2E>?| <20>閗繮 stderr嚗<72><E59A97><EFBFBD>躰秤<E8BAB0><EFBFBD>蝏?AI <20><EFBFBD> (Max 1甈? |
| **隡朞<E99AA1><EFBFBD><E9A488>** | <20><EFBFBD><E585B8>桃蔗<E6A183><EFBFBD>霂嘥歇餈<E6AD87><E9A488><EFBFBD>?| 皜<><E79A9C> Redis/<2F><><EFBFBD>嚗諹<E59A97><E8ABB9>?401/404 |
| **<EFBFBD>见𢆡靽格㺿<EFBFBD><EFBFBD>** | <20>鞟內<E99E9F>𨀣迤<F0A880A3><EFBFBD>甇交㺭<E4BAA4>?..<2E>?| 隡睃<E99AA1><EFBFBD><E686AD><EFBFBD>见𢆡 Patch嚗<68><E59A97><EFBFBD><EFBFBD> AI 隞餃𦛚 |
## **<2A><EFBFBD>?撘<><E69298><EFBFBD>瘚贝<E7989A><E8B49D><EFBFBD> (QA Focus)**
1. **銝<><E98A9D><EFBFBD><EFBFBD>霂𤏪<E99C82>**
* <20><><EFBFBD><EFBFBD>冽㺿銝<E3BABF>銝芸<E98A9D><EFBFBD><E6BD98>滩悟 AI <20><EFBFBD>銵䕘<E98AB5>蝖株恕<E6A0AA><E68195><EFBFBD><EFBFBD><E6BDB8><EFBFBD><E585B6><EFBFBD><E58981>𤥁<EFBFBD><F0A4A581><EFBFBD>行迤蝖株◤<E6A0AA>𩤃<EFBFBD><F0A9A483>?
* <20><>悟 AI <20><EFBFBD><E5ABA3><EFBFBD><E6A2B9>齿伃<E9BDBF><E4BC83>嚗𣬚霈斗糓<E69697><EFBFBD><E8A180><EFBFBD>憭溻<E686AD>?
2. **颲寧<E9A2B2>瘚贝<E7989A>嚗?*
* 銝𠹺<E98A9D>蝛箸<E89D9B>隞嗚<E99A9E>?
* 銝𠹺<E98A9D><F0A0B9BA>其葉<E585B6><E89189><EFBFBD><EFBFBD><EFBFBD><E6BBA8><EFBFBD><EFBFBD>?
* 霈?AI 霈∠<E99C88><EFBFBD>銝芯<E98A9D>摮睃銁<E79D83><E98A81><EFBFBD><EFBFBD>?
3. **<EFBFBD><EFBFBD>瘚贝<EFBFBD>嚗?*
* 餈䂿賒敹恍<E695B9><EFBFBD><E7AC94>?5 <20><EFBFBD>隞歹<E99A9E>蝖桐<E89D96><E6A190>𡒊垢<F0A1928A>?*銝脰<E98A9D><E884B0><EFBFBD>**憭<><E686AD>嚗諹<E59A97><EFBFBD><E494B6>臬僎<E887AC><EFBFBD>銋望㺭<E69C9B><EFBFBD>?
## **鈭𢛵<E988AD>?<3F><><EFBFBD>嚗𡁏㺭<F0A1818F><EFBFBD>甇?API 摰帋<E691B0> (蝞<><E89D9E>?**
* POST /api/sync: <20>滨垢 \-\> <20>𡒊垢<F0A1928A><E59EA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>其耨<E585B6><EFBFBD> Diff<66>?
* Payload: \[{ rowId: "P001", col: "age", value: 66 }\]
* POST /api/run: <20>滨垢 \-\> <20>𡒊垢<F0A1928A><E59EA2><EFBFBD><EFBFBD>?AI 隞<><E99A9E><EFBFBD><EFBFBD>霂瑟<E99C82><E7919F>?
* Payload: { code: "df\['new'\] \= 1", snapshot: true }
* POST /api/undo: <20>滨垢 \-\> <20>𡒊垢<F0A1928A>?
* Payload: { step: \-1 }
\#\#\# 蝏坔<E89D8F><E59D94>穃𣪧<E7A983><EFBFBD><EFBFBD><E98A9D><EFBFBD><E4BAA5><EFBFBD>
\*\*<2A>𦛼1.1 <20><>瓲敹<E793B2>銁鈭𢛶<E988AD>条𠶖<E69DA1><F0A0B696><EFBFBD><E681A3><EFBFBD><EFBFBD><E8B8BA><EFBFBD><EFBFBD>靽肽<E99DBD><E882BD>𡒊垢 Python <20><><EFBFBD><EFBFBD>𣬚<EFBFBD> \`DataFrame\` <20>臬𣈲銝<F0A388B2><E98A9D><EFBFBD><EFBFBD><EFBFBD><E69DA1><EFBFBD>䔉皞?(Source of Truth)<29><EFBFBD><E8B8BA><EFBFBD>蝡舐<E89DA1><E88890><EFBFBD><EFBFBD><EFBFBD>雿頣<E99BBF><E9A0A3>㰘捏<E3B098><EFBFBD><E88880><EFBFBD><E5AFA1>?AI <20><EFBFBD>嚗峕𧋦韐其<E99F90><E585B6>賣糓<E8B3A3><EFBFBD>餈嗘葵<E59798><EFBFBD><EFBFBD><E69285><EFBFBD><EFBFBD><EFBFBD>隞文<E99A9E><E69687>峕郊<E5B395><EFBFBD><E59786><EFBFBD><EFBFBD><EFBFBD>𩄼*\*
<EFBFBD>啣銁嚗峕<EFBFBD><EFBFBD>臭誑<EFBFBD><EFBFBD>餈嗘遢<EFBFBD><EFBFBD>﹝嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘞𥪜𧑐<EFBFBD><EFBFBD><EFBFBD><EFBFBD>穃𣪧<EFBFBD><EFBFBD>撌乩<EFBFBD><EFBFBD><EFBFBD><EFBFBD>撌脩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰寞<EFBFBD>蝧餉膠<EFBFBD><EFBFBD><EFBFBD>銝芣<EFBFBD>瘣𠺶<EFBFBD>?