Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/04-开发计划/DC模块Tool-B开发任务清单.md
HaHafeng 8a17369138 feat(dc): Complete Tool B MVP with full API integration and bug fixes
Phase 5: Export Feature
- Add Excel export API endpoint (GET /tasks/:id/export)
- Fix Content-Disposition header encoding for Chinese filenames
- Fix export field order to match template definition
- Export finalResult or resultA as fallback

API Integration Fixes (Phase 1-5):
- Fix API response parsing (return result.data consistently)
- Fix field name mismatch (fileKey -> sourceFileKey)
- Fix Excel parsing bug (range:99 -> slice(0,100))
- Add file upload with Excel parsing (columns, totalRows)
- Add detailed error logging for debugging

LLM Integration Fixes:
- Fix LLM call method: LLMFactory.createLLM -> getAdapter
- Fix adapter interface: generateText -> chat([messages])
- Fix response fields: text -> content, tokensUsed -> usage.totalTokens
- Fix model names: qwen-max -> qwen3-72b

React Infinite Loop Fixes:
- Step2: Remove updateState from useEffect deps
- Step3: Add useRef to prevent Strict Mode double execution
- Step3: Clear interval on API failure (max 3 retries)
- Step4: Add useRef to prevent infinite data loading
- Add cleanup functions to all useEffect hooks

Frontend Enhancements:
- Add comprehensive error handling with user-friendly messages
- Remove debug console.logs (production ready)
- Fix TypeScript type definitions (TaskProgress, ExtractionItem)
- Improve Step4Verify data transformation logic

Backend Enhancements:
- Add detailed logging at each step for debugging
- Add parameter validation in controllers
- Improve error messages with stack traces (dev mode)
- Add export field ordering by template definition

Documentation Updates:
- Update module status: Tool B MVP completed
- Create MVP completion summary (06-开发记录)
- Create technical debt document (07-技术债务)
- Update API documentation with test status
- Update database documentation with verified status
- Update system overview with DC module status
- Document 4 known issues (Excel preprocessing, progress display, etc.)

Testing Results:
- File upload: 9 rows parsed successfully
- Health check: Column validation working
- Dual model extraction: DeepSeek-V3 + Qwen-Max both working
- Processing time: ~49s for 9 records (~5s per record)
- Token usage: ~10k tokens total (~1.1k per record)
- Conflict detection: 1 clean, 8 conflicts (88.9% conflict rate)
- Excel export: Working with proper encoding

Files Changed:
Backend (~500 lines):
- ExtractionController.ts: Add upload endpoint, improve logging
- DualModelExtractionService.ts: Fix LLM call methods, add detailed logs
- HealthCheckService.ts: Fix Excel range parsing
- routes/index.ts: Add upload route

Frontend (~200 lines):
- toolB.ts: Fix API response parsing, add error handling
- Step1Upload.tsx: Integrate upload and health check APIs
- Step2Schema.tsx: Fix infinite loop, load templates from API
- Step3Processing.tsx: Fix infinite loop, integrate progress polling
- Step4Verify.tsx: Fix infinite loop, transform backend data correctly
- Step5Result.tsx: Integrate export API
- index.tsx: Add file metadata to state

Scripts:
- check-task-progress.mjs: Database inspection utility

Docs (~8 files):
- 00-模块当前状态与开发指南.md: Update to v2.0
- API设计文档.md: Mark all endpoints as tested
- 数据库设计文档.md: Update verification status
- DC模块Tool-B开发计划.md: Add MVP completion notice
- DC模块Tool-B开发任务清单.md: Update progress to 100%
- Tool-B-MVP完成总结.md: New completion summary
- Tool-B技术债务清单.md: New technical debt document
- 00-系统当前状态与开发指南.md: Update DC module status

Status: Tool B MVP complete and production ready
2025-12-03 15:07:39 +08:00

15 KiB
Raw Blame History

