docs(dc/tool-c): Complete Tool C MVP planning and TODO list

Summary:
- Update Tool C MVP Development Plan (V1.3)
  * Clarify Python execution as core feature
  * Add 15 real medical data cleaning scenarios (basic/medium/advanced)
  * Enhance System Prompt with 10 Few-shot examples
  * Discover existing Python service (extraction_service)
  * Update to extend existing service instead of rebuilding
- Create Tool C MVP Development TODO List
  * 3-week plan with 30 tasks (Day 1-15)
  * 4 core milestones with clear acceptance criteria
  * Daily checklist and risk management
  * Detailed task breakdown for each day

Key Changes:
- Python service: Extend existing extraction_service instead of new setup
- Test scenarios: 15 scenarios (5 basic + 5 medium + 5 advanced)
- Success criteria: Basic >90%, Medium >80%, Advanced >60%, Total >80%
- Development time: Reduced from 3 weeks to 2 weeks (reuse infrastructure)

Status: Planning complete, ready to start Day 1 development
This commit is contained in:
2025-12-06 11:00:44 +08:00
parent 8a17369138
commit 8be741cd52
42 changed files with 3581 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
# **PRDTool C \- 科研数据编辑器 (The Research Editor)**
| 文档版本 | V6.0 (AI Code Interpreter 增强版) |
| :---- | :---- |
| **产品形态** | Web 端双核编辑器 (GUI 可视化操作 \+ LUI 自然语言交互) |
| **核心价值** | 将“Excel 的易用性”与“Python 的强大能力”结合。医生既可以通过鼠标点击完成微操,也可以通过自然语言指挥 AI 编写代码完成复杂的清洗任务(如长宽转换、多重插补)。 |
| **技术底座** | Node.js BFF \+ Python Server-side Sandbox \+ DeepSeek-V3 |
## **一、 产品核心理念 (Core Philosophy)**
### **1.1 双核驱动 (Dual-Core Interaction)**
* **左脑 (GUI):** 提供类似 Excel 的网格和工具栏,适合“直觉式、原子化”的操作(如手动修改一个值、排序、筛选)。
* **右脑 (AI Copilot):** 提供对话式代码解释器适合“逻辑性、批量化”的操作如“把年龄按60岁分箱”、“删除所有空行”、“计算生存时间”
### **1.2 可控黑盒 (Controllable Blackbox)**
AI 不直接修改数据,而是**生成 Python 代码**。系统在执行前展示\*\*“预操作卡片”\*\*,由用户确认执行,确保科研数据的严谨性。
## **二、 核心业务流程 (User Flow)**
数据导入 \-\> 双模式清洗 (点击工具栏 OR 对话 AI) \-\> 代码/操作执行 \-\> 实时预览更新 \-\> 版本快照 \-\> 导出结果
## **三、 功能模块详解 (Functional Requirements)**
### **1\. 界面布局 (The Workspace)**
* **P0:** **分栏布局 (Split View):**
* **左侧 (70%):** 超级网格 (The Grid),展示数据预览。
* **右侧 (30%):** 智能侧边栏 (Smart Sidebar),包含 **\[统计概览\]** 和 **\[AI 助手\]** 两个 Tab。
* **P0:** **全局状态指示:**
* 当 AI 正在思考或后端正在计算时,左侧网格显示 **“AI 处理中...”** 遮罩,并锁定编辑,防止双写冲突。
### **2\. 顶部扁平工具栏 (Flat Toolbar) —— GUI 核心**
*保留高频、标准化的操作入口,作为 AI 的补充。*
* **P0: 变量加工:**
* **生成新变量:** 弹窗公式构建器。
* **计算时间差:** 内置医学常数 (年=365.25天)。
* **生成哑变量:** 回归分析专用。
* **横纵表转换 (Pivot):** \* *交互升级:* 点击后不再只是纯前端计算,而是调用后端 Python 逻辑,支持处理更复杂的转换。
* **P0: 质量治理:**
* **查找重复值:** 按 ID 或全字段查重。
* **多重插补 (MICE):** 全局入口,调用后端 sklearn 或 fancyimpute 库。
* **P0: 样本筛选:** 构建入排标准。
### **3\. AI Copilot 智能助手 (The Brain) —— V6 核心升级**
*位于右侧侧边栏的 \[AI 助手\] Tab。*
#### **3.1 自然语言指令解析**
* **P0:** **意图识别:** 支持模糊指令如“洗一下数据”、“把男变成1”。
* **P0:** **上下文感知:** AI 能够读取当前的列名 (Metadata) 和前 5 行数据示例,理解数据含义。
#### **3.2 代码解释器模式 (Code Interpreter)**
* **P0:** **代码生成:** AI 针对用户需求,生成可执行的 **Python (Pandas)** 代码块。
* **P0:** **预操作卡片 (Action Card):**
* AI 不直接执行代码。
* 界面展示一个卡片:操作类型: 数据分箱 | 目标列: 年龄 | 代码预览。
* 按钮:**\[运行代码\]** | **\[取消\]**。
* **P0:** **执行反馈:**
* 执行成功:显示 ✅,左侧表格自动刷新。
* 执行失败AI 自动分析 Error Log尝试自我修正代码并建议重试。
#### **3.3 典型 AI 场景支持**
* **高级清洗:** “把所有列的异常值(\>3倍标准差替换为缺失值”。
* **复杂提取:** “从‘诊断’列中提取出由‘/’分隔的第二部分,生成新列”。
* **批量处理:** “删除所有缺失率超过 50% 的列”。
### **4\. 智能统计面板 (Insight Panel)**
*位于右侧侧边栏的 \[统计概览\] Tab。*
* **P0:** **列联动:** 点击左侧网格某一列,右侧自动显示该列的分布图(直方图/频次图)。
* **P0:** **快捷操作:** 图表下方直接提供“填补”、“分箱”、“映射”等快捷按钮。
### **5\. 导出与流转 (Export)**
* **P0:** **结果导出:** 支持 Excel (.xlsx) 和 SPSS (.sav) 格式。
* **P0:** **操作审计:** 导出的文件中,附带一份 **"清洗日志 (Cleaning Log)"**,记录了所有的 AI 代码和手动操作步骤(用于科研溯源)。
## **四、 数据与性能策略 (Data Strategy)**
### **4.1 性能准入 (Guardrails)**
* **文件大小限制:** 单个文件 **\< 20MB**。
* **行数限制:** 建议 **\< 50,000 行** 以保证前端渲染流畅度。
* *策略:* 后端 Python 可以处理百万行,但前端 AG Grid 仅加载前 100-1000 行作为预览Preview Mode导出时才生成全量文件。
### **4.2 安全与隐私**
* **P0:** **沙箱隔离:** AI 生成的 Python 代码必须在服务端的安全沙箱Docker/SAE中运行禁止访问外网和系统文件。
* **P0:** **数据脱敏:** 确保输入编辑器的数据已在前置环节(工具 B完成了 PII 脱敏。
## **五、 埋点与统计**
* **AI 采纳率:** 展示 Action Card 后,用户点击“运行”的比例。
* **代码报错率:** AI 生成的代码在后端执行失败的比例。
* **常用指令 Top 10:** 统计医生最常对 AI 说的话。
## **六、 附录AI 指令集示例 (Few-Shot Examples)**
| 用户指令 | AI 动作 (Action) | 生成代码逻辑 (Python Pandas) |
| :---- | :---- | :---- |
| "把性别转为数字" | Recode | df\['sex'\] \= df\['sex'\].map({'男':1, '女':0}) |
| "年龄按60分两组" | Binning | df\['age\_group'\] \= pd.cut(df\['age'\], bins=\[0,60,150\], labels=\['0','1'\]) |
| "删除没有ID的行" | Filter | df \= df.dropna(subset=\['patient\_id'\]) |
| "计算BMI" | Formula | df\['bmi'\] \= df\['weight'\] / (df\['height'\]/100)\*\*2 |
| "把每个人的一行变成多行" | Pivot/Melt | df \= df.melt(id\_vars=\['id'\], ...) |