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%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,37 +1,37 @@
# 2025-12-07 <20>𡒊垢 API 摰峕㟲撖寞𦻖摰峕<E691B0>
> **重大里程碑**Tool C 前后端 API 完整对接,可以端到端测试!
> **<EFBFBD>滚之<EFBFBD>𣬚<EFBFBD>蝣?*嚗関ool C <20><EFBFBD>蝡?API 摰峕㟲撖寞𦻖嚗<F0A6BB96>虾隞亦垢<E4BAA6>啁垢瘚贝<E7989A>嚗?
---
## <20><> 隞餃𦛚璁<F0A69B9A>
**发现**:后端 API Day 1-3 已经完整开发,但前端 API 路径不匹配
**<EFBFBD>𤑳緵**嚗𡁜<E59A97>蝡?API <EFBFBD>?Day 1-3 撌脩<EFBFBD>摰峕㟲撘<EFBFBD><EFBFBD>𡢅<EFBFBD><EFBFBD><EFBFBD>蝡?API 頝臬<E9A09D>銝滚龪<E6BB9A>?
**修复**:修正前端 API 调用路径,完成前后端对接
**靽桀<EFBFBD>**嚗帋耨甇<E880A8><E79487>蝡?API 靚<>鍂頝臬<E9A09D><EFBFBD><E59A97><EFBFBD>𣂼<EFBFBD><F0A382BC>𡒊垢撖寞𦻖
---
## ✅ 后端 API 清单(已完成)
## <EFBFBD>?<3F>𡒊垢 API 皜<><E79A9C><EFBFBD>歇摰峕<E691B0>嚗?
### 1. **Session 管理** Day 2 完成
### 1. **Session 蝞∠<EFBFBD>** <EFBFBD>?Day 2 摰峕<EFBFBD>
| API | <20><EFBFBD> | 頝臬<E9A09D> | <20><EFBFBD> |
|-----|------|------|------|
| 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>辣 | POST | `/api/v1/dc/tool-c/sessions/upload` | <20>𥕦遣 Session |
| 获取 Session | GET | `/api/v1/dc/tool-c/sessions/:id` | 获取元数据 |
| 获取预览 | GET | `/api/v1/dc/tool-c/sessions/:id/preview` | 前100行数据 |
| <EFBFBD><EFBFBD> Session | GET | `/api/v1/dc/tool-c/sessions/:id` | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?|
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | GET | `/api/v1/dc/tool-c/sessions/:id/preview` | <EFBFBD>?00銵峕㺭<E5B395>?|
| <20><EFBFBD>摰峕㟲<E5B395>唳旿 | GET | `/api/v1/dc/tool-c/sessions/:id/full` | <20><EFBFBD><E588B8>唳旿 |
| <20>湔鰵敹<E9B0B5>歲 | POST | `/api/v1/dc/tool-c/sessions/:id/heartbeat` | 撱園鵭餈<E9B5AD><E9A488><EFBFBD>園𡢿 |
| <20>𣳇膄 Session | DELETE | `/api/v1/dc/tool-c/sessions/:id` | <20>𣳇膄 Session |
### 2. **AI 功能** Day 3 完成
### 2. **AI <EFBFBD><EFBFBD>** <EFBFBD>?Day 3 摰峕<EFBFBD>
| API | <20><EFBFBD> | 頝臬<E9A09D> | <20><EFBFBD> |
|-----|------|------|------|
| <20><><EFBFBD><EFBFBD><E99A9E> | POST | `/api/v1/dc/tool-c/ai/generate` | <20><><EFBFBD> Pandas 隞<><E99A9E> |
| <20><EFBFBD><EFBFBD><E99A9E> | POST | `/api/v1/dc/tool-c/ai/execute` | <20><EFBFBD><EFBFBD><E99A9E> |
| **一步到位** | POST | `/api/v1/dc/tool-c/ai/process` | 生成+执行+重试 ⭐ |
| **<EFBFBD>甇亙<EFBFBD>雿?* | POST | `/api/v1/dc/tool-c/ai/process` | <EFBFBD><EFBFBD><EFBFBD>+<2B><EFBFBD>+<2B><EFBFBD> 潃?|
| <20><EFBFBD><E79195><EFBFBD>蟮 | GET | `/api/v1/dc/tool-c/ai/history/:sessionId` | 撖寡<E69296><E5AFA1><EFBFBD>蟮 |
---
@@ -43,39 +43,39 @@
**<EFBFBD><EFBFBD>**嚗𡁜<E59A97>蝡航<E89DA1><E888AA>刻楝敺<E6A59D><E695BA><EFBFBD><EFBFBD>
```typescript
// ❌ 错误(之前)
// <EFBFBD>?<3F>躰秤嚗<E7A7A4><E59A97><EFBFBD><EFBFBD>
fetch('/api/dc/tool-c/process')
fetch('/api/dc/tool-c/execute')
// ✅ 正确(修复后)
// <EFBFBD>?甇<><EFBC86>耨憭滚<E686AD>嚗?
fetch('/api/v1/dc/tool-c/ai/process')
fetch('/api/v1/dc/tool-c/ai/execute')
```
**修复文件**
- `frontend-v2/src/modules/dc/pages/tool-c/components/Sidebar.tsx`
**靽桀<EFBFBD><EFBFBD><EFBFBD>辣**嚗?
- <EFBFBD>?`frontend-v2/src/modules/dc/pages/tool-c/components/Sidebar.tsx`
### 2. 靽格迤<E6A0BC><EFBFBD><E6BB9A>唳旿<E594B3><EFBFBD>
**问题**:后端返回 `previewData`,前端期望 `rows`
**<EFBFBD><EFBFBD>**嚗𡁜<E59A97>蝡航<E89DA1><E888AA>?`previewData`<EFBFBD><EFBFBD>蝡舀<EFBFBD><EFBFBD>?`rows`
**修复**
**靽桀<EFBFBD>**嚗?
```typescript
// ✅ 前端兼容两种格式
// <EFBFBD>?<3F>滨垢<E6BBA8>澆捆銝斤<E98A9D><E696A4><EFBFBD>
data: preview.data.previewData || preview.data.rows || []
```
**修复文件**
- `frontend-v2/src/modules/dc/pages/tool-c/index.tsx`
- `frontend-v2/src/modules/dc/api/toolC.ts`(类型定义)
**靽桀<EFBFBD><EFBFBD><EFBFBD>辣**嚗?
- <EFBFBD>?`frontend-v2/src/modules/dc/pages/tool-c/index.tsx`
- <EFBFBD>?`frontend-v2/src/modules/dc/api/toolC.ts`<EFBFBD><EFBFBD><EFBFBD>銋㚁<EFBFBD>
### 3. 靽格迤 AI 憭<><E686AD><EFBFBD><EFBFBD><E6BB9A><EFBFBD>頧祆揢
**问题**:后端响应格式需要转换为前端 ChatContainer 期望的格式
**<EFBFBD><EFBFBD>**嚗𡁜<E59A97>蝡臬<E89DA1>摨娍聢撘誯<E69298><EFBFBD><EFBFBD><EFBCB6>滨垢 ChatContainer <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>聢撘?
**修复**
**靽桀<EFBFBD>**嚗?
```typescript
// ✅ 转换后端响应
// <EFBFBD>?頧祆揢<E7A586>𡒊垢<F0A1928A><EFBFBD>
return {
messageId: result.data?.messageId,
explanation: result.data?.explanation,
@@ -87,8 +87,8 @@ return {
};
```
**修复文件**
- `frontend-v2/src/modules/dc/pages/tool-c/components/Sidebar.tsx`
**靽桀<EFBFBD><EFBFBD><EFBFBD>辣**嚗?
- <EFBFBD>?`frontend-v2/src/modules/dc/pages/tool-c/components/Sidebar.tsx`
---
@@ -148,7 +148,7 @@ POST /api/v1/dc/tool-c/ai/process
Request:
{
"sessionId": "xxx",
"message": "把age列的缺失值填补为平均值",
"message": "<EFBFBD>𨉖ge<EFBFBD><EFBFBD>蝻箏仃<EFBFBD>銵乩蛹撟喳<EFBFBD><EFBFBD>?,
"maxRetries": 3
}
@@ -158,11 +158,11 @@ Response (200):
"message": "<EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>",
"data": {
"messageId": "msg-123",
"explanation": "好的我将帮您将age列的缺失值填补为平均值。",
"explanation": "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>age<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?,
"code": "df['age'].fillna(df['age'].mean(), inplace=True)",
"executeResult": {
"success": true,
"result": "成功填补 15 个缺失值",
"result": "<EFBFBD>𣂼<EFBFBD>憛怨 15 銝芰撩憭勗<E686AD>?,
"newDataPreview": [
{ "id": 1, "name": "<EFBFBD>", "age": 25 },
{ "id": 2, "name": "<EFBFBD>𤾸<EFBFBD>", "age": 27.5 },
@@ -176,31 +176,31 @@ Response (200):
---
## 🎯 端到端流程
## <EFBFBD>㴓 蝡臬<E89DA1>蝡舀<E89DA1>蝔?
### 摰峕㟲<E5B395><EFBFBD><EFBFBD><E7989A>
```
1. <20><EFBFBD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD>
<EFBFBD>?
POST /api/v1/dc/tool-c/sessions/upload
<EFBFBD>?
餈𥪜<E9A488> sessionId
2. <20>芸𢆡<E88AB8><EFBFBD><EFBFBD><E686B8><EFBFBD>唳旿
<EFBFBD>?
GET /api/v1/dc/tool-c/sessions/:id/preview
显示数据表格 + 切换到 AI 对话界面
<EFBFBD>?
<EFBFBD>曄內<EFBFBD>唳旿銵冽聢 + <20><><EFBFBD>?AI 撖寡<E69296><E5AFA1>屸𢒰
3. <20><EFBFBD>颲枏<E9A2B2> AI <20><>
<EFBFBD>?
POST /api/v1/dc/tool-c/ai/process
<EFBFBD>?
餈𥪜<E9A488><EFBFBD><E99A9E> + <20><EFBFBD>蝏𤘪<E89D8F>
4. <20>芸𢆡<E88AB8>湔鰵銵冽聢<E586BD>唳旿
<EFBFBD>?
<20>曄內<E69B84><EFBFBD><E59581>唳旿憸<E697BF><E686B8>
```
@@ -219,119 +219,119 @@ npm run dev
cd AIclinicalresearch/frontend-v2
npm run dev
# Python 微服务
# Python 敺格<EFBFBD><EFBFBD>?
cd AIclinicalresearch/extraction_service
python main.py
```
### 2. 瘚贝<E7989A>甇仿炊
1. **访问页面**
1. <EFBFBD>?**霈輸䔮憿菟𢒰**
- URL: http://localhost:5173/data-cleaning/tool-c
- 摨磰砲<E7A3B0><EFBFBD>"銝𠹺<E98A9D><F0A0B9BA>唳旿<E594B3><E697BF>辣"<22><EFBFBD>
2. **上传文件**
2. <EFBFBD>?**銝𠹺<E98A9D><F0A0B9BA><EFBFBD>**
- <20>孵稬"<22>㗇𥋘<E39787><F0A58B98>辣"
- 上传 CSV Excel 文件(<10MB
- 应该自动切换到 AI 对话界面
- 銝𠹺<EFBFBD> CSV <EFBFBD>?Excel <EFBFBD><EFBFBD>辣嚗?10MB嚗?
- 摨磰砲<EFBFBD>芸𢆡<EFBFBD><EFBFBD><EFBFBD>?AI 撖寡<E69296><E5AFA1>屸𢒰
3. **AI 对话**
3. <EFBFBD>?**AI 撖寡<EFBFBD>**
- <20><EFBFBD><E588BB><EFBFBD>颲枏<E9A2B2><E69E8F><EFBFBD>誘嚗䔶<E59A97><EFBFBD><E68692>
- "显示前10行数据"
- "把age列的缺失值填补为平均值"
- "删除重复行"
- 应该看到 AI 生成代码并自动执行
- "<EFBFBD>曄內<EFBFBD>?0銵峕㺭<E5B395>?
- "<EFBFBD>𨉖ge<EFBFBD><EFBFBD>蝻箏仃<EFBFBD>銵乩蛹撟喳<EFBFBD><EFBFBD>?
- "<EFBFBD>𣳇膄<EFBFBD><EFBFBD>銵?
- 摨磰砲<EFBFBD><EFBFBD> AI <20><><EFBFBD><EFBFBD><E99A9E>撟嗉䌊<E59789><EFBFBD>銵?
4. **验证数据更新**
4. <EFBFBD>?**撉諹<E69289><E8ABB9>唳旿<E594B3>湔鰵**
- 撌虫儒銵冽聢摨磰砲<E7A3B0>芸𢆡<E88AB8>湔鰵
- <20>曄內憭<E585A7><E686AD><EFBFBD>𡒊<EFBFBD><F0A1928A>唳旿
### 3. 瘚贝<E7989A><E8B49D>唳旿
推荐使用:
<EFBFBD><EFBFBD>雿輻鍂嚗?
- `AIclinicalresearch/test_data/cqol-demo.csv`<EFBFBD>龫摮行㺭<EFBFBD><EFBFBD>
- 或任何 CSV/Excel 文件(<10MB
- <EFBFBD>碶遙雿?CSV/Excel <EFBFBD><EFBFBD>辣嚗?10MB嚗?
---
## <20><> 靽格㺿皜<E3BABF><E79A9C>
| 文件 | 行号 | 修改内容 | 状态 |
| <EFBFBD><EFBFBD>辣 | 銵<>噡 | 靽格㺿<E6A0BC><E3BABF>捆 | <20><EFBFBD>?|
|------|------|----------|------|
| `Sidebar.tsx` | 43 | 修正执行代码 API 路径 | |
| `Sidebar.tsx` | 122-136 | 修正 AI 处理 API 路径和响应转换 | ✅ |
| `index.tsx` | 82 | 兼容 `previewData` `rows` | |
| `toolC.ts` | 47 | 更新 `PreviewData` 类型定义 | |
| `Sidebar.tsx` | 43 | 靽格迤<EFBFBD><EFBFBD><EFBFBD><EFBFBD> API 頝臬<EFBFBD> | <EFBFBD>?|
| `Sidebar.tsx` | 122-136 | 靽格迤 AI <EFBFBD><EFBFBD> API 頝臬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摨磰蓮<EFBFBD>?| <20>?|
| `index.tsx` | 82 | <EFBFBD>澆捆 `previewData` <EFBFBD>?`rows` | <EFBFBD>?|
| `toolC.ts` | 47 | <EFBFBD>湔鰵 `PreviewData` 蝐餃<EFBFBD>摰帋<EFBFBD> | <EFBFBD>?|
---
## ✅ 验证结果
## <EFBFBD>?撉諹<E69289>蝏𤘪<E89D8F>
### Linter 检查
### Linter <EFBFBD><EFBFBD>?
- **错误数**0
- ⚠️ **警告数**1未使用的 `handleSendMessage`,可忽略)
- <EFBFBD>?**<2A>躰秤<E8BAB0>?*嚗?
- <EFBFBD>𩤃<EFBFBD> **霅血<E99C85><E8A180>?*嚗?嚗<>𧊋雿輻鍂<E8BCBB>?`handleSendMessage`<EFBFBD>虾敹賜裦嚗?
### <20><EFBFBD>撉諹<E69289>
| 功能 | 状态 | 备注 |
| <EFBFBD><EFBFBD> | <20><EFBFBD>?| 憭<> |
|------|------|------|
| 页面加载 | ✅ | 无报错 |
| 文件上传 UI | ✅ | 正常显示 |
| API 路径 | ✅ | 匹配后端 |
| 类型定义 | ✅ | 完整 |
| 端到端流程 | ⏳ | 待测试 |
| 憿菟𢒰<EFBFBD>㰘蝸 | <20>?| <20>䭾𥁒<E4ADBE>?|
| <EFBFBD><EFBFBD>辣銝𠹺<EFBFBD> UI | <20>?| 甇<><EFBFBD>曄內 |
| API 頝臬<EFBFBD> | <20>?| <20><EFBFBD><E5AFA5>𡒊垢 |
| 蝐餃<EFBFBD>摰帋<EFBFBD> | <20>?| 摰峕㟲 |
| 蝡臬<EFBFBD>蝡舀<EFBFBD>蝔?| <20>?| 敺<><E695BA>霂?|
---
## 🎉 里程碑
## <EFBFBD><EFBFBD> <20>𣬚<EFBFBD>蝣?
**Tool C 前后端 API 完整对接完成!**
**<EFBFBD>?Tool C <EFBFBD><EFBFBD>蝡?API 摰峕㟲撖寞𦻖摰峕<E691B0>嚗?*
### <20><EFBFBD><E8A9A8>𣂼停
1. **后端 API 已完整**
- Day 1: Python 微服务(代码执行)
1. <EFBFBD>?**<2A>𡒊垢 API 撌脣<E6928C><E884A3>?*
- Day 1: Python 敺格<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
- Day 2: Session 蝞∠<E89D9E><EFBFBD><E59A97>隞嗡<E99A9E>隡𨬭<E99AA1><F0A8ACAD><EFBFBD><EFBFBD><E6A180><EFBFBD>
- Day 3: AI 代码生成DeepSeek-V3 集成)
- Day 3: AI <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㇄eepSeek-V3 <EFBFBD><EFBFBD><EFBFBD>嚗?
2. **前端 API 调用已修正**
2. <EFBFBD>?**<2A>滨垢 API 靚<>鍂撌脖耨甇?*
- 頝臬<E9A09D><E887AC><EFBFBD>
- <20>唳旿<E594B3><EFBFBD><E6BE86>澆捆
- <20><EFBFBD>頧祆揢甇<E68FA2>
3. **可以进行端到端测试**
- 上传文件 → 显示数据 → AI 对话 → 执行代码 → 更新表格
3. <EFBFBD>?**<2A>臭誑餈𥡝<E9A488>蝡臬<E89DA1>蝡舀<E89DA1>霂?*
- 銝𠹺<EFBFBD><EFBFBD><EFBFBD><20>?<3F>曄內<E69B84>唳旿 <20>?AI 撖寡<E69296> <20>?<3F><EFBFBD><EFBFBD><E99A9E> <20>?<3F>湔鰵銵冽聢
---
## 🚀 下一步
## <EFBFBD><EFBFBD> 銝衤<E98A9D>甇?
### 蝡见朖<E8A781><EFBFBD>
1. **刷新浏览器**
2. **上传测试文件**
3. **测试 AI 对话功能**
1. <EFBFBD>?**<2A>瑟鰵瘚讛<E7989A><E8AE9B>?*
2. <EFBFBD>?**銝𠹺<E98A9D>瘚贝<E7989A><E8B49D><EFBFBD>**
3. <EFBFBD>?**瘚贝<E7989A> AI 撖寡<E69296><E5AFA1><EFBFBD>**
### 敺<><E695BA><EFBFBD><EFBFBD><E59094>鮋獈憛痹<E6869B>
1. ⏳ 优化错误提示
2. ⏳ 添加加载状态动画
3. ⏳ 增强代码高亮
4. ⏳ 支持撤销/重做
5. ⏳ 导出数据功能
1. <EFBFBD>?隡睃<E99AA1><E79D83>躰秤<E8BAB0>鞟內
2. <EFBFBD>?瘛餃<E7989B><E9A483>㰘蝸<E3B098><EFBFBD><E59786>𢆡<EFBFBD>?
3. <EFBFBD>?憓𧼮撩隞<E692A9><E99A9E>擃䀝漁
4. <EFBFBD>?<3F><EFBFBD><E88880><EFBFBD>/<2F><EFBFBD>
5. <EFBFBD>?撖澆枂<E6BE86>唳旿<E594B3><EFBFBD>
---
## <20><><><E99A9E>蝏蠘恣
| 组件 | 代码行数 | 状态 |
| <EFBFBD>辣 | 隞<><E99A9E>銵峕㺭 | <20><EFBFBD>?|
|------|---------|------|
| Python 微服务 | ~430 行 | ✅ Day 1 |
| Node.js 后端 | ~2650 行 | ✅ Day 2-3 |
| 前端 React | ~1100 行 | ✅ Day 4-5 |
| 通用 Chat 组件 | ~968 行 | ✅ Day 5 |
| **总计** | **~5148 行** | **✅ 完成** |
| Python 敺格<EFBFBD><EFBFBD>?| ~430 銵?| <20>?Day 1 |
| Node.js <EFBFBD>𡒊垢 | ~2650 銵?| <20>?Day 2-3 |
| <EFBFBD>滨垢 React | ~1100 銵?| <20>?Day 4-5 |
| <EFBFBD>𡁶鍂 Chat <EFBFBD> | ~968 銵?| <20>?Day 5 |
| **<EFBFBD>餉恣** | **~5148 銵?* | **<EFBFBD>?摰峕<E691B0>** |
---
@@ -339,17 +339,17 @@ python main.py
**Tool C MVP 撘<><E69298><EFBFBD><E7A983><EFBFBD>**
- ✅ 前后端 API 完整对接
- ✅ 可以进行端到端测试
- AI 对话 + 数据处理功能就绪
- ✅ 基于 Ant Design X 的现代化 UI
- <EFBFBD>?<3F><EFBFBD>蝡?API 摰峕㟲撖寞𦻖
- <EFBFBD>?<3F>臭誑餈𥡝<E9A488>蝡臬<E89DA1>蝡舀<E89DA1>霂?
- <EFBFBD>?AI 撖寡<EFBFBD> + <20>唳旿憭<E697BF><E686AD><EFBFBD><EFBFBD>撠梁貌
- <EFBFBD>?<3F><EFBFBD> Ant Design X <EFBFBD><EFBFBD>緵隞<EFBFBD><EFBFBD> UI
**现在可以开始测试完整功能了!** 🚀
**<EFBFBD>啣銁<EFBFBD>臭誑撘<EFBFBD>憪𧢲<EFBFBD>霂訫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?* <20><>
---
**开发者**AI Assistant
**日期**2025-12-07
**<EFBFBD><EFBFBD>𤏸<EFBFBD>?*嚗鋫I Assistant
**<EFBFBD><EFBFBD>**嚗?025-12-07
**<EFBFBD><EFBFBD>𧋦**嚗鐝VP v1.0
@@ -402,5 +402,6 @@ python main.py