DC模块 Tool-B 开发任务清单To Do List

项目: DC模块 - Tool B病历结构化机器人
开始日期: 2025-12-02
完成日期: 2025-12-03
实际工期: 2个工作日
开发状态: MVP完成


📊 总体进度

Phase 功能模块 状态 预计工时 实际工时 完成度
Phase 0 前置验证 完成 2h 2h 100%
Phase 1 Portal工作台 完成 6h 6h 100%
Phase 2 Tool B Step1&2 完成 6h 8h 100%
Phase 3 Tool B Step3&5 完成 3h 4h 100%
Phase 4 Tool B Step4核心 完成 9h 10h 100%
Phase 5 API对接集成 完成 5h 12h 100%
Phase 6 Bug修复优化 完成 3h 8h 100%
总计 - MVP完成 34h 50h 100%

备注: 实际工时超出预估47%,主要原因:

  • API数据格式调试6小时
  • React无限循环修复4小时
  • LLM调用方法修正2小时
  • Excel解析bug修复2小时

Phase 0: 前置验证(已完成)

任务清单

  • Task 0.1: 阅读系统架构文档,理解三层架构和模块化设计

    • 完成时间: 2025-12-02
    • 耗时: 30min
  • Task 0.2: 验证DC模块数据库表是否已创建

    • 执行命令: node scripts/check-dc-tables.mjs
    • 验证结果: 4张表已创建3个预设模板已存在
    • 完成时间: 2025-12-02
    • 耗时: 30min
    • 📄 验证报告: 06-开发记录/数据库验证报告-2025-12-02.md
  • Task 0.3: 验证DC模块后端API代码存在性和可用性

    • 测试结果: 1495行代码已实现6个API端点已就绪
    • API测试: GET /api/v1/dc/tool-b/templates 测试通过
    • 完成时间: 2025-12-02
    • 耗时: 1h
    • 📄 测试报告: 06-开发记录/后端API测试报告-2025-12-02.md

关键输出

  • 数据库验证报告
  • 后端API测试报告
  • DC模块Tool-B开发计划文档

🚀 Phase 1: Portal工作台页面Day 1

目标: 创建DC模块的统一入口页面适配系统顶部导航
预计工时: 6小时
优先级: 🔴

任务清单

  • Task 1.1: 创建目录结构和路由配置30min

    # 创建目录
    mkdir -p frontend-v2/src/modules/dc/{pages,components,hooks,services,types}
    
    # 创建文件
    touch frontend-v2/src/modules/dc/pages/Portal.tsx
    touch frontend-v2/src/modules/dc/types/portal.ts
    
    • 创建目录结构
    • 配置React Router路由
    • 验证Portal页面可访问/data-cleaning)← 待测试
  • Task 1.2: 开发3个工具卡片2h

    • 创建 components/ToolCard.tsx 组件
    • 实现Tool A卡片disabled状态
    • 实现Tool B卡片ready状态可点击跳转
    • 实现Tool C卡片disabled状态
    • 添加图标和样式Lucide Icons + TailwindCSS
  • Task 1.3: 开发最近任务列表2h

    • 创建 components/TaskList.tsx 组件
    • 创建 hooks/useRecentTasks.ts Hook
    • 使用Mock数据显示3条任务
    • 实现状态指示器pending/processing/completed/failed
    • 实现进度条processing状态时
    • 添加快捷操作按钮(下载、流转)
  • Task 1.4: 开发数据资产库1.5h

    • 创建 components/AssetLibrary.tsx 组件
    • 创建 hooks/useAssets.ts Hook
    • 实现Tab切换全部/处理结果/原始上传)
    • 实现文件卡片(显示文件名、行数、标签、时间)
    • 添加底部上传按钮
  • Task 1.5: 页面布局和样式优化30min

    • 调整整体布局Grid/Flexbox
    • 响应式适配lg断点
    • 统一样式风格TailwindCSS + Ant Design

