- Add Git commit preparation checklist - Add Phase testing guides and issue tracking - Add utility scripts (env setup, test data initialization) - Add temp migration SQL files (for reference) - Update startup scripts and README - Remove obsolete scripts
8.6 KiB
8.6 KiB
Phase 3 批处理模式 - 快速参考
完成时间:2025-10-12
开发用时:6小时(开发)+ 2小时(测试修复)
状态:✅ 全部完成,测试通过
🎯 核心概念
批处理模式 ≠ 对话
批处理模式 = 任务执行器 + 数据提取器
与其他模式的区别
| 模式 | 交互方式 | 输出 | 适用场景 |
|---|---|---|---|
| 全文阅读 | 对话式 | 自然语言 | 文献综述 |
| 逐篇精读 | 对话式 | 自然语言 | 深度分析 |
| 批处理 | 任务式 | 结构化表格 | 批量提取 |
⚙️ 核心参数
| 参数 | 值 | 说明 |
|---|---|---|
| 文献数量 | 3-50篇 | 最少3篇,最多50篇 |
| 并发数 | 固定3 | 避免API限流 |
| 预设模板 | 1个 | 临床研究信息提取(8字段) |
| 自定义模板 | 支持 | 文本块显示(3列) |
| 失败重试 | 支持 | 单独重试失败项 |
| 导出格式 | Excel | 双Sheet设计 |
📋 预设模板:临床研究信息提取
8个提取字段
- 研究目的 - 研究问题或假设
- 研究设计 - RCT、队列研究等
- 研究对象 - 纳入/排除标准
- 样本量 - text类型,保留原文(如"干预组156人,对照组152人")
- 干预组 - 实验组干预措施
- 对照组 - 对照组情况
- 结果及数据 - 主要结局指标数据
- 牛津评级 - 证据等级(1a/1b/2a/2b/3a/3b/4/5)
牛津评级标准
- 1a:系统评价/Meta分析
- 1b:单个RCT
- 2a:设计良好的对照研究(无随机化)
- 2b:准实验研究(队列、病例对照)
- 3a:描述性研究(横断面、病例系列)
- 3b:个案报告
- 4:专家意见
- 5:基础研究(动物、体外)
🗂️ 文件结构
后端文件(6个新建)
backend/src/
├── templates/
│ └── clinicalResearch.ts # 预设模板配置
├── utils/
│ └── jsonParser.ts # JSON解析工具
├── services/
│ └── batchService.ts # 批处理核心逻辑
├── controllers/
│ └── batchController.ts # API控制器
└── routes/
└── batchRoutes.ts # 路由定义
前端文件(13个新建)
frontend/src/
├── api/
│ └── batchApi.ts # API封装
├── hooks/
│ └── useBatchTask.ts # 状态管理
└── components/chat/
├── TaskDefinition.tsx/.css # 任务定义
├── DocumentSelection.tsx/.css # 文献选择
├── BatchProgress.tsx/.css # 执行进度
├── PresetTable.tsx # 预设表格(8列)
├── CustomTable.tsx # 自定义表格(3列)
├── BatchResults.tsx/.css # 结果展示
└── BatchMode.tsx/.css # 批处理主组件
🔌 API端点
后端API
GET /api/v1/batch/templates # 获取模板列表
POST /api/v1/batch/execute # 执行批处理
GET /api/v1/batch/tasks/:taskId # 获取任务状态
GET /api/v1/batch/tasks/:taskId/results # 获取任务结果
POST /api/v1/batch/tasks/:taskId/retry-failed # 重试失败项
测试状态:✅ 模板API已验证通过
🎨 UI设计
三栏布局
┌────────┬───────────────┬───────────────┐
│ 模式 │ 任务定义 │ 进度/结果 │
│ 选择 │ + │ │
│ (120px)│ 文献选择 │ │
│ │ + │ │
│ ○ 全文│ 开始按钮 │ │
│ ○ 精读│ │ │
│ ● 批处理│ │ │
└────────┴───────────────┴───────────────┘
步骤流程
Step 1: 定义任务
↓
Step 2: 选择文献(3-50篇)
↓
Step 3: 开始批处理
↓
Step 4: 查看结果,导出Excel
📊 结果展示
预设模板(8列表格)
┌──┬────────┬──────┬──────┬──────┬────┬────┬────┬──────┬────┐
│#│文献名称 │研究 │研究 │研究 │样本│干预│对照│结果 │牛津│
│ │ │目的 │设计 │对象 │量 │组 │组 │数据 │评级│
└──┴────────┴──────┴──────┴──────┴────┴────┴────┴──────┴────┘
自定义模板(3列表格)
┌──┬──────────┬──────────────────────┐
│#│文献名称 │提取结果(文本块) │
└──┴──────────┴──────────────────────┘
📥 Excel导出
文件结构
Sheet 1: 提取结果
- 预设模板:8列数据
- 自定义模板:3列数据
Sheet 2: 任务信息
- 任务名称、模板类型
- 执行时间、完成时间
- 文献统计(总数、成功、失败)
- 总用时
文件名格式:
- 预设:
批处理结果_临床研究信息提取_2025-10-13.xlsx - 自定义:
批处理结果_自定义任务_2025-10-13.xlsx
⚡ 性能指标
| 指标 | 预期值 |
|---|---|
| 单文档处理 | 15-25秒 |
| 10篇总时长 | 5-8分钟 |
| 50篇总时长 | 25-40分钟 |
| JSON解析成功率 | >90% |
效率提升:
- 手动:10篇 × 10分钟 = 100分钟
- 批处理:10篇 × 20秒 = ~7分钟
- 提升约14倍 🚀
✅ 已完成的收尾工作
测试与修复(已完成)
- ✅ 类型定义 - 已更新
- ✅ 依赖安装 - xlsx已安装
- ✅ Frontend启动 - 正常运行
- ✅ 端到端测试 - 全流程测试通过
- ✅ 问题修复 - 5个问题已全部修复
修复的问题
- ✅ API导入路径错误
- ✅ 数据库用户数据缺失
- ✅ 批处理页面空白问题
- ✅ 结果页面布局问题(改为垂直布局)
- ✅ 表格显示优化(列宽、换行、滚动条)
详细修复记录:见 docs/05-每日进度/Phase3-最终测试-修复总结.md
✅ 验收清单(已完成)
功能测试
- 进入批处理模式(界面正常显示)✅
- 模板选择(预设/自定义切换)✅
- 文献选择(3-50篇限制生效)✅
- 执行任务(进度显示正常)✅
- 查看结果(表格显示正确)✅
- 导出Excel(文件格式正确)✅
- 重试失败项(如有失败)✅
边界测试
- 选择<3篇文献(应提示错误)✅
- 选择>50篇文献(应提示错误)✅
- 自定义模板空提示词(应提示错误)✅
- JSON解析失败(应标记失败,不影响其他)✅
UI优化测试
- 垂直布局显示正常 ✅
- 表格列宽合理 ✅
- 单元格内容换行显示 ✅
- 横向滚动条可用 ✅
- 牛津评级列固定右侧 ✅
📚 相关文档
设计文档
docs/05-每日进度/Phase3-批处理模式-完整设计.md(设计方案)
完成报告
docs/05-每日进度/Phase3-完成总结.md(完成总结)Phase3-Day1-后端完成总结.md(后端详情)
开发计划
docs/04-开发计划/开发里程碑.md(整体进度)
测试工具
backend/test-batch-api.js(API测试脚本)
💡 使用提示
最佳实践
文献数量:
- 首次测试:5-10篇
- 常规使用:10-20篇
- 大规模:30-50篇
模板选择:
- 标准临床研究 → 使用预设模板
- 特殊需求 → 使用自定义模板
性能优化:
- 避免超大文献(>200K tokens)
- 分批处理(如需处理100+篇)
- 优先使用DeepSeek-V3(快且便宜)
🎉 总结
Phase 3 批处理模式:
- ✅ 任务式交互(非对话)
- ✅ 双模板系统(预设8字段 + 自定义文本)
- ✅ 固定3并发(稳定可靠)
- ✅ 完整的Excel导出
- ✅ 友好的UI体验
- ✅ ~4,000行代码(6小时完成)
核心价值:
- 批量信息提取
- 结构化数据输出
- 效率提升14倍
- 可追溯、可归档
已完成:开发 + 测试 + 修复 + 优化 ✅
快速参考版本:2.0
最后更新:2025-10-12
状态:✅ 全部完成,已通过最终测试