Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/04-开发计划/工具C_MVP开发_TODO清单.md
HaHafeng 8be741cd52 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
2025-12-06 11:00:44 +08:00

18 KiB
Raw Blame History

工具C MVP开发 - To-do List

文档版本v1.0
创建日期2025-12-06
预计工期3周15个工作日
参考文档工具C_MVP开发计划_V1.0.md


📊 整体进度概览

阶段 任务数 已完成 进行中 待开始 完成率
Week 1: 基础架构 12 0 0 12 0%
Week 2: 核心功能 10 0 0 10 0%
Week 3: 测试优化 8 0 0 8 0%
总计 30 0 0 30 0%

🎯 核心里程碑(必须完成)

  • M1Python代码执行环境搭建完成Day 1
  • M2AI生成代码能力验证通过Day 7
  • M3:基础场景成功率 > 90%Day 12
  • M4:总体成功率 > 80%Day 15

📅 Week 1基础架构搭建Day 1-5

Day 1Python服务扩展 + 环境验证

Python微服务扩展

  • P0 创建 extraction_service/services/dc_executor.py

    • 实现 validate_code(code) - AST静态检查
    • 实现 execute_pandas_code(data, code) - 代码执行
    • 添加危险模块黑名单os、sys、subprocess等
    • 添加超时保护30秒
    • 添加异常捕获和错误消息
  • P0 扩展 extraction_service/main.py

    • 添加 POST /api/dc/execute 端点
    • 添加 POST /api/dc/validate 端点
    • 添加请求日志记录
    • 添加错误处理中间件
  • P0 测试Python服务

    • 启动服务:cd extraction_service && venv\Scripts\activate && uvicorn main:app --reload
    • 测试健康检查:GET http://localhost:8000/api/health
    • 测试代码验证发送简单Pandas代码
    • 测试代码执行:发送真实数据+代码
    • 验证AST拦截发送危险代码import os

Node.js后端集成

  • P0 创建后端文件夹结构

    backend/src/modules/dc/tool-c/
    ├── services/
    │   ├── SessionService.ts         # Session管理
    │   ├── AICodeService.ts          # AI代码生成
    │   ├── PythonExecutorService.ts  # Python执行新增
    │   └── DataProcessService.ts     # 数据处理
    ├── controllers/
    │   └── ToolCController.ts        # HTTP控制器
    ├── routes/
    │   └── index.ts                  # 路由定义
    └── utils/
        └── codeValidator.ts          # 前置验证
    
  • P0 实现 PythonExecutorService.ts

    • 实现 executeCode(data, code) 方法
    • 实现 validateCode(code) 方法
    • 添加超时控制30秒
    • 添加日志记录(复用 @/common/logging
    • 添加错误处理和重试机制
  • P1 环境变量配置

    • 添加 EXTRACTION_SERVICE_URL=http://localhost:8000.env
    • 验证环境变量加载

验收标准

  • Python服务能成功执行简单Pandas代码df['age'] > 60
  • AST检查能拦截危险代码import os
  • Node.js能成功调用Python服务并获取结果
  • 所有日志正常输出到控制台

Day 2数据库 + Session管理

数据库Schema设计

  • P0 创建Prisma Schemaprisma/schema.prisma

    // @@schema("dc")
    model DcToolCSession {
      id            String    @id @default(uuid())
      userId        String
      fileName      String
      fileKey       String    // OSS存储key
      totalRows     Int
      totalCols     Int
      columns       Json      // 列名数组
      encoding      String?   // 编码格式
      createdAt     DateTime  @default(now())
      updatedAt     DateTime  @updatedAt
    
      @@index([userId])
      @@map("dc_tool_c_sessions")
    }
    
  • P0 执行数据库迁移

    npx prisma db push
    npx prisma generate
    
  • P1 验证表创建成功

    SELECT * FROM dc.dc_tool_c_sessions LIMIT 1;
    

SessionService实现

  • P0 实现 SessionService.ts

    • createSession(userId, fileName, fileBuffer) - 创建会话
      • 上传Excel到OSS复用 storage.uploadBuffer
      • 解析Excel到JSON使用xlsx库
      • 保存元数据到数据库prisma
    • getSession(sessionId) - 获取会话
      • 从数据库读取元数据
      • 从OSS下载数据如需要
    • deleteSession(sessionId) - 删除会话
      • 删除OSS文件
      • 删除数据库记录
  • P1 添加Excel解析逻辑

    • 使用 xlsx 库读取Excel
    • 转换为JSON格式数组对象
    • 检测编码(中文支持)
    • 提取列名和数据类型

验收标准

  • 能成功上传10MB以内的Excel文件
  • 数据正确保存到OSS零落盘
  • Session元数据正确存储到数据库
  • 能通过sessionId检索到完整数据

Day 3AI代码生成服务

AICodeService实现

  • P0 实现 AICodeService.ts

    • 集成LLMFactory复用 @/common/llm
    • 实现 generateCode(prompt, dataContext) 方法
      • 构建System Prompt包含10个Few-shot示例
      • 注入数据上下文(行数、列名、样本数据)
      • 调用LLM生成代码
      • 提取纯代码去除Markdown格式
    • 实现 fixCode(originalCode, errorMsg, dataContext) 方法
      • AI自我修复逻辑
      • 最多重试1次
  • P0 System Prompt设计

    • 基础场景示例5个
    • 中等场景示例3个
    • 高级场景示例2个
    • 安全规范说明
    • 输出格式要求
  • P1 代码提取逻辑

    • 识别 ```python ... ``` 格式
    • 识别纯代码格式
    • 去除注释和说明

验收标准

  • AI能生成正确的Pandas代码基础场景
  • 生成的代码符合安全规范(无危险导入)
  • 能正确处理中文列名
  • 代码提取准确率 > 95%

Day 4前端基础框架

前端文件夹结构

  • P0 创建前端目录

    frontend-v2/src/modules/dc/pages/tool-c/
    ├── index.tsx                # 主页面入口
    ├── components/
    │   ├── DataTable.tsx        # AG Grid数据表格
    │   ├── AICopilot.tsx        # AI对话侧边栏
    │   ├── FileUploader.tsx     # 文件上传
    │   ├── Toolbar.tsx          # 顶部工具栏
    │   └── ChatMessage.tsx      # 对话消息组件
    ├── hooks/
    │   ├── useSession.ts        # Session管理
    │   └── useAIChat.ts         # AI对话
    ├── types.ts                 # TypeScript类型定义
    └── api.ts                   # API封装
    
  • P0 安装依赖

    cd frontend-v2
    npm install ag-grid-react ag-grid-community xlsx
    

主页面布局

  • P0 实现 index.tsx(主布局)

    • 左侧数据表格区域70%宽度)
    • 右侧AI Copilot侧边栏30%宽度)
    • 顶部:扁平工具栏(文件上传、导出、撤销)
    • 状态管理useState/useReducer
  • P1 实现 FileUploader.tsx

    • 拖拽上传支持
    • 文件类型验证仅Excel
    • 文件大小限制10MB
    • 上传进度显示