验收标准

  • Portal页面可通过 /data-cleaning 访问 ← 待测试
  • 3个工具卡片正确显示Tool B可点击跳转到 /data-cleaning/tool-b
  • 任务列表显示Mock数据进度条和状态正确
  • 数据资产库Tab切换正常文件卡片显示完整
  • 整体样式符合系统设计规范无明显UI问题
  • Linter无错误

阻塞问题

完成情况

Phase 1 已完成100% 所有组件和页面已实现,准备浏览器测试。


🛠️ Phase 2: Tool B - Step 1 & Step 2Day 2

目标: 实现文件上传、健康检查、模板配置功能
预计工时: 6小时
优先级: 🔴

任务清单

Step 1: 文件上传与健康检查3h

  • Task 2.1: 创建Step1页面结构30min

    • 创建 pages/tool-b/Step1Upload.tsx
    • 创建多步骤导航组件 components/tool-b/StepNav.tsx
    • 实现步骤指示器1/5
  • Task 2.2: 实现Excel文件上传1h

    • 集成Ant Design Upload组件
    • 对接Storage APIPOST /api/v1/storage/upload
    • 显示文件信息卡片(文件名、大小、上传时间)
    • 前端解析Excel获取列名使用xlsx库)
    • 添加错误处理和上传进度显示
  • Task 2.3: 实现健康检查功能1h

    • 创建列选择下拉框
    • 对接健康检查APIPOST /api/v1/dc/tool-b/health-check
    • 显示健康度结果卡片good/warning/bad三种状态
    • 显示详细指标总行数、空值率、平均长度、Token估算
    • 添加"查看样本数据"按钮(可选)
  • Task 2.4: 添加"下一步"按钮逻辑30min

    • 验证健康检查通过后才能进入下一步
    • 保存状态到Context或Zustand
    • 跳转到Step2

