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:
@@ -2,88 +2,80 @@
|
||||
|
||||
| 文档版本 | V1.0 (基于原型 V2) |
|
||||
| :---- | :---- |
|
||||
| **产品形态** | Web 端综合仪表盘 (Dashboard) |
|
||||
| **核心价值** | 作为数据清洗模块的统一入口,提供工具启动、异步任务监控、数据资产管理及跨工具流转能力。 |
|
||||
| **目标用户** | 临床医生、科研助理 |
|
||||
| **产å“<EFBFBD>å½¢æ€?* | Web 端综å<C2BC>ˆä»ªè¡¨ç›˜ (Dashboard) |
|
||||
| **æ ¸å¿ƒä»·å€?* | 作为数æ<C2B0>®æ¸…洗模å<C2A1>—的统一入å<C2A5>£ï¼Œæ<C592><C3A6>供工具å<C2B7>¯åЍã€<C3A3>异æ¥ä»»åŠ¡ç›‘æŽ§ã€<C3A3>æ•°æ<C2B0>®èµ„产管ç<C2A1>†å<E280A0>Šè·¨å·¥å…·æµ<C3A6>转能力ã€?|
|
||||
| **ç›®æ ‡ç”¨æˆ·** | 临床医生ã€<C3A3>ç§‘ç ”åŠ©ç<C2A9>?|
|
||||
|
||||
## **一、 产品架构图 (Product Architecture)**
|
||||
## **一ã€?产å“<C3A5>æž¶æž„å›?(Product Architecture)**
|
||||
|
||||
工作台处于系统的二级导航位置,向下连接三个具体工具,横向连接任务与数据。
|
||||
工作å<EFBFBD>°å¤„于系统的二级导航ä½<EFBFBD>置,å<EFBFBD>‘下连接三个具体工具,横å<EFBFBD>‘连接任务与数æ<EFBFBD>®ã€?
|
||||
全局导航 \-\> **工作å<C593>?(本PRD)** \-\> (工具 A, 工具 B, 工具 C)
|
||||
|
||||
全局导航 \-\> **工作台 (本PRD)** \-\> (工具 A, 工具 B, 工具 C)
|
||||
|
||||
## **二、 核心功能需求 (Functional Requirements)**
|
||||
## **二ã€?æ ¸å¿ƒåŠŸèƒ½éœ€æ±?(Functional Requirements)**
|
||||
|
||||
### **1\. 全局导航集æˆ<C3A6> (Global Navigation)**
|
||||
|
||||
* **P0:** 必须无缝嵌入现有系统顶部导航栏。
|
||||
* **位置:** 位于 知识库 与 智能数据分析 之间。
|
||||
* **状态:** 点击后高亮显示“智能数据清洗”。
|
||||
* **P0:** å¿…é¡»æ— ç¼<EFBFBD>嵌入现有系统顶部导航æ <EFBFBD>ã€?
|
||||
* **ä½<EFBFBD>ç½®ï¼?* ä½<C3A4>于 知识åº?ä¸?智能数æ<C2B0>®åˆ†æž<C3A6> 之间ã€?
|
||||
* **状æ€<EFBFBD>:** 点击å<C2BB>Žé«˜äº®æ˜¾ç¤ºâ€œæ™ºèƒ½æ•°æ<C2B0>®æ¸…æ´—â€<C3A2>ã€?
|
||||
### **2\. 工具å<C2B7>¯åЍåŒ?(The Launcher)**
|
||||
|
||||
### **2\. 工具启动区 (The Launcher)**
|
||||
* **P0:** **三å<E280B0>¡ç‰‡å…¥å<C2A5>£ï¼š** é†’ç›®å±•ç¤ºä¸‰ä¸ªæ ¸å¿ƒå·¥å…·çš„å…¥å<C2A5>£å<C2A3>¡ç‰‡ã€?
|
||||
* **工具 A (超级å<C2A7>ˆå¹¶å™?:** 强调“多æº<C3A6>æ•°æ<C2B0>®å<C2AE>ˆå¹¶ã€<C3A3>ID对é½<C3A9>â€<C3A2>ã€?
|
||||
* **工具 B (病历结构化机器人):** 强调“AI æ<><C3A6>å<EFBFBD>–ã€<C3A3>é<EFBFBD>žç»“构化转结构化â€<C3A2>ã€?
|
||||
* **工具 C (ç§‘ç ”æ•°æ<C2B0>®ç¼–辑å™?:** 强调“在线清洗ã€<C3A3>缺失值处ç<E2809E>†â€<C3A2>ã€?
|
||||
* **交互ï¼?* 点击å<C2BB>¡ç‰‡ï¼Œä»¥**å…¨å±<C3A5>模æ€<C3A6>框**æˆ?*新页é<C2B5>?*å½¢å¼<C3A5>打开对应工具ã€?
|
||||
### **3\. 任务æµ<C3A6>转ä¸å¿ƒ (Task Flow Hub) —â€?æ ¸å¿ƒäº¤äº’**
|
||||
|
||||
* **P0:** **三卡片入口:** 醒目展示三个核心工具的入口卡片。
|
||||
* **工具 A (超级合并器):** 强调“多源数据合并、ID对齐”。
|
||||
* **工具 B (病历结构化机器人):** 强调“AI 提取、非结构化转结构化”。
|
||||
* **工具 C (科研数据编辑器):** 强调“在线清洗、缺失值处理”。
|
||||
* **交互:** 点击卡片,以**全屏模态框**或**新页面**形式打开对应工具。
|
||||
|
||||
### **3\. 任务流转中心 (Task Flow Hub) —— 核心交互**
|
||||
|
||||
* **P0:** **最近任务列表:** 展示用户最近发起的 10 条任务。
|
||||
* **字段定义:** 任务名称 | 所属工具(A/B/C) | 状态(处理中/完成/失败) | 进度条 | 操作。
|
||||
* **P0:** **最近任务列表:** 展示用户最近å<E28098>‘èµ·çš„ 10 æ<>¡ä»»åŠ¡ã€?
|
||||
* **å—æ®µå®šä¹‰ï¼?* 任务å<C2A1><C3A5>ç§° | 所属工å…?A/B/C) | 状æ€?处ç<E2809E>†ä¸?完æˆ<C3A6>/失败) | 进度æ<C2A6>?| æ“<C3A6>作ã€?
|
||||
* **P0:** **状æ€<C3A6>实时更新:**
|
||||
* **处理中:** 显示动态进度条(如 45%)。
|
||||
* **失败:** 显示红色警告,支持查看错误日志。
|
||||
* **P0:** **智能流转操作 (Smart Action):**
|
||||
* **处ç<EFBFBD>†ä¸ï¼š** 显示动æ€<C3A6>进度æ<C2A6>¡ï¼ˆå¦‚ 45%)ã€?
|
||||
* **失败ï¼?* 显示红色è¦å‘Šï¼Œæ”¯æŒ<C3A6>查看错误日志ã€?
|
||||
* **P0:** **智能æµ<EFBFBD>转æ“<EFBFBD>作 (Smart Action)ï¼?*
|
||||
* 基于任务类型,动æ€<C3A6>推è<C2A8><C3A8>ä¸‹ä¸€æ¥æ“<C3A6>作:
|
||||
* **工具 A 完成后:** 显示按钮 \[下载\] 和 \[去 AI 提取\] (跳转工具 B)。
|
||||
* **工具 B 完成后:** 显示按钮 \[下载\] 和 \[去清洗\] (跳转工具 C)。
|
||||
* **工具 C 完成后:** 显示按钮 \[下载\]。
|
||||
* **工具 A 完æˆ<C3A6>å<EFBFBD>Žï¼š** 显示按钮 \[下载\] å’?\[åŽ?AI æ<><C3A6>å<EFBFBD>–\] (跳转工具 B)ã€?
|
||||
* **工具 B 完æˆ<C3A6>å<EFBFBD>Žï¼š** 显示按钮 \[下载\] å’?\[去清洗\] (跳转工具 C)ã€?
|
||||
* **工具 C 完æˆ<C3A6>å<EFBFBD>Žï¼š** 显示按钮 \[下载\]ã€?
|
||||
### **4\. æ•°æ<C2B0>®èµ„产åº?(Data Asset Library) —â€?V2 æ ¸å¿ƒå<C692>‡çº§**
|
||||
|
||||
### **4\. 数据资产库 (Data Asset Library) —— V2 核心升级**
|
||||
|
||||
* **P0:** **Tab 分栏视图:**
|
||||
* **P0:** **Tab 分æ <C3A6>视图ï¼?*
|
||||
* **\[全部\]**
|
||||
* **\[处理结果\] (Outputs):** 存放工具 A/B/C 生成的最终文件。图标使用绿色/蓝色区分。
|
||||
* **\[原始上传\] (Inputs):** 存放用户直接上传的底表。图标使用灰色区分。
|
||||
* **P0:** **资产卡片信息:**
|
||||
* 文件名、标签(如“已清洗”、“已脱敏”)、行数、修改时间。
|
||||
* **\[处ç<EFBFBD>†ç»“æžœ\] (Outputs):** å˜æ”¾å·¥å…· A/B/C 生æˆ<C3A6>çš„æœ€ç»ˆæ–‡ä»¶ã€‚å›¾æ ‡ä½¿ç”¨ç»¿è‰?è“<C3A8>色区分ã€?
|
||||
* **\[åŽŸå§‹ä¸Šä¼ \] (Inputs):** å˜æ”¾ç”¨æˆ·ç›´æŽ¥ä¸Šä¼ çš„åº•è¡¨ã€‚å›¾æ ‡ä½¿ç”¨ç<EFBFBD>°è‰²åŒºåˆ†ã€?
|
||||
* **P0:** **资产å<EFBFBD>¡ç‰‡ä¿¡æ<EFBFBD>¯ï¼?*
|
||||
* 文件å<EFBFBD><EFBFBD>ã€<EFBFBD>æ ‡ç¾ï¼ˆå¦‚“已清洗â€<EFBFBD>ã€<EFBFBD>“已脱æ•<EFBFBD>â€<EFBFBD>)ã€<EFBFBD>行数ã€<EFBFBD>修改时间ã€?
|
||||
* **P0:** **å¿«æ<C2AB>·æ“<C3A6>作 (Hover Actions):**
|
||||
* 鼠标悬停在卡片上时,显示操作按钮:
|
||||
* \[下载\]: 下载到本地。
|
||||
* \[去处理\]: 如果是原始文件,点击跳转到工具选择页(或默认工具 A)。
|
||||
* \[分析\]: 如果是处理结果,点击跳转到“智能数据分析”模块(未来规划)。
|
||||
* **P0:** **原始文件上传入口:**
|
||||
* 底部固定按钮 \[+ 上传原始文件到库\],允许用户将本地 Excel 存入云端备用。
|
||||
* é¼ æ ‡æ‚¬å<EFBFBD>œåœ¨å<EFBFBD>¡ç‰‡ä¸Šæ—¶ï¼Œæ˜¾ç¤ºæ“<EFBFBD>作按钮ï¼?
|
||||
* \[下载\]: 下载到本地�
|
||||
* \[去处ç<EFBFBD>†\]: 如果是原始文件,点击跳转到工具选择页(或默认工å…?A)ã€?
|
||||
* \[分æž<EFBFBD>\]: 如果是处ç<E2809E>†ç»“果,点击跳转到“智能数æ<C2B0>®åˆ†æž<C3A6>â€<C3A2>模å<C2A1>—(未æ<C2AA>¥è§„划)ã€?
|
||||
* **P0:** **åŽŸå§‹æ–‡ä»¶ä¸Šä¼ å…¥å<EFBFBD>£ï¼?*
|
||||
* 底部固定按钮 \[+ ä¸Šä¼ åŽŸå§‹æ–‡ä»¶åˆ°åº“\],å…<C3A5>许用户将本地 Excel å˜å…¥äº‘端备用ã€?
|
||||
## **三ã€?界é<C592>¢åŽŸåž‹å<E280B9>‚è€?(UI Reference)**
|
||||
|
||||
## **三、 界面原型参考 (UI Reference)**
|
||||
|
||||
请严格参考 智能数据清洗工作台\_原型演示\_V2.html。
|
||||
|
||||
* **布局:** 顶部为 Launcher,下方分为左右两栏(左 2/3 为任务,右 1/3 为资产)。
|
||||
* **视觉风格:**
|
||||
è¯·ä¸¥æ ¼å<EFBFBD>‚è€?智能数æ<C2B0>®æ¸…洗工作å<C593>°\_原型演示\_V2.htmlã€?
|
||||
* **布局ï¼?* 顶部ä¸?Launcher,下方分为左å<C2A6>³ä¸¤æ <C3A6>(å·?2/3 为任务,å<C592>?1/3 为资产)ã€?
|
||||
* **è§†è§‰é£Žæ ¼ï¼?*
|
||||
* 工具 A:è“<C3A8>色系 (Blue)
|
||||
* 工具 B:紫色系 (Purple)
|
||||
* 工具 C:翠绿色系 (Emerald)
|
||||
* 状态色:处理中(蓝)、成功(绿)、失败(红)、警告(橙)。
|
||||
|
||||
## **四、 数据交互逻辑 (Data Logic)**
|
||||
* 工具 Cï¼šç¿ ç»¿è‰²ç³?(Emerald)
|
||||
* 状æ€<EFBFBD>色:处ç<EFBFBD>†ä¸(è“?ã€<C3A3>æˆ<C3A6>åŠ?ç»?ã€<C3A3>失è´?çº?ã€<C3A3>è¦å‘?æ©?ã€?
|
||||
## **å››ã€?æ•°æ<C2B0>®äº¤äº’逻辑 (Data Logic)**
|
||||
|
||||
1. **任务轮询 (Polling):**
|
||||
* 工作台加载时,调用 GET /api/tasks/recent。
|
||||
* 若列表中有状态为 processing 的任务,每隔 5 秒轮询一次状态更新,直到完成。
|
||||
2. **跨工具流转 (Handoff):**
|
||||
* 当用户点击 \[去 AI 提取\] 时:
|
||||
* 前端获取该任务的 resultFileId。
|
||||
* 跳转路由至 /tools/b?sourceFileId={resultFileId}。
|
||||
* 工具 B 初始化时,自动加载该文件,无需用户重新上传。
|
||||
* 工作å<EFBFBD>°åŠ è½½æ—¶ï¼Œè°ƒç”?GET /api/tasks/recentã€?
|
||||
* è‹¥åˆ—è¡¨ä¸æœ‰çжæ€<EFBFBD>为 processing 的任务,æ¯<C3A6>éš” 5 秒轮询一次状æ€<C3A6>更新,直到完æˆ<C3A6>ã€?
|
||||
2. **跨工具æµ<EFBFBD>è½?(Handoff):**
|
||||
* 当用户点å‡?\[åŽ?AI æ<><C3A6>å<EFBFBD>–\] 时:
|
||||
* å‰<EFBFBD>端获å<EFBFBD>–该任务的 resultFileIdã€?
|
||||
* 跳转路由�/tools/b?sourceFileId={resultFileId}�
|
||||
* 工具 B åˆ<C3A5>å§‹åŒ–æ—¶ï¼Œè‡ªåŠ¨åŠ è½½è¯¥æ–‡ä»¶ï¼Œæ— éœ€ç”¨æˆ·é‡<C3A9>æ–°ä¸Šä¼ ã€?
|
||||
3. **资产管ç<C2A1>†:**
|
||||
* 工具 A/B/C 产生的最终结果,需自动注册到 DataAsset 表中,并标记 type='output'。
|
||||
* 用户手动上传的文件,注册为 type='input'。
|
||||
* 工具 A/B/C 产生的最终结果,需自动注册åˆ?DataAsset 表ä¸ï¼Œå¹¶æ ‡è®° type='output'ã€?
|
||||
* ç”¨æˆ·æ‰‹åŠ¨ä¸Šä¼ çš„æ–‡ä»¶ï¼Œæ³¨å†Œä¸?type='input'ã€?
|
||||
## **五�埋点与统计需�*
|
||||
|
||||
## **五、 埋点与统计需求**
|
||||
|
||||
* **UV/PV:** 工作台访问量。
|
||||
* **CTR:** 三个工具卡片的点击率(判断哪个工具最常用)。
|
||||
* **流转率:** 用户点击“去 AI 提取”等流转按钮的比例(判断工作流是否顺畅)。
|
||||
* **UV/PV:** 工作å<C593>°è®¿é—®é‡<C3A9>ã€?
|
||||
* **CTR:** 三个工具å<C2B7>¡ç‰‡çš„点击率(判æ–哪个工具最常用)ã€?
|
||||
* **æµ<C3A6>转çŽ?** 用户点击“去 AI æ<><C3A6>å<EFBFBD>–â€<C3A2>ç‰æµ<C3A6>转按钮的比例(判æ–工作æµ<C3A6>是å<C2AF>¦é¡ºç•…)ã€
|
||||
Reference in New Issue
Block a user