验收标准

  • 页面布局正确左表格右AI
  • 能成功上传Excel文件
  • 上传后能看到加载状态
  • 响应式布局最小宽度1280px

Day 5数据表格实现AG Grid

DataTable组件

  • P0 实现 DataTable.tsx

    • 集成AG Grid
    • 动态列定义根据Excel自动生成
    • 单元格编辑功能
    • 脏数据标记(黄色高亮)
    • 分页支持每页100行
  • P1 配置AG Grid主题

    • 使用 ag-theme-alpine
    • 自定义样式Ant Design风格
    • 列宽自适应
  • P1 表格功能

    • 列排序
    • 列筛选
    • 行选择(多选)
    • 导出CSVAG Grid内置

验收标准

  • 能正确显示Excel数据100行+
  • 列宽自适应且可手动调整
  • 单元格编辑后有黄色标记
  • 表格性能流畅1000行不卡顿

📅 Week 2核心功能实现Day 6-10

Day 6AI对话UI

AICopilot组件

  • P0 实现 AICopilot.tsx

    • 对话消息列表(滚动)
    • 输入框多行支持Enter发送
    • 发送按钮
    • 加载状态AI思考中...
  • P0 实现 ChatMessage.tsx

    • 用户消息(右对齐,蓝色)
    • AI消息左对齐灰色
    • 代码块高亮(使用 react-syntax-highlighter
    • 时间戳显示
  • P1 消息历史管理

    • 保存到localStorage
    • 最多保存50条
    • 清空历史按钮

验收标准

  • 对话界面美观(参考原型设计)
  • 消息发送/接收流畅
  • 代码块正确高亮
  • 滚动到最新消息

Day 7AI生成代码集成

API集成

  • P0 实现 api.ts

    • uploadFile(file) - 上传Excel
    • sendMessage(sessionId, message) - 发送AI消息
    • executeCode(sessionId, code) - 执行代码
    • getSessionData(sessionId) - 获取数据
  • P0 后端API实现ToolCController.ts

    • POST /api/v1/dc/tool-c/upload - 文件上传
    • POST /api/v1/dc/tool-c/chat - AI对话
    • POST /api/v1/dc/tool-c/execute - 执行代码
    • GET /api/v1/dc/tool-c/sessions/:id - 获取会话

业务逻辑实现

  • P0 实现完整流程

    1. 用户发送消息 → AICodeService生成代码
    2. 前端展示生成的代码Markdown格式
    3. 用户点击"执行"按钮 → 调用Python服务
    4. 执行成功 → 刷新表格数据
    5. 执行失败 → AI自我修复 → 重试
  • P1 错误处理

    • AST检查失败 → 提示用户
    • 执行超时30秒 → 提示用户
    • AI生成失败 → 重试机制

验收标准

  • 基础场景测试5个成功率 > 90%
    • "把年龄大于60的标记为老年组"
    • "删除所有患者ID为空的行"
    • "把性别转为数字男1女0"
    • "计算BMI = 体重 / (身高/100)^2"
    • "删除缺失率超过50%的列"

Day 8UI锁定机制

互斥锁实现

  • P0 前端状态管理

    • 添加 isAIProcessing 状态
    • AI对话中 → 锁定表格编辑
    • 显示友好提示:"AI正在处理请稍候..."
  • P0 表格锁定逻辑

    • isAIProcessing=true → AG Grid设置为只读
    • 禁用工具栏按钮(导出除外)
    • 显示半透明蒙层
  • P1 视觉反馈

    • 表格半透明opacity: 0.6
    • 显示加载动画
    • 顶部显示进度条

验收标准

  • AI处理时表格无法编辑
  • 锁定状态有明显的视觉反馈
  • AI完成后表格自动解锁
  • 用户体验流畅(无卡顿)

Day 9自动检查点Checkpoint

数据快照管理

  • P0 实现检查点逻辑

    • 每次AI执行成功 → 自动保存快照
    • 最多保存10个检查点
    • 快照数据存储到OSS压缩JSON
  • P0 回滚功能

    • 工具栏添加"撤销"按钮
    • 点击撤销 → 恢复到上一个检查点
    • 最多支持10次撤销
  • P1 检查点列表UI

    • 侧边栏显示检查点列表
    • 每个检查点显示:时间、操作描述
    • 点击检查点 → 恢复到该状态

验收标准

  • 每次AI操作后自动保存检查点
  • 撤销功能正常工作
  • 快照数据正确存储到OSS
  • 10个检查点后自动删除最旧的

Day 10Excel导出

导出功能实现

  • P0 后端导出API

    • POST /api/v1/dc/tool-c/export/:sessionId
    • 使用 openpyxlPythonxlsxNode.js
    • 保留原始Excel格式可选MVP可跳过
  • P0 前端导出按钮

    • 工具栏添加"导出"按钮
    • 点击 → 下载Excel文件
    • 文件名:原文件名_cleaned_YYYYMMDD.xlsx
  • P1 导出选项(可选)

    • 仅导出修改的行
    • 保留样式(复杂,可延后)

验收标准

  • 能成功导出Excel文件
  • 导出的数据与表格一致
  • 文件名正确
  • 下载速度快(< 3秒

📅 Week 3测试优化Day 11-15

Day 11中等场景测试 🟡

测试用例执行

  • P0 准备测试数据

    • 创建测试Excel文件包含多个列
    • 包含真实医疗数据示例
  • P0 中等场景测试5个

    1. "把诊断日期和出院日期计算天数差,如果出院日期早于诊断日期则标记为异常"
    2. "根据白细胞、中性粒细胞、淋巴细胞三个指标计算NLR并按2.5分为高低两组"
    3. "从病理报告列中提取TNM分期生成新列"
    4. "把血压列的'120/80'格式拆分成收缩压和舒张压,并判断是否高血压"
    5. "删除重复的患者ID保留最新的一条记录根据就诊日期"

优化AI Prompt

  • P1 根据失败案例优化Prompt
    • 增加错误处理示例
    • 强化中文列名处理
    • 增加边界情况说明

验收标准

  • 中等场景成功率 > 80%4/5成功

Day 12高级场景测试 🔴

高级场景测试5个

  • P0 复杂场景测试
    1. "对于每个患者,找出第一次化疗日期和最后一次化疗日期,计算化疗持续时间"
    2. "生成生存状态和生存时间"(复杂条件逻辑)
    3. "根据ALT、AST、ALP、TBIL判断肝功能分级"
    4. "按患者ID分组计算每次随访相比上次的肿瘤大小变化率"
    5. "根据入院时间,计算季节变量,统计不同季节的发病人数"

Prompt深度优化

  • P1 针对失败场景优化
    • 增加分组聚合示例
    • 增加时间序列示例
    • 增加医学规则示例

验收标准

  • 高级场景成功率 > 60%3/5成功
  • 总体成功率 > 80%12/15成功

Day 13性能优化

性能测试

  • P1 测试性能指标
    • 文件上传速度10MB文件 < 5秒
    • AI代码生成速度< 10秒
    • Python执行速度< 5秒
    • 表格刷新速度(< 2秒
    • 端到端流程(< 20秒

优化措施

  • P1 前端优化

    • AG Grid虚拟滚动
    • React.memo优化渲染
    • 防抖输入debounce 300ms
  • P1 后端优化

    • 数据压缩OSS上传前
    • 缓存会话数据Redis可选
    • 并发控制(限制同时执行数)

验收标准

  • 端到端操作 < 20秒
  • 1000行数据表格不卡顿
  • 无内存泄漏

Day 14集成测试

端到端测试

  • P0 完整流程测试10次

    1. 上传Excel文件
    2. 查看数据表格
    3. 发送AI指令
    4. 执行生成的代码
    5. 验证表格刷新
    6. 测试撤销功能
    7. 导出Excel文件
    8. 验证导出数据正确
  • P1 异常场景测试

    • 上传损坏的Excel文件
    • 发送空消息
    • 执行危险代码(应被拦截)
    • 网络断开恢复

Bug修复

  • P1 修复测试中发现的问题
    • 记录所有bug到GitHub Issues
    • 按优先级修复P0 > P1 > P2

验收标准

  • 端到端流程100%通过
  • 无P0级别bug
  • P1级别bug < 3个

Day 15MVP验收 🎉

最终验收测试

  • P0 15个场景全覆盖测试

    • 基础场景5/5
    • 中等场景4/5
    • 高级场景3/5
    • 总体成功率 > 80%
  • P0 非功能性验收

    • 性能:端到端 < 20秒
    • 安全AST拦截危险代码
    • 稳定10次测试无崩溃
    • 易用:用户能独立完成任务

文档完善

  • P1 更新文档
    • 用户使用手册
    • API接口文档
    • 部署指南
    • 已知问题清单

验收决策

  • 通过:总体成功率 > 80%,进入下一阶段
  • 失败:总体成功率 < 60%需要Pivot到模板库模式

🔥 每日站会检查清单

每天工作开始前

  • 查看昨日遗留问题
  • 确认今日任务清单
  • 检查环境是否正常Python服务、数据库、前端dev server

每天工作结束前

  • 更新To-do List进度
  • 提交代码到Git 重要!防止丢失)
  • 记录遇到的问题和解决方案
  • 规划明日任务

⚠️ 风险提示

技术风险

  1. AI生成质量不稳定

    • 缓解多轮测试优化Prompt
    • 备选:失败后人工编写模板
  2. Python执行安全问题

    • 缓解AST静态检查 + 超时控制
    • 备选Docker沙箱隔离Phase 2
  3. 性能不达标

    • 缓解:分步优化,设定性能基准
    • 备选降低数据量要求10MB → 5MB

进度风险

  1. AI生成成功率 < 60%

    • 应对紧急会议决定是否Pivot
  2. 前端开发延期

    • 应对简化UI聚焦核心功能

📊 成功标准(最终验收)

指标 目标 当前 状态
基础场景成功率 > 90% 0% 🔴
中等场景成功率 > 80% 0% 🔴
高级场景成功率 > 60% 0% 🔴
总体成功率 > 80% 0% 🔴
端到端性能 < 20秒 0秒 🔴
代码安全性 100%拦截 0% 🔴

🎯 下一步行动(启动开发)

立即开始Day 1

  1. 扩展Python服务2小时

    cd AIclinicalresearch/extraction_service
    # 创建dc_executor.py
    # 扩展main.py添加2个端点
    # 测试服务
    
  2. 创建后端文件夹1小时

    cd AIclinicalresearch/backend/src/modules/dc
    mkdir -p tool-c/services tool-c/controllers tool-c/routes tool-c/utils
    
  3. 实现PythonExecutorService2小时

    • 编写代码
    • 单元测试
    • 集成测试

准备好了吗让我们开始Day 1的开发 🚀