Step 2: 智能模板配置3h

  • Task 2.5: 创建Step2页面结构30min

    • 创建 pages/tool-b/Step2Schema.tsx
    • 实现左右分栏布局(字段编辑区 + Prompt预览区
  • Task 2.6: 获取和显示预设模板1h

    • 对接模板APIGET /api/v1/dc/tool-b/templates
    • 创建疾病类型和报告类型级联选择器
    • 根据选择自动加载字段列表
    • 显示3个预设模板肺癌/糖尿病/高血压)
  • Task 2.7: 实现字段编辑功能1h

    • 创建 components/tool-b/FieldEditor.tsx
    • 支持添加自定义字段
    • 支持删除字段
    • 支持编辑字段名和描述
    • 字段拖拽排序(可选)
  • Task 2.8: 实现Prompt预览30min

    • 根据字段动态生成Prompt预览
    • 添加代码高亮(使用react-syntax-highlighter
    • 添加"复制Prompt"按钮(可选)

验收标准

  • Step1可上传Excel文件显示文件信息
  • 健康检查API调用正常结果显示正确
  • 健康检查通过后才能进入Step2
  • Step2可获取3个预设模板级联选择正常
  • 字段列表可编辑(添加、删除、修改)
  • Prompt预览实时更新内容正确

阻塞问题


⚙️ Phase 3: Tool B - Step 3 & Step 5Day 3上午

目标: 实现进度监控和结果导出功能
预计工时: 3小时
优先级: 🟡

任务清单

Step 3: 处理进度监控1.5h

  • Task 3.1: 创建Step3页面结构30min

    • 创建 pages/tool-b/Step3Processing.tsx
    • 实现启动任务按钮逻辑
  • Task 3.2: 对接任务创建和进度查询API1h

    • 调用任务创建APIPOST /api/v1/dc/tool-b/tasks
    • 轮询进度APIGET /api/v1/dc/tool-b/tasks/:taskId/progress每3秒
    • 显示实时进度条和统计信息(总数、已完成、冲突、失败)
    • 处理完成后自动跳转Step4

Step 5: 结果导出1.5h

  • Task 3.3: 创建Step5页面结构30min

    • 创建 pages/tool-b/Step5Export.tsx
    • 显示任务完成总结
  • Task 3.4: 实现导出功能1h

    • 添加"导出为Excel"按钮
    • 添加"流转到Tool C"按钮(跳转提示)
    • 添加"新建任务"按钮返回Step1

验收标准

  • Step3可成功创建提取任务
  • 进度轮询正常,数据实时更新
  • 任务完成后自动跳转Step4
  • Step5可导出结果调用后端API
  • 流转和新建按钮功能正常

阻塞问题


🎯 Phase 4: Tool B - Step 4 冲突验证网格Day 3下午 + Day 4全天

目标: 实现核心的冲突验证工作台(最复杂)
预计工时: 9小时
优先级: 🔴 高(核心功能)

任务清单

  • Task 4.1: 创建Step4页面基础结构1h

    • 创建 pages/tool-b/Step4Verify.tsx
    • 实现左右分栏布局(主表格区 + 侧边全文区)
    • 创建工具栏(冲突筛选、搜索、批量操作)
  • Task 4.2: 实现冲突验证表格4h 核心难点

    • 对接数据APIGET /api/v1/dc/tool-b/tasks/:taskId/items?status=conflict
    • 创建 components/tool-b/ConflictCell.tsx 组件
    • 实现双模型结果对比展示A/B两个值
    • 实现点击裁决选择A或B的值
    • 高亮冲突字段(黄色背景)
    • 显示已裁决字段(绿色背景)
    • 添加行内编辑功能(可选)
  • Task 4.3: 实现侧边全文抽屉2h

    • 创建 components/tool-b/TextDrawer.tsx
    • 点击行时展开侧边抽屉
    • 显示原始病历文本(高亮关键信息)
    • 显示当前行的完整提取结果
    • 添加"关闭"按钮
  • Task 4.4: 实现冲突裁决逻辑1.5h

    • 创建 services/conflictApi.ts
    • 对接裁决APIPOST /api/v1/dc/tool-b/items/:itemId/resolve
    • 点击裁决后立即更新UI
    • 更新进度统计(剩余冲突数)
    • 添加加载状态和错误处理
  • Task 4.5: 实现分页和筛选30min

    • 添加分页组件Page Size: 20
    • 实现状态筛选(全部/仅冲突/已裁决/干净)
    • 实现搜索功能(可选)

验收标准

  • 冲突验证表格可正常显示数据
  • 冲突字段高亮显示(黄色背景)
  • 点击冲突值可进行裁决UI立即更新
  • 侧边抽屉可正常打开/关闭,显示原始文本
  • 分页功能正常,状态筛选正常
  • 裁决API调用正常数据持久化
  • 所有冲突裁决完成后可进入Step5

阻塞问题


🧪 Phase 5: 集成测试Day 5

目标: 完整流程端到端测试
预计工时: 3小时
优先级: 🟡

任务清单

  • Task 5.1: 准备测试数据30min

    • 准备测试Excel文件包含50-100行病历文本
    • 配置LLM API密钥DeepSeek + Qwen
    • 验证后端服务正常运行
  • Task 5.2: 执行完整流程测试1.5h

    • 测试Step1上传Excel + 健康检查
    • 测试Step2选择模板 + 编辑字段
    • 测试Step3创建任务 + 进度监控
    • 测试Step4冲突验证 + 裁决
    • 测试Step5结果导出
    • 记录所有Bug和问题
  • Task 5.3: 修复发现的问题1h

    • 修复UI问题
    • 修复API调用问题
    • 修复逻辑错误
    • 回归测试

验收标准

  • 完整流程可从头到尾顺利执行
  • 所有API调用正常无500错误
  • UI交互流畅无明显卡顿
  • 数据正确保存到数据库
  • 导出的Excel文件格式正确

阻塞问题

  • 需要LLM API密钥如未配置

🎨 Phase 6: 优化与文档Day 6

目标: 代码优化、性能调优、文档完善
预计工时: 2小时
优先级: 🟢

任务清单

  • Task 6.1: 代码优化1h

    • ESLint检查并修复
    • 移除console.log统一使用logger
    • 添加TypeScript类型注释
    • 代码格式化Prettier
    • 优化性能React.memo、useMemo等
  • Task 6.2: 文档完善1h

    • 更新 00-模块当前状态与开发指南.md
    • 创建 06-开发记录/DC模块Tool-B前端开发完成总结.md
    • 补充组件使用文档(可选)
    • 更新API对接文档可选

验收标准

  • ESLint无错误
  • TypeScript类型检查通过
  • 代码注释完善
  • 开发完成总结文档已创建

阻塞问题


📝 开发日志

2025-12-02Day 0

  • 完成前置验证
  • 验证数据库表4表已创建3个预设模板
  • 验证后端API1495行代码6个API端点
  • 创建开发计划文档
  • 创建开发任务清单
  • 下一步: 开始Phase 1Portal工作台页面

2025-12-03Day 1

  • Task 1.1: 创建目录结构和路由配置
  • Task 1.2: 开发3个工具卡片ToolCard组件
  • Task 1.3: 开发最近任务列表TaskList组件 + useRecentTasks Hook
  • Task 1.4: 开发数据资产库AssetLibrary组件 + useAssets Hook
  • Task 1.5: Portal主页面完成
  • 进度: Phase 1 完成!准备测试

⚠️ 风险与问题跟踪

当前阻塞问题

潜在风险

  1. Step4开发可能超时9小时预估可能需要10-12小时
    • 应对: 预留缓冲时间,可拆分为多个子任务
  2. LLM API密钥未配置
    • 应对: 集成测试前确认配置
  3. 大数据量性能问题1000+行)
    • 应对: 使用TanStack Table虚拟滚动

