Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/02-技术设计/技术设计文档:工具 C - 科研数据编辑器 (V7 云端沙箱抗风险版).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

154 lines
8.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
# **謚€譛ッ隶セ隶。譁<EFBDA1>。」<EFBDA1>壼キ・蜈キ C \- 遘醍<E98198>疲焚謐ョ郛冶セ大<EFBDBE>?(V7 莠醍ォッ豐咏ョア謚鈴」朱勦迚<E58BA6>)**
| 譁<>。」邀サ蝙<EFBDBB> | Technical Design Document (TDD) |
| :---- | :---- |
| **蟇ケ蠎泌次蝙<E6ACA1>** | **蟾・蜈キC\_遘醍<E98198>疲焚謐ョ郛冶セ大勣\_蜴溷梛隶セ隶。\_V6\_菫ョ螟咲<E89E9F>?html** |
| **迚域悽** | **V7.1** (螳梧紛謾カ蠖墓楔譫<E6A594><E8ADAB><EFBFBD> ADR 荳守コ「髦滄」朱勦蟇ケ遲? |
| **迥カ諤?* | Final Standard |
| **譬ク蠢<EFBDB8>岼譬<E5B2BC>** | 譫<>サコ荳€荳ェ鬮伜庄髱<E5BA84><EFBFBD>コ醍ォ?Python 謨ー謐ョ貂<EFBDAE>エ怜ケウ蜿ー縲ょ惠菫晞囿窶懈焚謐ョ荳榊<E88DB3>蝓溪€晉噪蜑肴署荳具シ碁€夊ソ<E5A48A> Apache Arrow 蜥梧<E89CA5>キ蠑丞<E8A091>遖サ謚€譛ッ<E8AD9B>瑚ァ」蜀ウ譛榊苅遶ッ謇ァ陦悟クヲ譚・逧<EFBDA5>サカ霑滉ク取<EFBDB8>シ蠑丈ク「螟ア髣ョ鬚倥€?|
## **1\. 諤サ菴捺楔譫<E6A594>ョセ隶。 (System Architecture)**
驩エ莠取枚莉カ螟ァ蟆城剞蛻カ (\<20MB) 蜥瑚┳謨丞燕謠撰シ碁㊦逕ィ 窶廸ode.js BFF \+ Python Microservice窶?譫カ譫<EFBDB6>€?
V7 譬ク蠢<EFBDB8>合郤ァ<E983A4>?蠑募<E8A091> Apache Arrow 菴應クコ蜑榊錘遶ッ謨ー謐ョ莠、謐「譬<EFBDA2><EFBFBD>梧崛莉」菴取譜逧?Excel 譁<>サカ蜿榊、崎ッサ蜀呻シ悟ー<E6829F>黒谺。莠、莠貞サカ霑滉サ?8s 髯堺ス手<EFBDBD>?0.5s縲?
### **1.1 譫カ譫<EFBDB6>挙謇大<E8AC87>?(V7 莨伜喧迚?**
graph TD
subgraph Client\_Layer \[逕ィ謌キ遶ッ\]
ReactApp\[React 19 \+ AG Grid\]
ArrowClient\[Apache Arrow JS\]
end
subgraph Aliyun\_SAE \[髦ソ驥御コ?Serverless 蠎皮畑蠑墓梼\]
BFF\[Node.js Web 譛榊苅 (Fastify)\]
PythonService\[Python 隶。邂怜セョ譛榊<E8AD9B>?(FastAPI)\]
end
subgraph Cache\_Layer \[鬮倬€溽シ灘ュ伜ア<E4BC9C>]
Redis\_Session\[Redis (蟄?DataFrame Arrow 蠎丞<E8A08E>蛹?\]
end
subgraph AI\_PaaS \[AI 閭ス蜉帛ア<E5B89B>]
Dify\[Dify 郛匁賜蠑墓梼\]
DeepSeek\[DeepSeek-V3 讓。蝙欺]
end
subgraph Cloud\_Infra \[謖∽ケ<E288BD>喧螻<E596A7>]
OSS\[蟇ケ雎。蟄伜お (蟄?Excel 蠎墓攸)\]
RDS\[RDS PostgreSQL (蟄伜<E89F84>謨ー謐ョ)\]
end
%% 莠、莠呈オ?
User\[逕ィ謌キ\] \--\>|1. 荳贋シ<E8B48B>| BFF
BFF \--\>|2. 蟄伜次蟋畿xcel| OSS
BFF \--\>|3. 鬚<>Ο Session| PythonService
PythonService \--\>|4. 蜉<>霓ス蟷カ霓ャ荳?Arrow| Redis\_Session
User \--\>|5. AI 謖<>サ、| Dify
Dify \--\>|6. Python 莉」遐- BFF
BFF \--\>|7. 蜿鷹€∽サ」遐- PythonService
PythonService \--\>|8. 隸サ蜿<EFBDBB> Arrow (蜀<><EFBFBD>)| Redis\_Session
PythonService \--\>|9. Pandas 謇ァ陦芸 PythonService
PythonService \--\>|10. 蜀吝屓 Arrow| Redis\_Session
PythonService \--\>|11. 霑泌屓 Preview 謨ー謐ョ (JSON/Arrow)| ReactApp
User \--\>|12. 蟇シ蜃コ/菫晏ュ<E6998F> BFF
BFF \--\>|13. 隗ヲ蜿大粋蟷カ| PythonService
PythonService \--\>|14. 隸サOSS蠎墓攸 \+ 蝪ォ蜈・謨ー謐ョ| OSS
## **2\. 蜈ウ髞ョ譫カ譫<EFBDB6><E8ADAB>遲冶ョー蠖<EFBDB0> (ADR)**
譛ャ闃りョー蠖穂コ<EFBFBD>クコ菴穂サ寂€懷燕遶?Pyodide窶晁スャ蜷鯛€懷錘遶ッ豐咏ョア窶晉噪蜀ウ遲冶ソ<E586B6>ィ具シ御セ帛屬髦溷盾閠<E79BBE>€?
### **蜀ウ遲也せ<E4B99F>壼燕遶ッ霑占。<E58DA0> (WASM) vs 蜷守ォッ霑占。<E58DA0> (Server-side)**
| 扈エ蠎ヲ | 譁ケ譯<EFBDB9> A<>壼燕遶?Pyodide (WASM) | 譁ケ譯<EFBDB9> B<>壼錘遶?Python (譛ャ譁ケ譯? | 蜀ウ遲也サ楢ョコ |
| :---- | :---- | :---- | :---- |
| **蜷ッ蜉ィ蟒カ霑<EFBDB6>** | **譫∵<E8ADAB> (15s+)**縲る怙荳玖スス \~20MB 蠑墓梼蛹<E6A2BC>シ檎畑謌キ菴馴ェ梧栫蟾ョ縲?| **遘貞シ€**縲ら識蠅<E8AD98>惠譛榊苅蝎ィ鬚<EFBDA8>Ο<EFBFBD>悟叉蠑€蜊ウ逕ィ縲?| **蜷守ォッ閭?* |
| **莠、莠貞サカ霑<EFBDB6>** | **譫∝ソォ (\< 0.1s)**縲よ悽蝨ー蜀<EFBDB0>ュ俶桃菴懶シ梧裏鄂醍サ懷シ€€縲?| **荳ュ遲<EFBDAD> (0.5s)**縲る€夊ソ<E5A48A> Apache Arrow 莨伜喧蜷主庄謗・蜿励€?| 蜑咲ォッ閭?|
| **遞ウ螳壽€?* | **鬮倬」朱<EFBDA3>?*縲よオ剰ァ亥勣 Tab 蜀<>ュ俶怏髯撰シ梧<EFBDBC> OOM 蟠ゥ貅<EFBDA9>€?| **鬮倡ィウ螳?*縲よ恪蜉。蝎ィ蜀<EFBDA8>ュ伜<EFBDAD>雜ウ<E99B9C>悟ョケ蝎ィ髫皮ヲサ<EFBDA6>悟エゥ貅<EFBDA9>ク榊スア蜩榊燕遶ッ縲?| **蜷守ォッ閭?* |
| **蠎捺髪謖?* | **譛蛾剞**縲ゆク肴髪謖<E9ABAA>Κ<CE9A> C 謇ゥ螻募コ?(螯ょ、肴揩扈溯ョ。蠎<EFBDA1>)縲?| **譌<><EFBFBD>**縲よ<E7B8B2><E38288><EFBFBD>?Linux 邇ッ蠅<EFBDAF>シ檎函諤∝ョ梧紛縲?| **蜷守ォッ閭?* |
| **蠑€蜿鷹埓蠎?* | **譫<><EFBFBD>**縲る怙螟<E68099>炊 JS-Python 騾壻ソ。縲∝<E7B8B2>蟄倡ョ。逅<EFBDA1>€?| **菴?*縲よ<E7B8B2><E38288><EFBFBD>?Web API 蠑€蜿代€?| **蜷守ォッ閭?* |
**扈楢ョコ<EFBDAE>?* 驩エ莠寂€懈焚謐ョ蟾イ閼ア謨鞘€昜ク披€懈枚莉カ霎<EFBDB6>ー鞘€晢シ<E699A2>**蜷守ォッ謇ァ陦梧婿譯<E5A9BF>** 蝨ィ遞ウ螳壽€ァ縲∝<E7B8B2>螳ケ諤ァ蜥悟シ€蜿第<E89CBF>譛ャ荳雁<E88DB3>髱「閭懷<E996AD>縲?
## **3\. 謚€譛ッ騾牙梛荳手檮蜷?(Tech Stack Fusion)**
### **3.1 譬ク蠢<EFBDB8><EFBFBD>サカ譖エ譁ー**
| 鬚<>沺 | 騾牙梛 | V7 譁ー蠅樒炊逕ア |
| :---- | :---- | :---- |
| **謨ー謐ョ莠、謐「** | **Apache Arrow** | **蜈ウ髞ョ蜊<EFBDAE>コァ**縲ら畑莠?Python 蜥?Node.js/蜑咲ォッ荵矩龍逧<E9BE8D>ォ俶€ァ閭ス謨ー謐ョ莨<EFBDAE>霎難シ碁∩蜈?JSON 蠎丞<E8A08E>蛹門シ€€<E9AB9E>?*隗」蜀ウ IO 蟒カ霑滓<E99C91>ク蠢<EFBDB8>**縲?|
| **Excel 螟<>** | **openpyxl** | 譖ソ莉」郤?Pandas縲ら畑莠主惠蟇シ蜃コ譌?*菫晉蕗蜴溷ァ<E6BAB7> Excel 譬キ蠑<EFBDB7>**<2A>亥ヲる「懆牡縲∬セケ譯<EFBDB9>シ会シ?*隗」蜀ウ譬シ蠑丈ク「螟ア譬ク蠢<EFBDB8>**縲?|
| **莨夊ッ晉シ灘ュ<E78198>** | **Redis** | 逕ィ莠取嘯蟄倡畑謌キ逧?DataFrame (蠎丞<E8A08E>蛹紋クコ Parquet/Arrow)<29>碁∩蜈肴ッ乗ャ。謫堺ス憺<EFBDBD>蜴?OSS 隸サ譁<EFBDBB>サカ縲?|
| **隶。邂玲恪蜉。** | **FastAPI \+ Celery** | 蠑募<E8A091> Celery 螟<>炊蠑よュ・莉サ蜉。<E89C89>碁亟豁「髟ソ隶。邂鈴仆蝪<E4BB86> HTTP 郤ソ遞九€?|
## **4\. 騾<>髄鬟朱勦隸<E58BA6>シー荳主ッケ遲?(Red Teaming Analysis)**
譛ャ闃りッヲ扈<EFBFBD>ョー蠖穂コ<EFBFBD>€懃コ「髦滓オ玖ッ補€昜クュ蜿醍鴫逧<EFBFBD>ス懷惠閾エ蜻ス鬟朱勦蜿雁<EFBFBD>蟾・遞句喧隗」蜀ウ譁ケ譯医€?
### **鬟朱勦荳€<E88DB3>壻コ、莠貞サカ霑溽噪窶應ス捺─蟠ゥ蝪娯€?*
* **騾<>髄諡キ髣ョ<E9ABA3>?* 豈乗ャ。 AI 謫堺ス憺<EFBDBD>襍ー OSS 荳玖スス \-\> Pandas 隸サ蜿<EFBDBB> \-\> 隶。邂<EFBDA1> \-\> 荳贋シ<E8B48B><EFBDBC>悟黒谺。閠玲慮蜿ッ閭ス雜<EFBDBD>ソ<EFBFBD> 8遘抵シ檎畑謌キ譌<EFBDB7>豕募ソ榊女縲?
* **V7 隗」蜀ウ譁ケ譯茨シ?* **Session 鬩サ逡呎ィ。蠑<EFBDA1> (Memory-Resident)**
1. **蛻晏ァ句喧<E58FA5><E596A7>** 逕ィ謌キ荳贋シ<E8B48B> Excel 蜷趣シ悟錘遶ッ蟆<EFBDAF><E89F86><EFBFBD>霓ス荳?DataFrame<6D>悟ケカ蠎丞<E8A08E>蛹紋クコ **Arrow** 譬シ蠑丞ュ伜<EFBDAD> Redis (TTL 30min)縲?
2. **蠅樣㍼莠、莠抵シ?* 蜑咲ォッ蜿鷹€∵欠莉、<E88E89>訓ython 莉?Redis 隸サ蜿<EFBDBB> Arrow 謨ー謐ョ<E8AC90>域ッォ遘堤コァ<EFBDBA>会シ梧鴬陦<E9B4AC> Pandas 隶。邂暦シ悟ー<E6829F>サ捺棡蜀吝屓 Redis縲?
3. **霓サ驥丞渚鬥茨シ?* 隶。邂怜ョ梧<EFBDAE>蜷趣シ悟宵霑泌<E99C91>?**蜑?100 陦碁「<E7A281>ァ域焚謐?* 扈吝燕遶?AG Grid 貂イ譟薙€?
4. **謨域棡<E59F9F>?* 閠玲慮郛ゥ遏ュ閾?**0.5s \- 1s**縲?
### **鬟朱勦莠鯉シ哘xcel 譬シ蠑丈ク「螟ア (The Format Loss)**
* **騾<>髄諡キ髣ョ<E9ABA3>?* Pandas 逧?to\_excel 莨夐㍾鄂ョ謇€譛牙黒蜈<E9BB92><E89C88>シ譬キ蠑擾シ悟現逕滓<E98095><E6BB93>ウィ逧<EFBDA8>「懆牡蜥梧音豕ィ莨壻ク「螟ア縲?
* **V7 隗」蜀ウ譁ケ譯茨シ?* **蠎墓攸蛻<E694B8>ヲサ遲也払 (Template Separation)**
1. **荳贋シ<E8B48B>譌カ<E8AD8C><EFBDB6>**<>次蟋?Excel 譬<>ョー荳?**"Style Template" (譬キ蠑丞コ墓攸)**<2A>梧ーク荵<EFBDB8>ソ晏ュ伜惠 OSS縲?
2. **隶。邂玲慮<E78EB2><E685AE>** 蜿ェ蝨ィ蜀<EFBDA8><EFBFBD>/Redis 荳ュ螟<EFBDAD>炊郤ッ謨ー謐ョ (Values)<29>御ク榊<EFBDB8><EFBFBD><E8A0A2>キ蠑上€?
3. **蟇シ蜃コ譌カ<E8AD8C><EFBDB6>** 菴ソ逕ィ openpyxl 蜉<>霓ス窶懈<E7AAB6>キ蠑丞コ墓攸窶晢シ悟ー<E6829F><EFBDB0>蟄倅クュ逧<EFBDAD>眠謨ー謐ョ**蝪ォ蜈・**蛻ー蠎墓攸逧<E694B8>ッケ蠎泌攝譬<E6949D>クュ<EFBDB8>御ソ晉蕗譛ェ菫ョ謾ケ蛹コ蝓溽噪閭梧勹濶イ蜥梧音豕ィ縲?
### **鬟朱勦荳会シ夂憾諤∝酔豁・逧<EFBDA5>€懷曙蜀吝<E89C80>遯≫€?*
* **騾<>髄諡キ髣ョ<E9ABA3>?* 逕ィ謌キ謇句勘菫ョ謾ケ莠<EFBDB9>ャャ 5 陦鯉シ悟酔譌カ AI 蛻<>髯、莠<EFBDA4>ャャ 5 陦鯉シ悟ッシ閾エ謨ー謐ョ迥カ諤∽ク堺ク€閾エ縲?
* **V7 隗」蜀ウ譁ケ譯茨シ?* **UI 莠呈箕髞?(UI Locking)**
* 蠖?AI 豁」蝨ィ逕滓<E98095>莉」遐∵<E98190>蜷守ォッ豁」蝨ィ隶。邂玲慮<E78EB2>窟G Grid 蠑コ蛻カ霑帛<E99C91> **readOnly** 讓。蠑擾シ悟ケカ蝨ィ逡碁擇譏セ遉?"AI 豁」蝨ィ螟<EFBDA8>炊..." 驕ョ鄂ゥ<E98482>?*迚ゥ逅<EFBDA9>アる擇荳顔ヲ∵ュ「蟷カ蜿第桃菴?*縲?
### **鬟朱勦蝗幢シ壼ョ牙<EFBDAE>豐咏ョア騾<EFBDB1>€?*
* **騾<>髄諡キ髣ョ<E9ABA3>?* AI 逕滓<E98095>莠?import os; os.system('rm \-rf /')縲?
* **V7 隗」蜀ウ譁ケ譯茨シ?* **AST 髱呎€<C280>譫?\+ 螳ケ蝎ィ髫皮ヲサ**
* **鬚<>€<EFBDA3>?* 蝨ィ謇ァ陦?exec() 蜑搾シ御スソ逕ィ Python ast 讓。蝮玲沖謠丈サ」遐∵<E98190>托シ梧」€豬句芦 import os 遲牙<E981B2>髞ョ隸咲峩謗・謚帛<E8AC9A>蠑ょクク縲?
* **襍<>コ宣剞鬚晢シ?* 菴ソ逕ィ Python resource 讓。蝮鈴剞蛻カ蜊墓ャ。謇ァ陦檎<E999A6>?CPU 譌カ髣エ (10s) 蜥?蜀<><EFBFBD> (1GB)縲?
## **5\. 謨ー謐ョ蠎楢ョセ隶?(蜈<>焚謐ョ螻<EFBDAE>)**
譁ー蠅<EFBFBD> TaskAudit 陦ィ逕ィ莠手ョー蠖墓ッ丈ク€谺?AI 謫堺ス懃噪荳贋ク区枚<E58CBA>御セソ莠主屓貊壼柱螳。隶。縲?
model TaskAudit {
id String @id @default(uuid())
datasetId String
version Int // 謫堺ス懷錘逧<E98C98>沿譛ャ蜿?
actionType String // "AI\_CODE" or "MANUAL\_EDIT"
prompt String? // 逕ィ謌キ逧<EFBDB7><E980A7>辟カ隸ュ險€<C280>サ、
code String? // AI 逕滓<E98095>逧?Python 莉」遐<EFBDA3>
executionTime Int // 謇ァ陦瑚€玲慮 (ms)
status String // SUCCESS / FAILED
createdAt DateTime @default(now())
}
## **6\. API 謗・蜿」螳壻ケ<E5A3BB> (V7 莨伜喧)**
* POST /api/session/init: 荳贋シ<E8B48B><EFBFBD>サカ<EFBDBB><EFBFBD>蟋句喧 Redis Session<6F>瑚ソ泌<EFBDBF>?sessionId縲?
* POST /api/session/execute:
* **Input:** { sessionId, code, version }
* **Output:** { previewData: ArrowBase64, newVersion: int, logs: string }
* **隸エ譏<EFBDB4>:** 莉<>ソ泌屓鬚<E5B193>ァ域焚謐ョ<E8AC90>御ク咲函謌?Excel 譁<>サカ縲?
* POST /api/session/save:
* **Input:** { sessionId }
* **Output:** { downloadUrl }
* **隸エ譏<EFBDB4>:** 隗ヲ蜿<EFBDA6> openpyxl 蜷亥ケカ騾サ霎托シ檎函謌先怙扈?Excel 蟷カ荳贋シ?OSS縲?
## **7\. 蠑€蜿大<E89CBF>蟾・蟒コ隶?*
* **Python 扈?(驥堺クュ荵矩㍾):**
* 螳樒鴫 Arrow \<-\> Pandas 逧<>コ丞<EFBDBA>蛹夜€サ霎代€?
* 蟆∬」<E288AC> openpyxl 逧<><E980A7>キ蠑丞屓蝪ォ騾サ霎代€?
* 謳ュ蟒コ FastAPI \+ Redis 邇ッ蠅<EFBDAF>€?
* **Node.js 扈?**
* 雍溯エ」 Dify 霓ャ蜿大柱驩エ譚<EFBDB4>€?
* **蜑咲ォッ扈?**
*<><E9ABAE> apache-arrow JS 蠎難シ瑚ァ」譫仙錘遶ッ霑泌屓逧<E5B193>コ瑚ソ帛宛豬∝ケカ蝨?AG Grid 螻慕、コ縲?
* 螳樒鴫窶廣I 螟<>炊荳ュ窶晉噪蜈ィ螻城煤螳壻コ、莠偵€