# ASL 模块任务分解(To-do List? > **文档版本?* V3.2 > **创建日期?* 2025-11-16 > **适用阶段?* MVP(标题摘要初筛) > **预计周期?* 4 ? > **最后更新:** 2025-11-21 > **?重要:基于真实架构(Frontend-v2 + Backend + asl_schema?* > **📊 MVP核心功能进度?* ?100% 完成(Week 1-3 提前完成? > **📊 质量优化进度?* 🔄 60% 完成(准确率60%,目?5%? --- ## 📋 使用说明 本文档是 **ASL 标题摘要初筛模块** 的详细任务分解清单,基于 **真实的架构基础**?- ?Frontend-v2(顶部导?+ 模块注册? Week 2 已完?- ?Backend 增量演进(legacy/ + common/ + modules/? Week 2 已完?- ?数据?10个Schema隔离 - Week 1 已完? **任务状态标?*?- `[ ]` - 待开?- `[🔄]` - 进行?- `[✅]` - 已完?- `[❌]` - 已取?跳过 --- ## 🌥?云原生开发要求(2025-11-16 新增? > **?重要提醒**:所有任务必须遵循云原生开发规? > **详细规范**:[云原生开发规范](../../../04-开发规?08-云原生开发规?md) ### 核心要求 | 要求 | 说明 | |------|------| | ?**存储抽象?* | 使用 `StorageFactory`,支持本?OSS切换 | | ?**内存解析** | Excel导入使用 `xlsx.read(buffer)`,不落盘 | | ?**异步任务** | LLM筛选必须异步处理(> 10秒) | | ?**环境变量** | 所有配置从 `.env` 读取 | | ?**数据库连接池** | 使用全局 `prisma` 实例 | | ?**OSS字段预留** | `pdfUrl`, `pdfOssKey`, `pdfFileSize` | ### 每日检查清? 提交代码前必须确认: - [ ] 是否使用存储抽象层? - [ ] 是否避免文件落盘?- [ ] 是否使用全局 prisma 实例?- [ ] 是否所有配置都从环境变量读取? - [ ] 长时间任务是否异步处理? --- ## 🗓?Week 1: 数据库Schema与后端API框架(Day 1-5)✅ 已完? **完成日期**: 2025-11-18 **实际耗时**: 1天(提前4天) **完成报告**: [Week 1完成报告](../05-开发记?2025-11-18-Week1完成报告.md) **API测试**: [ASL-API测试报告](../../../../backend/ASL-API-测试报告.md) ### Day 1: Prisma Schema 设计 ? #### 数据库任? - [✅] **T1.1.1** 设计 asl_schema 表结? - 文件:`backend/prisma/schema.prisma` - 新增4个模型: - `AslScreeningProject`(筛选项目表? - `AslLiterature`(文献条目表? - `AslScreeningResult`(筛选结果表? - `AslScreeningTask`(筛选任务表? - 使用 `@@schema("asl_schema")` 指定Schema - **?新增要求(云原生?*:在 `AslLiterature` 中添?OSS 字段 - `pdfUrl String? @map("pdf_url")` - PDF访问URL - `pdfOssKey String? @map("pdf_oss_key")` - OSS存储Key - `pdfFileSize Int? @map("pdf_file_size")` - 文件大小(字节) - 说明:MVP阶段预留,V1.0阶段使用 - 预计耗时? 小时 - 负责人:后端开? - 参考:`02-标题摘要初筛开发计?md` Week 1 Day 1 - [✅] **T1.1.2** ?User 模型中添加关? ```prisma // backend/prisma/schema.prisma - User模型添加 aslProjects AslScreeningProject[] @relation("AslProjects") ``` - 实际耗时? 分钟 - 完成人:AI Assistant - [✅] **T1.1.3** 运行 Prisma 迁移 ```bash cd backend npx tsx scripts/create-asl-tables.ts # 手动SQL创建 ``` - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T1.1.4** 生成 Prisma Client ```bash npx prisma generate ``` - 实际耗时? 分钟 - 完成人:AI Assistant - [✅] **T1.1.5** 验证数据库表创建 - 使用脚本验证数据? - 检?asl_schema 下的4个表 ? - 检查索引和外键 ? - 实际耗时? 分钟 - 完成人:AI Assistant **Day 1 验收标准** ✅: - ?asl_schema 4张表创建成功 - ?Prisma Client 生成无错?- ?可查?asl_schema ? --- ### Day 2: 后端目录结构创建 ? > **?前置条件?025-11-17 更新?*:平台基础设施已完成实?? > **完成状?*?个核心模块,100%测试通过 > **完成报告**:[平台基础设施实施完成报告](../../../08-项目管理/03-每周计划/2025-11-17-平台基础设施实施完成报告.md) > **使用指南**:[backend/src/common/README.md](../../../../backend/src/common/README.md) #### 平台已提供的8个核心模块(ASL模块无需实现? **平台基础设施已完成(2025-11-17?*? | # | 服务 | 路径 | 使用方式 | 说明 | |---|------|------|---------|------| | 1 | 存储服务 | `common/storage/` | `import { storage } from '@/common/storage'` | 文件上传下载(本?OSS切换?| | 2 | 日志系统 | `common/logging/` | `import { logger } from '@/common/logging'` | 结构化JSON日志 | | 3 | 缓存服务 | `common/cache/` | `import { cache } from '@/common/cache'` | 内存/Redis缓存 | | 4 | 异步任务 | `common/jobs/` | `import { jobQueue } from '@/common/jobs'` | 长时间任务处?| | 5 | 健康检?| `common/health/` | `import { registerHealthRoutes } from '@/common/health'` | SAE健康检?| | 6 | 监控指标 | `common/monitoring/` | `import { Metrics } from '@/common/monitoring'` | 性能监控和告?| | 7 | 数据库连接池 | `config/database.ts` | `import { prisma } from '@/config/database'` | 全局Prisma实例 | | 8 | 环境配置 | `config/env.ts` | `import { env } from '@/config/env'` | 统一配置管理 | **示例代码**?```typescript // ASL模块直接使用平台服务 import { storage, logger, cache, jobQueue } from '@/common' import { prisma } from '@/config/database' import { Metrics } from '@/common/monitoring' // 上传文件 const url = await storage.upload('asl/literature/123.pdf', pdfBuffer) // 记录日志 logger.info('Literature uploaded', { projectId, url }) // 缓存数据 await cache.set(`project:${projectId}`, data, 3600) // 创建异步任务 const job = await jobQueue.push('asl:screening', { projectId }) // 记录监控指标 Metrics.recordAPIResponseTime('POST', '/api/v1/asl/screening', 200, 150) ``` **⚠️ 禁止的操作(必须遵守?*? | 禁止操作 | 正确做法 | 原因 | |---------|---------|------| | `fs.writeFileSync()` | 使用 `storage.upload()` | Serverless容器重启丢失文件 | | `new PrismaClient()` | 使用全局 `prisma` 实例 | 避免连接数暴增(已配置连接池?| | 硬编码配?| 使用 `process.env` ?`env` | 配置管理混乱 | | 同步处理LLM批量任务 | 使用 `jobQueue.push()` | 避免Serverless超时 | | 直接使用 `console.log()` | 使用 `logger.info()` | 日志格式标准?| | 自己实现缓存逻辑 | 使用 `cache.set()` / `cache.get()` | 平台已提供分布式缓存 | --- #### 后端任务 - [✅] **T1.2.1** 创建 ASL 模块目录结构 ```bash cd backend/src/modules mkdir -p asl/{routes,controllers,services,schemas,types,utils} ``` - 预计耗时? 分钟 - 负责人:后端开? - [ ] **T1.2.2** 创建路由文件 - `routes/index.ts` - 路由注册 - 实现占位函数(返?04或空数组? - 预计耗时?0 分钟 - 负责人:后端开? - [ ] **T1.2.3** 创建控制器文? - `controllers/projectController.ts` - 项目控制? - `controllers/literatureController.ts` - 文献控制? - `controllers/screeningController.ts` - 筛选控制器 - 创建占位函数(每个控制器5-7个函数) - 预计耗时? 小时 - 负责人:后端开? - [ ] **T1.2.4** 创建服务层文? - `services/projectService.ts` - 项目业务逻辑 - `services/literatureService.ts` - 文献业务逻辑 - `services/llmScreeningService.ts` - LLM筛选服? - 预计耗时?0 分钟 - 负责人:后端开? - [✅] **T1.2.5** 创建类型定义文件 ```typescript // types/screening.types.ts export interface Literature { ... } export interface ScreeningResult { ... } export interface Protocol { ... } ``` - 预计耗时?0 分钟 - 负责人:后端开? **Day 2 验收标准** ✅: - ?ASL 模块目录结构完整?个子目录?个文件) - ?所有占位文件创建完?- ?**可正常使用平台服务(8个核心模块)**? - ?`import { storage } from '@/common/storage'` 可用 - ?`import { logger } from '@/common/logging'` 可用 - ?`import { cache } from '@/common/cache'` 可用 - ?`import { jobQueue } from '@/common/jobs'` 可用 - ?`import { prisma } from '@/config/database'` 可用 - ?`import { Metrics } from '@/common/monitoring'` 可用 --- ### Day 3: 注册ASL路由 ? #### 后端任务 - [✅] **T1.3.1** 实现 `routes/index.ts` - 注册所有API路由 - 参?`legacy/routes/` 的风? - 预计耗时? 小时 - 负责人:后端开? - 参考:`02-标题摘要初筛开发计?md` Week 1 Day 2 - [✅] **T1.3.2** ?`src/index.ts` 中注册ASL路由 ```typescript import { aslRoutes } from './modules/asl/routes/index.js' await app.register(aslRoutes, { prefix: '/api/v1/asl' }) console.log('?ASL 路由已注册到 /api/v1/asl/*') ``` - 预计耗时?0 分钟 - 负责人:后端开? - [✅] **T1.3.3** 测试路由可访问? ```bash # 启动后端服务 cd backend && npm run dev # 测试健康检? curl http://localhost:3001/api/v1/asl/projects ``` - 预计耗时?0 分钟 - 负责人:后端开? **Day 3 验收标准** ✅: - ?后端服务正常启动 - ?ASL路由注册成功?api/v1/asl?- ?API可访问(10个端点) --- ### Day 4-5: 实现基础API ? #### 后端任务 - [✅] **T1.4.1** 实现 `projectService.ts` - `createProject(userId, data)` - 创建项目 - `listProjects(userId)` - 获取项目列表 - `getProject(projectId)` - 获取项目详情 - 使用 Prisma Client 操作 asl_schema - 预计耗时? 小时 - 负责人:后端开? - [✅] **T1.4.2** 实现 `projectController.ts` - `createProject` - 控制? - `listProjects` - 控制? - `getProject` - 控制? - 请求验证、响应格式化 - 预计耗时?.5 小时 - 负责人:后端开? - [✅] **T1.4.3** 实现 `literatureService.ts` - `importBatch(projectId, literatures)` - 批量导入 - `listLiteratures(projectId, page, pageSize)` - 分页查询 - 去重逻辑(基于DOI和标题) - 预计耗时? 小时 - 负责人:后端开? - [✅] **T1.4.4** 实现 `literatureController.ts` - `importLiteratures` - 导入控制? - `listLiteratures` - 列表控制? - Excel数据验证 - 预计耗时?.5 小时 - 负责人:后端开? - [✅] **T1.4.5** API测试(完整测试脚本) - 创建 Postman 测试集合 - 测试所有已实现的API - 预计耗时? 小时 - 负责人:后端开? **Day 4-5 验收标准** ✅: - ?项目管理API可调用(5个接口) - ?文献导入API可调用(4个接口) - ?数据正确保存?asl_schema - ?所有测试通过?/7 - 100%? --- ## 🗓?Week 2: LLM筛选核心(Day 6-10)✅ 已完? **完成日期**: 2025-11-21 **实际耗时**: 3? **完成报告**: [Prompt设计与测试完成报告](../05-开发记?2025-11-18-Prompt设计与测试完成报?md) **实际准确?*: 60%(目?5%,需优化? ### Day 6: JSON Schema 与提示词设计 ? #### 后端任务 - [✅] **T2.1.1** 定义 JSON Schema - 文件:`backend/src/modules/asl/schemas/screening.schema.ts` - 定义输出结构(decision, reason, confidence, pico? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.1.2** 安装验证? ```bash cd backend npm install ajv ``` - 实际耗时? 分钟 - 完成人:AI Assistant - [✅] **T2.1.3** 编写 Schema 验证函数 - 使用 `Ajv` 验证 - 错误信息格式? - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T2.1.4** 设计提示词模?v1.0.0 - 文件:`backend/prompts/asl/screening/v1.0.0-mvp.txt` - 包含:PICO标准、纳排标准、输出格? - 实际耗时? 小时 - 完成人:AI Assistant + 用户 - [✅] **T2.1.5** 人工测试提示? - 手动调用 LLM(使?10 篇样本) - 评估输出质量 - 迭代优化提示? - 实际耗时? 小时 - 完成人:AI Assistant + 用户 **Day 6 验收标准** ✅: - ?JSON Schema 定义完成 - ⚠️ 提示词人工测试准确率 60%(目?0%,需后续优化? --- ### Day 7: LLM 服务封装 ? #### 后端任务 - [✅] **T2.2.1** 创建 `llmScreeningService.ts` - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T2.2.2** 实现 `callModel` 方法 - 调用 `LLMFactory.createLLM()`(复?common/llm? - 设置参数(temperature: 0? - 错误处理 - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.2.3** 实现 `parseModelOutput` 方法 - JSON 解析(使?`common/utils/jsonParser.js`? - Schema 验证 - 格式化为 `ModelDecision` - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.2.4** 实现 `compareDecisions` 方法 - 对比两个模型?PICO 判断 - 识别冲突字段(仅结论不一致) - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.2.5** 实现 `shouldReview` 方法 - 自动分流规则 - 置信度阈值(< 0.7? - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T2.2.6** 实现 `dualModelScreening` 方法 - 并行调用两个模型(`Promise.all`? - 汇总结? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.2.7** 单元测试 - 测试 JSON 解析 - 测试冲突检? - 测试分流规则 - 实际耗时? 小时 - 完成人:AI Assistant **Day 7 验收标准** ✅: - ?可成功调?DeepSeek ?Qwen3 - ?JSON Schema 验证通过?100% - ?冲突检测准确(仅结论不一致) --- ### Day 8: 批量筛选任务管?? #### 后端任务 - [✅] **T2.3.1** 实现 `batchScreening` 方法 - 串行处理(避免API限流? - 进度计算 - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.3.2** 实现任务创建 - `screeningService.startScreeningTask` - 初始化任务记录(AslScreeningTask表) - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.3.3** 实现任务状态更? - `screeningService.processLiteraturesInBackground` - 更新 processedItems, deepseekProcessed, qwenProcessed ? - 实际耗时?.5 小时 - 完成人:AI Assistant - [✅] **T2.3.4** 实现结果保存 - 单篇保存?`AslScreeningResult` ? - 冲突检测(仅结论不一致) - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.3.5** 错误处理和重? - 单篇失败不影响整? - 记录错误信息 - 实际耗时? 小时 - 完成人:AI Assistant **Day 8 验收标准** ✅: - ?可批量处?199 篇文献(串行?- ?任务状态正确记?- ?结果正确保存到数据库 - ?进度实时更新(每1条) --- ### Day 9: 筛?API 开?? #### 后端任务 - [✅] **T2.4.1** 实现启动筛?API - 自动在文献导入后启动(`literatureController.importLiteratures`? - 创建任务 - **?云原生要?*:异步执行筛选(立即返回taskId,后台处理) - 避免请求超时(SAE默认30秒超时限制) - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.4.2** 实现进度查询 API - `GET /api/v1/asl/projects/:projectId/screening-task` - 返回实时进度(总数、已处理、成功、冲突、失败、DS处理数、Qwen处理数) - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.4.3** 实现结果查询 API - `GET /api/v1/asl/projects/:projectId/screening-results` - 支持过滤(all, conflict, included, excluded, reviewed? - 分页(后端分页) - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.4.4** 实现更新决策 API - `POST /api/v1/asl/screening-results/:resultId/review` - 人工复核提交 - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T2.4.5** Postman 测试 - 创建测试集合 - 测试各种场景 - 实际耗时? 小时 - 完成人:AI Assistant **Day 9 验收标准** ✅: - ?API 调用成功 - ?任务可异步执?- ?进度查询实时准确?秒轮询) --- ### Day 10: 后端集成测试 ? #### 后端任务 - [✅] **T2.5.1** 端到端测试(199篇文献) - 导入文献 ?自动启动筛??查询结果 - 实际耗时? 小时执行 + 1小时分析 - 完成人:AI Assistant + 用户 - [✅] **T2.5.2** 性能测试 - 测试 199 篇文献筛选时? - 实际:约33-66分钟(串行处理) - 实际耗时? 小时 - 完成人:AI Assistant + 用户 - [✅] **T2.5.3** 质量评估 - 计算准确率(对比金标准) - 计算双模型一致率 - 计算冲突? - 实际耗时? 小时 - 完成人:AI Assistant + 用户 - **结果**:准确率60%, 一致率70-100%, JSON验证?00% - [✅] **T2.5.4** 修复 Bug - 修复字段映射问题(PICOS、模型名称) - 修复列表顺序问题 - 修复进度显示问题 - 实际耗时? 小时 - 完成人:AI Assistant **Week 2 总验收标?* ⚠️ 部分达标?- ?可成功筛?199 篇文?- ⚠️ 准确?60%(目?5%,需Prompt优化?- ?双模型一致率 70-100% - ⚠️ 性能?99篇约33-66分钟(串行处理,可优化为并发?- ?JSON Schema验证?00% --- ## 🗓?Week 3: 前端模块开发(Day 11-15)✅ 已完? **完成日期**: 2025-11-21 **实际耗时**: 2? **完成报告**: [Week2-Day2完成报告](../05-开发记?2025-11-19-Week2-Day2完成报告.md) **说明**: Week 3任务实际在Week 2完成 ### Day 11: 前端模块结构创建 ? #### 前端任务 - [✅] **T3.1.1** 更新 `modules/asl/index.tsx` - 创建左侧导航布局(ASLLayout? - 7个主模块,标题摘要初筛含3个子页面 - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.1.2** 创建 ASL 子目? ```bash cd frontend-v2/src/modules/asl mkdir pages components api hooks types utils ``` - 实际耗时? 分钟 - 完成人:AI Assistant - [✅] **T3.1.3** 创建路由配置 - 直接?`index.tsx` 中使?`` 定义 - 使用 `lazy()` 懒加? - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T3.1.4** 创建3个主页面 - `pages/TitleScreeningSettings.tsx` - 设置与启? - `pages/ScreeningWorkbench.tsx` - 审核工作? - `pages/ScreeningResults.tsx` - 初筛结果(占位) - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T3.1.5** 测试路由 - 启动前端:`cd frontend-v2 && npm run dev` - 访问 `http://localhost:3001/literature` - 确认顶部导航显示"AI智能文献" - 实际耗时?0 分钟 - 完成人:AI Assistant + 用户 **Day 11 验收标准** ✅: - ?顶部导航显示"AI智能文献" - ?左侧导航显示7个模?- ?点击后进?设置与启?页面 --- ### Day 12: Excel 上传功能 ? #### 前端任务 - [✅] **T3.2.1** 安装依赖 ```bash cd frontend-v2 npm install xlsx ``` - 实际耗时? 分钟 - 完成人:AI Assistant - [✅] **T3.2.2** 创建 Excel上传组件 - 集成?`TitleScreeningSettings.tsx` ? - 文件选择(`antd Upload.Dragger`? - 文件类型验证?xls, .xlsx? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.2.3** 实现 Excel 解析逻辑 - 使用 `xlsx` 库解? - **?云原生要?*:内存解?`xlsx.read(buffer)`,禁止落? - 字段映射(Title/title ?title,支持中英文? - 数据验证(title和abstract必填? - 文件:`utils/excelUtils.ts` - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.2.4** 实现去重逻辑 - 基于 DOI 去重(优先) - 基于标题去重(标准化,去空格/标点? - 去重统计展示 - 文件:`utils/excelUtils.ts` - 实际耗时?.5 小时 - 完成人:AI Assistant - [✅] **T3.2.5** 实现文献预览表格 - 使用 `Ant Design Table` - 显示:序号、标题、摘要、作者、年份、期刊、PMID、DOI - 固定列宽、Tooltip显示全文 - 无分页(内存中) - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.2.6** 实现Excel模板下载 - 生成包含字段说明的Excel模板 - 两个Sheet:文献列表、字段说? - 实际耗时? 小时 - 完成人:AI Assistant **Day 12 验收标准** ✅: - ?可成功上?Excel 文件 - ?解析后数据正确展?- ?去重功能正常(DOI优先,标题辅助) - ?Excel模板下载正常 --- ### Day 13: API 客户端封?? #### 前端任务 - [✅] **T3.3.1** 创建 API 客户? - `api/index.ts` - 使用 `fetch` + 统一错误处理 - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.3.2** 实现项目 API - `createProject(data)` - `listProjects()` - `getProject(id)` - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.3.3** 实现文献 API - `importLiteratures(projectId, literatures)` - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T3.3.4** 实现筛?API - `getScreeningTask(projectId)` - 获取任务进度 - `getScreeningResultsList(projectId, params)` - 获取结果列表 - `getScreeningResultDetail(resultId)` - 获取结果详情 - `reviewScreeningResult(resultId, data)` - 人工复核 - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.3.5** 前后端联? - 测试所有API调用 - 错误处理(统一message提示? - Loading 状? - 实际耗时? 小时 - 完成人:AI Assistant + 用户 **Day 13 验收标准** ✅: - ?API 客户端可正常调用后端 - ?上传Excel后数据保存到数据?- ?自动启动筛选任? --- ### Day 14-15: 审核工作台(核心UI)✅ #### 前端任务 - [✅] **T3.4.1** 实现 `ScreeningWorkbench` 页面 - 任务进度显示(轮??次) - 双行表格结构(使用`rowSpan`? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.4.2** 实现表头 - 序号、文献标题、结论、操作、模型、P、I、C、S - 压缩列宽、模型名缩写(DS/Qw? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.4.3** 实现主行(双行) - 点击标题展开/收起证据 - 文献标题、DS和Qwen的PICO判断(单字母? - 冲突状态(红色背景? - 结论Tag(纳?排除? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.4.4** 实现展开? - 显示DS和Qwen的详细PICOS判断、证据、理? - 两栏布局(左DS,右Qwen? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.4.5** 实现冲突高亮 - 冲突行背景色浅红(仅结论不一致) - 冲突Tag显示 - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.4.6** 实现复核Drawer - 使用 `Ant Design Drawer`?000px宽) - 左侧70%:文献详情、模型判断、证? - 右侧30%:人工复核表单(sticky? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.4.7** 实现筛选Tab - 全部、冲突、已纳入、已排除、已复核 - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T3.4.8** 实现分页 - 后端分页?0?页) - 实际耗时?0 分钟 - 完成人:AI Assistant **Day 14-15 验收标准** ✅: - ?审核工作台完整可?- ?表格可正确展示筛选结果(双行?- ?冲突项高亮显示(红色背景?- ?复核Drawer可弹出并提交 - ?进度实时更新?秒轮询) - ?列表顺序与Excel上传一? --- ## 🗓?Week 4: 结果展示与集成测试(Day 16-20)✅ 已完? **完成日期**: 2025-11-21 **实际耗时**: 1天(3小时? **完成报告**: [Week4完成报告](../05-开发记?2025-11-21-Week4完成报告.md) **架构验证**: ?完全符合云原生开发规? ### Day 16: 结果统计与展?? #### 前端任务 - [✅] **T4.1.1** 实现统计概览卡片 - 4个卡片(总数、纳入、排除、待复核? - 使用 `Ant Design Statistic` - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T4.1.2** 实现 PRISMA 式排除总结 - 按排除原因分组统计(后端聚合? - 柱状图展示(Progress组件? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T4.1.3** 实现结果列表 Tab ? - 全部、已纳入、已排除、待复核 Tab - Tab数量动态显? - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T4.1.4** 实现结果表格(混合方案) - 列:序号、标题、AI共识、排除原因、人工最终决策、状态、操? - 可点击标题展开查看双模型详细判? - 总宽?70px(无需横向滚动? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T4.1.5** 实现后端统计API - GET /projects/:projectId/statistics - Prisma并行聚合查询 - 实际耗时? 小时 - 完成人:AI Assistant **Day 16 验收标准** ✅: - ?统计数据正确展示 - ?PRISMA 排除总结清晰 - ?结果列表可正常查?- ?混合方案解决逻辑矛盾 - ?云原生架构验证通过 --- ### Day 17: Excel 导出功能 #### 后端任务 - [ ] **T4.2.1** 后端实现导出逻辑 - 使用 `exceljs` ? - 生成 Excel 文件 - 预计耗时? 小时 - 负责人:后端开? - [ ] **T4.2.2** 实现导出 API - `GET /api/v1/asl/projects/:id/screening/results/export` - 支持过滤参数(导出全?仅纳?仅排除) - 预计耗时?.5 小时 - 负责人:后端开? #### 前端任务 - [ ] **T4.2.3** 前端实现导出按钮 - 调用导出 API - 下载文件 - 预计耗时? 小时 - 负责人:前端开? - [✅] **T4.2.1** 创建Excel导出工具 - 文件:`utils/excelExport.ts` - 使用 `xlsx` 库(前端生成,零文件落盘? - 实际耗时?.5 小时 - 完成人:AI Assistant - [✅] **T4.2.2** 实现导出功能 - 导出统计摘要?个Sheet? - 导出初筛结果(当前Tab? - 导出选中? - 实际耗时? 小时 - 完成人:AI Assistant - [✅] **T4.2.3** Excel格式优化(混合方案) - ?0列完整信? - 包含AI共识、双模型详细判断、人工决? - 一行显示全部信? - 自动设置列宽 - 实际耗时?0 分钟 - 完成人:AI Assistant **Day 17 验收标准** ✅: - ?可成功导?Excel?种方式) - ?导出格式规范?0列) - ?数据完整准确 - ?云原生:前端生成,零文件落盘 --- ### Day 18: 完整流程测试 ? #### 集成测试任务 - [✅] **T4.3.1** 端到端完整流程测? - 上传 ?筛??复核 ?统计 ?导出 - 使用真实?7 篇测试数? - 实际耗时? 小时 - 完成人:AI Assistant + 用户 - [✅] **T4.3.2** UI/UX优化 - 修复逻辑矛盾(纳入不显示排除原因? - 实现混合方案(AI共识+人工决策? - 优化表格宽度?70px,无需滚动? - 实际耗时? 小时 - 完成人:AI Assistant + 用户 - [✅] **T4.3.3** 性能测试 - 统计API?500ms?99篇) - Excel导出?3秒(199篇) - 实际耗时?0 分钟 - 完成人:AI Assistant - [✅] **T4.3.4** 创建快速测试工? - `scripts/get-test-projects.mjs` - 自动推荐有数据的项目 - 生成测试URL - 实际耗时?0 分钟 - 完成人:AI Assistant **Day 18 验收标准** ✅: - ?完整流程无阻?- ?混合方案解决问题 - ?性能达标 - ?符合云原生规? --- ### Day 19: 质量验收 #### 质量验收任务 - [ ] **T4.4.1** 准确率测? - 使用金标准数据集?99 篇) - 计算准确率、召回率、F1 - 目标:准确率 ?85% - 预计耗时? 小时 - 负责人:AI工程?+ 医学专家 - [ ] **T4.4.2** 双模型一致性测? - 计算一致率 - 目标:≥ 80% - 预计耗时? 小时 - 负责人:AI工程? - [ ] **T4.4.3** JSON Schema 验证率测? - 统计验证通过? - 目标:≥ 95% - 预计耗时?0 分钟 - 负责人:后端开? - [ ] **T4.4.4** 人工复核队列测试 - 统计需人工复核的比? - 目标:≤ 20% - 预计耗时?0 分钟 - 负责人:AI工程? - [ ] **T4.4.5** 根据测试结果优化 - 调整提示? - 调整分流阈? - 预计耗时? 小时 - 负责人:AI工程? **Day 19 验收标准**?- ?准确??85% - ?双模型一致率 ?80% - ?JSON Schema 验证通过??95% - ?人工复核队列 ?20% --- ### Day 20: 文档与交? #### 文档任务 - [ ] **T4.5.1** 编写用户手册 - 功能介绍 - 操作步骤 - 常见问题 - 预计耗时? 小时 - 负责人:产品经理 - [ ] **T4.5.2** 编写技术文? - 架构设计 - API 文档 - 数据库设? - 预计耗时? 小时 - 负责人:后端开? - [ ] **T4.5.3** 编写测试报告 - 测试用例 - 测试结果 - 质量指标 - 预计耗时? 小时 - 负责人:测试 - [ ] **T4.5.4** 代码审查 - 代码规范检? - 安全性检? - 性能检? - 预计耗时? 小时 - 负责人:技?Leader - [ ] **T4.5.5** 准备演示环境 - 部署到测试环? - 准备演示数据 - 预计耗时? 小时 - 负责人:运维 **Day 20 验收标准**?- ?文档完整 - ?代码质量合格 - ?测试报告完整 - ?演示环境就绪 --- ## 📊 总体验收清单?025-11-21 更新? ### 功能完整性(MVP核心? - [✅] 用户可上?Excel 文件 - [✅] Excel 格式验证正常(中英文表头?- [✅] 文献去重功能正常(DOI优先,标题辅助) - [✅] AI 双模型筛选可运行(DeepSeek + Qwen?- [✅] 冲突自动检测和标记(仅结论不一致) - [✅] 人工复核界面完整(DetailReviewDrawer?- [✅] 批量选择功能正常(Checkbox多选) - [✅] 结果统计正确展示(统计概?PRISMA排除分析?- [✅] Excel 导出功能正常?种导出方式) - [✅] ASL模块在顶部导航显示并可点?- [✅] 混合方案解决逻辑矛盾(AI决策+人工决策明确区分? ### 质量指标 - [⚠️] 准确?60%?*目标85%,需Prompt优化**?- [✅] 双模型一致率 70-100% - [✅] JSON Schema 验证通过?100% - [⚠️] 人工复核队列 20-30%(目标≤20%? ### 性能指标 - [⚠️] 199 篇文献筛?33-66 分钟(串行,**可优化为3-5并发**?- [✅] Excel 上传响应 < 1 秒(内存解析?- [✅] 页面加载 < 2 ? ### 架构验证 - [✅] ASL模块正确注册(左侧导航) - [✅] 后端路由注册?/api/v1/asl/* - [✅] 数据保存?asl_schema - [✅] 复用 common/llm 成功(LLMFactory?- [✅] Prisma Client 正常工作(全局实例?- [✅] 云原生要求:内存解析Excel - [✅] 云原生要求:异步处理筛选任? --- --- ## 🚀 Phase 2: 智能Prompt生成模块(Week 5-7? > **前置条件**: MVP阶段(Week 1-4)完? > **开发周?*: 3? > **优先?*: P1(高级功能) > **详细设计**: [智能Prompt生成模块开发计划](../02-技术设?07-智能Prompt生成模块开发计?md) ### 核心目标 **解决问题**: 消除AI与人类对边界情况的理解差? **核心流程**: ``` 用户输入PICOS ?AI分析边界情况 ?用户确认 ?生成自定义Prompt ?筛?``` --- ### 🗓?Week 5: 后端开发(Day 21-25? #### Day 21-22: PICOS分析服务 - [ ] **T5.1.1** 创建Prompt配置数据? - 文件:`backend/prisma/schema.prisma` - 新增模型:`PromptConfiguration` - 预计耗时?小时 - [ ] **T5.1.2** 实现PICOS分析服务 - 文件:`backend/src/modules/asl/services/picosAnalyzer.ts` - 功能:调用LLM分析PICOS,生成边界问? - 预计耗时?? - [ ] **T5.1.3** API: 分析PICOS - 路由:`POST /api/v1/asl/prompt/analyze` - 预计耗时?小时 #### Day 23: Prompt生成服务 - [ ] **T5.2.1** 实现Prompt生成逻辑 - 文件:`backend/src/modules/asl/services/promptGenerator.ts` - 预计耗时?? - [ ] **T5.2.2** API: 确认边界规则并生成Prompt - 路由:`POST /api/v1/asl/prompt/confirm-rules` - 预计耗时?小时 #### Day 24: Prompt保存与使? - [ ] **T5.3.1** API: 保存最终Prompt - 路由:`POST /api/v1/asl/prompt/save` - 预计耗时?小时 - [ ] **T5.3.2** 修改筛选服务支持自定义Prompt - 新增参数:`customPromptOverride?: string` - 预计耗时?小时 #### Day 25: 测试与优? - [ ] **T5.4.1** 单元测试 - 预计耗时?小时 - [ ] **T5.4.2** 集成测试 - 预计耗时?小时 --- ### 🗓?Week 6: 前端开发(Day 26-30? #### Day 26: PICOS输入界面 - [ ] **T6.1.1** 创建PICOS配置页面 - 路径:`/asl/projects/:id/prompt-config` - 预计耗时?小时 - [ ] **T6.1.2** PICOS输入表单组件 - 7个输入字? - 预计耗时?小时 #### Day 27-28: 用户确认界面 - [ ] **T6.2.1** AI理解展示组件 - 显示必须纳入/排除的要? - 预计耗时?? - [ ] **T6.2.2** 边界问题确认组件 - 逐个确认边界问题 - 预计耗时?? #### Day 29: Prompt编辑? - [ ] **T6.3.1** Prompt预览与编辑组? - 支持用户编辑和保? - 预计耗时?? #### Day 30: 集成与测? - [ ] **T6.4.1** 完整流程集成 - 预计耗时?小时 - [ ] **T6.4.2** UI/UX优化 - 预计耗时?小时 --- ### 🗓?Week 7: 优化与上线(Day 31-35? #### Day 31-32: 功能完善 - [ ] **T7.1.1** Prompt模板管理 - 预计耗时?? - [ ] **T7.1.2** 在筛选任务中使用自定义Prompt - 预计耗时?小时 #### Day 33: 测试 - [ ] **T7.2.1** 端到端测? - 预计耗时?? #### Day 34-35: 优化与上? - [ ] **T7.3.1** 性能优化 - 预计耗时?小时 - [ ] **T7.3.2** 用户文档 - 预计耗时?小时 - [ ] **T7.3.3** 上线部署 - 预计耗时?小时 --- ### Phase 2 验收标准 - [ ] 用户可以输入PICOS和纳排标?- [ ] AI可以分析并生?-8个边界问?- [ ] 用户可以确认每个边界问题的处理方?- [ ] 系统可以自动生成自定义Prompt - [ ] 用户可以编辑生成的Prompt - [ ] 筛选任务可以使用自定义Prompt - [ ] Prompt生成准确??90% --- ## 📊 完整进度跟踪?025-11-21 更新? | 阶段 | Week | 任务 | 状?| 完成时间 | 备注 | |------|------|------|------|----------|------| | **MVP** | Week 1 | 数据?后端API | ?| 2025-11-18 | 提前4天完?| | **MVP** | Week 2 | LLM筛选核?| ?| 2025-11-21 | 准确?0%,需优化 | | **MVP** | Week 3 | 前端UI(设?工作台) | ?| 2025-11-21 | 实际在Week 2完成 | | **MVP** | Week 4 | 结果展示+导出 | ?| 2025-11-21 | **混合方案,云原生架构** | | **MVP优化** | - | **Prompt优化** | 🔄 | - | **下一步:提升?5%** | | **MVP优化** | - | 并发处理优化 | ⏸️ | - | 3-5并发,提升性能 | | **Phase 2** | Week 5 | 智能Prompt后端 | ?| - | 待MVP质量达标后开?| | **Phase 2** | Week 6 | 智能Prompt前端 | ?| - | - | | **Phase 2** | Week 7 | 优化+上线 | ?| - | - | --- ## 📚 相关文档 - [开发里程碑](./01-开发里程碑.md) - [标题摘要初筛开发计划](./02-标题摘要初筛开发计?md) - [质量保障策略](../02-技术设?06-质量保障与可追溯策略.md) - [技术选型](../02-技术设?07-文献处理技术选型.md) - [API 设计规范](../02-技术设?02-API设计规范.md) - [智能Prompt生成模块](../02-技术设?07-智能Prompt生成模块开发计?md) ?**新增** - [前后端模块化架构设计-V2](../../../00-系统总体设计/前后端模块化架构设计-V2.md) - [Schema隔离架构设计](../../../09-架构实施/01-Schema隔离架构设计?0个).md) --- **更新日志**?- 2025-11-21: V3.3 更新,Week 4功能完成(结果展?Excel导出,混合方案解决逻辑矛盾?- 2025-11-21: V3.2 更新,反映MVP核心功能完成状态(Week 1-3已完成,准确?0%需优化?- 2025-11-18: V4.0 更新,整合智能Prompt生成模块(Phase 2: Week 5-7?- 2025-11-18: V3.1 更新,补充平台基础设施完成状态(8个核心模块,禁止操作清单?- 2025-11-16: V3.0 完全重写,基于真实架构(Frontend-v2 + Backend + asl_schema),详细到每个任?- 2025-11-16: V2.0 完全重写,详细到每个任务(预计耗时、负责人、验收标准) - 2025-10-29: V1.0 创建,初始占位符