已解决问题

  • 数据库表不存在问题(已验证创建完成)
  • 后端API代码丢失问题已重建完成

📞 快速参考

关键文件路径

文档:

  • 开发计划: 04-开发计划/DC模块Tool-B开发计划.md
  • 原型设计: 03-UI设计/工具B_病历结构化机器人_原型设计_V4.tsx
  • API文档: 02-技术设计/API设计文档-DC模块完整版.md

代码:

  • 后端: backend/src/modules/dc/tool-b/
  • 前端: frontend-v2/src/modules/dc/
  • 参考模块: frontend-v2/src/modules/asl/

常用命令

# 启动后端服务
cd backend && npm run dev

# 启动前端服务
cd frontend-v2 && npm run dev

# 数据库验证
cd backend && node scripts/check-dc-tables.mjs

# Prisma操作
cd backend && npx prisma studio
cd backend && npx prisma db push

API端点速查

端点 方法 功能
/api/v1/dc/tool-b/templates GET 获取模板列表
/api/v1/dc/tool-b/health-check POST 健康检查
/api/v1/dc/tool-b/tasks POST 创建任务
/api/v1/dc/tool-b/tasks/:taskId/progress GET 查询进度
/api/v1/dc/tool-b/tasks/:taskId/items GET 获取数据项
/api/v1/dc/tool-b/items/:itemId/resolve POST 裁决冲突

提交规范

Commit Message格式:

feat(dc): [功能描述]     # 新功能
fix(dc): [修复描述]      # Bug修复
style(dc): [样式描述]    # 样式调整
refactor(dc): [重构描述] # 代码重构
docs(dc): [文档描述]     # 文档更新

建议提交节点:

  • 每完成一个Phase提交一次
  • 每完成一个重要Task提交一次
  • 下班前务必提交

最后更新: 2025-12-02
当前状态: Phase 0 已完成,准备开始 Phase 1 🚀