Files
AIclinicalresearch/docs/03-业务模块/ASL-AI智能文献/04-开发计划/03-任务分解.md
HaHafeng 3634933ece refactor(asl): ASL frontend architecture refactoring with left navigation
- feat: Create ASLLayout component with 7-module left navigation
- feat: Implement Title Screening Settings page with optimized PICOS layout
- feat: Add placeholder pages for Workbench and Results
- fix: Fix nested routing structure for React Router v6
- fix: Resolve Spin component warning in MainLayout
- fix: Add QueryClientProvider to App.tsx
- style: Optimize PICOS form layout (P+I left, C+O+S right)
- style: Align Inclusion/Exclusion criteria side-by-side
- docs: Add architecture refactoring and routing fix reports

Ref: Week 2 Frontend Development
Scope: ASL module MVP - Title Abstract Screening
2025-11-18 21:51:51 +08:00

1139 lines
31 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ASL 模块任务分解To-do List
> **文档版本:** V3.1
> **创建日期:** 2025-11-16
> **适用阶段:** MVP标题摘要初筛
> **预计周期:** 4 周
> **最后更新:** 2025-11-18
> **⭐ 重要基于真实架构Frontend-v2 + Backend + asl_schema**
> **📊 Week 1 进度:** ✅ 100% 完成提前4天完成
---
## 📋 使用说明
本文档是 **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阶段使用
- 预计耗时2 小时
- 负责人:后端开发
- 参考:`02-标题摘要初筛开发计划.md` Week 1 Day 1
- [✅] **T1.1.2** 在 User 模型中添加关联
```prisma
// backend/prisma/schema.prisma - User模型添加
aslProjects AslScreeningProject[] @relation("AslProjects")
```
- 实际耗时5 分钟
- 完成人AI Assistant
- [✅] **T1.1.3** 运行 Prisma 迁移
```bash
cd backend
npx tsx scripts/create-asl-tables.ts # 手动SQL创建
```
- 实际耗时10 分钟
- 完成人AI Assistant
- [✅] **T1.1.4** 生成 Prisma Client
```bash
npx prisma generate
```
- 实际耗时3 分钟
- 完成人AI Assistant
- [✅] **T1.1.5** 验证数据库表创建
- 使用脚本验证数据库
- 检查 asl_schema 下的4个表 ✅
- 检查索引和外键 ✅
- 实际耗时5 分钟
- 完成人AI Assistant
**Day 1 验收标准** ✅:
- ✅ asl_schema 4张表创建成功
- ✅ Prisma Client 生成无错误
- ✅ 可查询 asl_schema 表
---
### Day 2: 后端目录结构创建 ✅
> **⭐ 前置条件2025-11-17 更新)**:平台基础设施已完成实施 ✅
> **完成状态**8个核心模块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}
```
- 预计耗时5 分钟
- 负责人:后端开发
- [ ] **T1.2.2** 创建路由文件
- `routes/index.ts` - 路由注册
- 实现占位函数返回404或空数组
- 预计耗时30 分钟
- 负责人:后端开发
- [ ] **T1.2.3** 创建控制器文件
- `controllers/projectController.ts` - 项目控制器
- `controllers/literatureController.ts` - 文献控制器
- `controllers/screeningController.ts` - 筛选控制器
- 创建占位函数每个控制器5-7个函数
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T1.2.4** 创建服务层文件
- `services/projectService.ts` - 项目业务逻辑
- `services/literatureService.ts` - 文献业务逻辑
- `services/llmScreeningService.ts` - LLM筛选服务
- 预计耗时30 分钟
- 负责人:后端开发
- [✅] **T1.2.5** 创建类型定义文件
```typescript
// types/screening.types.ts
export interface Literature { ... }
export interface ScreeningResult { ... }
export interface Protocol { ... }
```
- 预计耗时30 分钟
- 负责人:后端开发
**Day 2 验收标准** ✅:
- ✅ ASL 模块目录结构完整5个子目录9个文件
- ✅ 所有占位文件创建完成
- ✅ **可正常使用平台服务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/` 的风格
- 预计耗时1 小时
- 负责人:后端开发
- 参考:`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/*')
```
- 预计耗时10 分钟
- 负责人:后端开发
- [✅] **T1.3.3** 测试路由可访问性
```bash
# 启动后端服务
cd backend && npm run dev
# 测试健康检查
curl http://localhost:3001/api/v1/asl/projects
```
- 预计耗时10 分钟
- 负责人:后端开发
**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
- 预计耗时2 小时
- 负责人:后端开发
- [✅] **T1.4.2** 实现 `projectController.ts`
- `createProject` - 控制器
- `listProjects` - 控制器
- `getProject` - 控制器
- 请求验证、响应格式化
- 预计耗时1.5 小时
- 负责人:后端开发
- [✅] **T1.4.3** 实现 `literatureService.ts`
- `importBatch(projectId, literatures)` - 批量导入
- `listLiteratures(projectId, page, pageSize)` - 分页查询
- 去重逻辑基于DOI和标题
- 预计耗时2 小时
- 负责人:后端开发
- [✅] **T1.4.4** 实现 `literatureController.ts`
- `importLiteratures` - 导入控制器
- `listLiteratures` - 列表控制器
- Excel数据验证
- 预计耗时1.5 小时
- 负责人:后端开发
- [✅] **T1.4.5** API测试完整测试脚本
- 创建 Postman 测试集合
- 测试所有已实现的API
- 预计耗时1 小时
- 负责人:后端开发
**Day 4-5 验收标准** ✅:
- ✅ 项目管理API可调用5个接口
- ✅ 文献导入API可调用4个接口
- ✅ 数据正确保存到 asl_schema
- ✅ 所有测试通过7/7 - 100%
---
## 🗓️ Week 2: LLM筛选核心Day 6-10
### Day 6: JSON Schema 与提示词设计
#### 后端任务
- [ ] **T2.1.1** 定义 JSON Schema
- 文件:`backend/src/modules/asl/schemas/screening.schema.ts`
- 定义输出结构decision, reason, confidence, pico
- 预计耗时1 小时
- 负责人:后端开发 + AI工程师
- [ ] **T2.1.2** 安装验证库
```bash
cd backend
npm install ajv
```
- 预计耗时5 分钟
- 负责人:后端开发
- [ ] **T2.1.3** 编写 Schema 验证函数
- 使用 `Ajv` 验证
- 错误信息格式化
- 预计耗时30 分钟
- 负责人:后端开发
- [ ] **T2.1.4** 设计提示词模板 v1.0.0
- 文件:`backend/prompts/asl/screening/v1.0.0-basic.txt`
- 包含PICO标准、纳排标准、输出格式
- 预计耗时2 小时
- 负责人AI工程师 + 医学专家
- [ ] **T2.1.5** 人工测试提示词
- 手动调用 LLM使用 10 篇样本)
- 评估输出质量
- 迭代优化提示词
- 预计耗时2 小时
- 负责人AI工程师
**Day 6 验收标准**
- ✅ JSON Schema 定义完成
- ✅ 提示词人工测试准确率 ≥ 80%
---
### Day 7: LLM 服务封装
#### 后端任务
- [ ] **T2.2.1** 创建 `llmScreeningService.ts`
- 预计耗时10 分钟
- 负责人:后端开发
- [ ] **T2.2.2** 实现 `callModel` 方法
- 调用 `LLMFactory.createLLM()`(复用 common/llm
- 设置参数temperature: 0
- 错误处理
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.2.3** 实现 `parseModelOutput` 方法
- JSON 解析(使用 `common/utils/jsonParser.js`
- Schema 验证
- 格式化为 `ModelDecision`
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.2.4** 实现 `compareDecisions` 方法
- 对比两个模型的 PICO 判断
- 识别冲突字段
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.2.5** 实现 `shouldReview` 方法
- 自动分流规则
- 置信度阈值(< 0.7
- 预计耗时30 分钟
- 负责人:后端开发
- [ ] **T2.2.6** 实现 `dualModelScreening` 方法
- 并行调用两个模型(`Promise.all`
- 汇总结果
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.2.7** 单元测试
- 测试 JSON 解析
- 测试冲突检测
- 测试分流规则
- 预计耗时2 小时
- 负责人:后端开发
**Day 7 验收标准**
- ✅ 可成功调用 DeepSeek 和 Qwen3
- ✅ JSON Schema 验证通过率 > 95%
- ✅ 冲突检测准确
---
### Day 8: 批量筛选任务管理
#### 后端任务
- [ ] **T2.3.1** 实现 `batchScreening` 方法
- 分组逻辑15篇/组)
- 并行处理(`Promise.all`
- 进度计算
- 预计耗时2 小时
- 负责人:后端开发
- [ ] **T2.3.2** 实现任务创建
- `screeningService.createTask`
- 初始化任务记录AslScreeningTask表
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.3.3** 实现任务状态更新
- `screeningService.updateTaskProgress`
- 更新 processedItems, successItems 等
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.3.4** 实现结果保存
- `screeningService.saveResults`
- 批量保存到 `AslScreeningResult` 表
- 预计耗时1.5 小时
- 负责人:后端开发
- [ ] **T2.3.5** 错误处理和重试
- 单篇失败不影响整体
- 记录错误信息
- 预计耗时1 小时
- 负责人:后端开发
**Day 8 验收标准**
- ✅ 可批量处理 100 篇文献
- ✅ 任务状态正确记录
- ✅ 结果正确保存到数据库
---
### Day 9: 筛选 API 开发
#### 后端任务
- [ ] **T2.4.1** 实现启动筛选 API
- `POST /api/v1/asl/projects/:id/screening/start`
- 创建任务
- **⭐ 云原生要求**异步执行筛选立即返回taskId后台处理
- 避免请求超时SAE默认30秒超时限制
- 预计耗时2 小时
- 负责人:后端开发
- 参考:[云原生开发规范 - 原则5](../../../04-开发规范/08-云原生开发规范.md)
- [ ] **T2.4.2** 实现进度查询 API
- `GET /api/v1/asl/screening/tasks/:taskId/progress`
- 返回实时进度
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.4.3** 实现结果查询 API
- `GET /api/v1/asl/projects/:id/screening/results`
- 支持过滤conflictOnly, finalDecision
- 分页
- 预计耗时1.5 小时
- 负责人:后端开发
- [ ] **T2.4.4** 实现更新决策 API
- `PUT /api/v1/asl/screening/results/:id`
- `POST /api/v1/asl/screening/results/batch-update`
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.4.5** Postman 测试
- 创建测试集合
- 测试各种场景
- 预计耗时1 小时
- 负责人:后端开发
**Day 9 验收标准**
- ✅ API 调用成功
- ✅ 任务可异步执行
- ✅ 进度查询实时准确
---
### Day 10: 后端集成测试
#### 后端任务
- [ ] **T2.5.1** 端到端测试50篇文献
- 导入文献 → 启动筛选 → 查询结果
- 预计耗时30 分钟执行 + 1小时分析
- 负责人:后端开发
- [ ] **T2.5.2** 性能测试
- 测试 100 篇文献筛选时间
- 目标:< 10 分钟
- 预计耗时1 小时
- 负责人:后端开发
- [ ] **T2.5.3** 质量评估
- 计算准确率(对比金标准,如果有)
- 计算双模型一致率
- 计算冲突率
- 预计耗时2 小时
- 负责人AI工程师
- [ ] **T2.5.4** 修复 Bug
- 根据测试结果修复
- 预计耗时2 小时
- 负责人:后端开发
**Week 2 总验收标准**
- ✅ 可成功筛选 100 篇文献
- ✅ 准确率 ≥ 85%
- ✅ 双模型一致率 ≥ 80%
- ✅ 性能达标100篇 < 10分钟
---
## 🗓️ Week 3: 前端模块开发Day 11-15
### Day 11: 前端模块结构创建
#### 前端任务
- [ ] **T3.1.1** 更新 `modules/asl/index.tsx`
- 移除 `placeholder: true` 标记
- 改为 `placeholder: false`
- 预计耗时5 分钟
- 负责人:前端开发
- [ ] **T3.1.2** 创建 ASL 子目录
```bash
cd frontend-v2/src/modules/asl
mkdir pages components api hooks types utils
```
- 预计耗时5 分钟
- 负责人:前端开发
- [ ] **T3.1.3** 创建路由配置 `routes.tsx`
- 定义4个子路由
- 使用 `lazy()` 懒加载
- 预计耗时30 分钟
- 负责人:前端开发
- [ ] **T3.1.4** 创建4个主页面占位
- `pages/ProjectList.tsx`
- `pages/ScreeningSettings.tsx`
- `pages/ScreeningWorkbench.tsx`
- `pages/ScreeningResults.tsx`
- 每个页面显示"开发中"占位
- 预计耗时30 分钟
- 负责人:前端开发
- [ ] **T3.1.5** 测试路由
- 启动前端:`cd frontend-v2 && npm run dev`
- 访问 `http://localhost:3000/literature`
- 确认顶部导航显示"AI智能文献"
- 预计耗时10 分钟
- 负责人:前端开发
**Day 11 验收标准**
- ✅ 顶部导航显示"AI智能文献"(不再是占位)
- ✅ 点击后进入项目列表页
---
### Day 12: Excel 上传功能
#### 前端任务
- [ ] **T3.2.1** 安装依赖
```bash
cd frontend-v2
npm install xlsx
```
- 预计耗时5 分钟
- 负责人:前端开发
- [ ] **T3.2.2** 创建 `ExcelUploader` 组件
- 文件选择(`antd Upload`
- 文件类型验证(.xls, .xlsx
- 预计耗时1 小时
- 负责人:前端开发
- [ ] **T3.2.3** 实现 Excel 解析逻辑
- 使用 `xlsx` 库解析
- **⭐ 云原生要求**:内存解析 `xlsx.read(buffer)`,禁止落盘
- 字段映射Title → title
- 数据验证(必填字段)
- 预计耗时2 小时
- 负责人:前端开发
- 参考:[云原生开发规范 - 禁止做法2](../../../04-开发规范/08-云原生开发规范.md)
- [ ] **T3.2.4** 实现去重逻辑
- 基于 DOI 去重
- 基于标题去重(标准化)
- 去重统计展示
- 预计耗时1 小时
- 负责人:前端开发
- [ ] **T3.2.5** 实现文献预览表格
- 使用 `Ant Design Table`
- 显示:标题、摘要(截断)、作者、年份、期刊
- 分页50条/页)
- 预计耗时1.5 小时
- 负责人:前端开发
**Day 12 验收标准**
- ✅ 可成功上传 Excel 文件
- ✅ 解析后数据正确展示
- ✅ 去重功能正常
---
### Day 13: API 客户端封装
#### 前端任务
- [ ] **T3.3.1** 创建 API 客户端
- `api/index.ts`
- 使用 `axios` 或 `fetch`
- 复用 `shared/api/client` 配置
- 预计耗时1 小时
- 负责人:前端开发
- [ ] **T3.3.2** 实现项目 API
- `createProject(data)`
- `listProjects()`
- `getProject(id)`
- 预计耗时1 小时
- 负责人:前端开发
- [ ] **T3.3.3** 实现文献 API
- `importLiteratures(projectId, data)`
- `listLiteratures(projectId, page, pageSize)`
- 预计耗时1 小时
- 负责人:前端开发
- [ ] **T3.3.4** 实现筛选 API
- `startScreening(projectId)`
- `getScreeningResults(projectId, filters)`
- `updateScreeningResult(resultId, data)`
- 预计耗时1.5 小时
- 负责人:前端开发
- [ ] **T3.3.5** 前后端联调
- 测试所有API调用
- 错误处理
- Loading 状态
- 预计耗时2 小时
- 负责人:前端开发 + 后端开发
**Day 13 验收标准**
- ✅ API 客户端可正常调用后端
- ✅ 上传Excel后数据保存到数据库
---
### Day 14-15: 审核工作台核心UI
#### 前端任务
- [ ] **T3.4.1** 实现 `ScreeningTable` 组件
- 双行表格结构(主行 + 展开行)
- 预计耗时2 小时
- 负责人:前端开发
- [ ] **T3.4.2** 实现表头
- 第一行DS 判断、Qwen 判断(合并单元格)
- 第二行P、I、C、S、结论
- 预计耗时1 小时
- 负责人:前端开发
- [ ] **T3.4.3** 实现主行
- 展开/收起按钮
- 文献ID、研究ID、来源
- DS和Qwen的PICO判断✓/✗/?
- 冲突状态
- 最终决策下拉框
- 预计耗时3 小时
- 负责人:前端开发
- [ ] **T3.4.4** 实现展开行
- 显示DS和Qwen的证据短语
- 格式化展示
- 预计耗时1.5 小时
- 负责人:前端开发
- [ ] **T3.4.5** 实现冲突高亮
- 冲突行背景色变红
- 冲突字段标记
- 预计耗时1 小时
- 负责人:前端开发
- [ ] **T3.4.6** 实现双视图原文审查模态框
- 使用 `Ant Design Modal`
- 左侧:摘要展示 + 高亮证据
- 右侧双模型详情Tab切换
- 预计耗时3 小时
- 负责人:前端开发
**Day 14-15 验收标准**
- ✅ 审核工作台完整可用
- ✅ 表格可正确展示筛选结果
- ✅ 冲突项高亮显示
- ✅ 双视图模态框可弹出
---
## 🗓️ Week 4: 结果展示与集成测试Day 16-20
### Day 16: 结果统计与展示
#### 前端任务
- [ ] **T4.1.1** 实现统计概览卡片
- 总数、纳入、排除、待定
- 使用 `Ant Design Statistic`
- 预计耗时1.5 小时
- 负责人:前端开发
- [ ] **T4.1.2** 实现 PRISMA 式排除总结
- 按排除原因分组统计
- 柱状图展示
- 预计耗时2 小时
- 负责人:前端开发
- [ ] **T4.1.3** 实现结果列表 Tab 页
- 纳入 Tab
- 排除 Tab
- 待定 Tab
- 预计耗时1.5 小时
- 负责人:前端开发
- [ ] **T4.1.4** 实现结果表格
- 列文献ID、研究ID、标题、决策、理由
- 可展开查看摘要
- 预计耗时2 小时
- 负责人:前端开发
**Day 16 验收标准**
- ✅ 统计数据正确展示
- ✅ PRISMA 排除总结清晰
- ✅ 结果列表可正常查看
---
### Day 17: Excel 导出功能
#### 后端任务
- [ ] **T4.2.1** 后端实现导出逻辑
- 使用 `exceljs` 库
- 生成 Excel 文件
- 预计耗时2 小时
- 负责人:后端开发
- [ ] **T4.2.2** 实现导出 API
- `GET /api/v1/asl/projects/:id/screening/results/export`
- 支持过滤参数(导出全部/仅纳入/仅排除)
- 预计耗时1.5 小时
- 负责人:后端开发
#### 前端任务
- [ ] **T4.2.3** 前端实现导出按钮
- 调用导出 API
- 下载文件
- 预计耗时1 小时
- 负责人:前端开发
**Day 17 验收标准**
- ✅ 可成功导出 Excel
- ✅ 导出格式规范
- ✅ 数据完整准确
---
### Day 18: 完整流程测试
#### 集成测试任务
- [ ] **T4.3.1** 端到端完整流程测试
- 上传 → 筛选 → 复核 → 导出
- 使用真实的 199 篇测试数据
- 预计耗时2 小时
- 负责人:全栈开发 + 测试
- [ ] **T4.3.2** 异常场景测试
- 网络中断
- API 错误
- 数据格式错误
- 预计耗时2 小时
- 负责人:测试
- [ ] **T4.3.3** 性能测试
- 500 篇文献筛选
- 大文件导出
- 预计耗时1 小时
- 负责人:测试
- [ ] **T4.3.4** 修复 Bug
- 记录和修复所有发现的问题
- 预计耗时3 小时
- 负责人:全栈开发
**Day 18 验收标准**
- ✅ 完整流程无阻塞
- ✅ 异常处理完善
- ✅ 性能达标
---
### Day 19: 质量验收
#### 质量验收任务
- [ ] **T4.4.1** 准确率测试
- 使用金标准数据集199 篇)
- 计算准确率、召回率、F1
- 目标:准确率 ≥ 85%
- 预计耗时2 小时
- 负责人AI工程师 + 医学专家
- [ ] **T4.4.2** 双模型一致性测试
- 计算一致率
- 目标:≥ 80%
- 预计耗时1 小时
- 负责人AI工程师
- [ ] **T4.4.3** JSON Schema 验证率测试
- 统计验证通过率
- 目标:≥ 95%
- 预计耗时30 分钟
- 负责人:后端开发
- [ ] **T4.4.4** 人工复核队列测试
- 统计需人工复核的比例
- 目标:≤ 20%
- 预计耗时30 分钟
- 负责人AI工程师
- [ ] **T4.4.5** 根据测试结果优化
- 调整提示词
- 调整分流阈值
- 预计耗时3 小时
- 负责人AI工程师
**Day 19 验收标准**
- ✅ 准确率 ≥ 85%
- ✅ 双模型一致率 ≥ 80%
- ✅ JSON Schema 验证通过率 ≥ 95%
- ✅ 人工复核队列 ≤ 20%
---
### Day 20: 文档与交付
#### 文档任务
- [ ] **T4.5.1** 编写用户手册
- 功能介绍
- 操作步骤
- 常见问题
- 预计耗时3 小时
- 负责人:产品经理
- [ ] **T4.5.2** 编写技术文档
- 架构设计
- API 文档
- 数据库设计
- 预计耗时2 小时
- 负责人:后端开发
- [ ] **T4.5.3** 编写测试报告
- 测试用例
- 测试结果
- 质量指标
- 预计耗时2 小时
- 负责人:测试
- [ ] **T4.5.4** 代码审查
- 代码规范检查
- 安全性检查
- 性能检查
- 预计耗时2 小时
- 负责人:技术 Leader
- [ ] **T4.5.5** 准备演示环境
- 部署到测试环境
- 准备演示数据
- 预计耗时1 小时
- 负责人:运维
**Day 20 验收标准**
- ✅ 文档完整
- ✅ 代码质量合格
- ✅ 测试报告完整
- ✅ 演示环境就绪
---
## 📊 总体验收清单
### 功能完整性
- [ ] ✅ 用户可上传 Excel 文件
- [ ] ✅ Excel 格式验证正常
- [ ] ✅ 文献去重功能正常
- [ ] ✅ AI 双模型筛选可运行
- [ ] ✅ 冲突自动检测和标记
- [ ] ✅ 人工复核界面完整
- [ ] ✅ 批量操作功能正常
- [ ] ✅ 结果统计正确展示
- [ ] ✅ Excel 导出功能正常
- [ ] ✅ ASL模块在顶部导航显示并可点击
### 质量指标
- [ ] ✅ 准确率 ≥ 85%
- [ ] ✅ 双模型一致率 ≥ 80%
- [ ] ✅ JSON Schema 验证通过率 ≥ 95%
- [ ] ✅ 人工复核队列 ≤ 20%
### 性能指标
- [ ] ✅ 100 篇文献筛选 ≤ 10 分钟
- [ ] ✅ Excel 上传响应 ≤ 3 秒
- [ ] ✅ 页面加载 ≤ 2 秒
### 架构验证
- [ ] ✅ ASL模块正确注册到 moduleRegistry.ts
- [ ] ✅ 后端路由注册到 /api/v1/asl/*
- [ ] ✅ 数据保存到 asl_schema
- [ ] ✅ 复用 common/llm 成功
- [ ] ✅ Prisma Client 正常工作
---
---
## 🚀 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`
- 预计耗时2小时
- [ ] **T5.1.2** 实现PICOS分析服务
- 文件:`backend/src/modules/asl/services/picosAnalyzer.ts`
- 功能调用LLM分析PICOS生成边界问题
- 预计耗时1天
- [ ] **T5.1.3** API: 分析PICOS
- 路由:`POST /api/v1/asl/prompt/analyze`
- 预计耗时3小时
#### Day 23: Prompt生成服务
- [ ] **T5.2.1** 实现Prompt生成逻辑
- 文件:`backend/src/modules/asl/services/promptGenerator.ts`
- 预计耗时1天
- [ ] **T5.2.2** API: 确认边界规则并生成Prompt
- 路由:`POST /api/v1/asl/prompt/confirm-rules`
- 预计耗时2小时
#### Day 24: Prompt保存与使用
- [ ] **T5.3.1** API: 保存最终Prompt
- 路由:`POST /api/v1/asl/prompt/save`
- 预计耗时3小时
- [ ] **T5.3.2** 修改筛选服务支持自定义Prompt
- 新增参数:`customPromptOverride?: string`
- 预计耗时2小时
#### Day 25: 测试与优化
- [ ] **T5.4.1** 单元测试
- 预计耗时3小时
- [ ] **T5.4.2** 集成测试
- 预计耗时3小时
---
### 🗓️ Week 6: 前端开发Day 26-30
#### Day 26: PICOS输入界面
- [ ] **T6.1.1** 创建PICOS配置页面
- 路径:`/asl/projects/:id/prompt-config`
- 预计耗时4小时
- [ ] **T6.1.2** PICOS输入表单组件
- 7个输入字段
- 预计耗时4小时
#### Day 27-28: 用户确认界面
- [ ] **T6.2.1** AI理解展示组件
- 显示必须纳入/排除的要素
- 预计耗时1天
- [ ] **T6.2.2** 边界问题确认组件
- 逐个确认边界问题
- 预计耗时1天
#### Day 29: Prompt编辑器
- [ ] **T6.3.1** Prompt预览与编辑组件
- 支持用户编辑和保存
- 预计耗时1天
#### Day 30: 集成与测试
- [ ] **T6.4.1** 完整流程集成
- 预计耗时3小时
- [ ] **T6.4.2** UI/UX优化
- 预计耗时3小时
---
### 🗓️ Week 7: 优化与上线Day 31-35
#### Day 31-32: 功能完善
- [ ] **T7.1.1** Prompt模板管理
- 预计耗时1天
- [ ] **T7.1.2** 在筛选任务中使用自定义Prompt
- 预计耗时4小时
#### Day 33: 测试
- [ ] **T7.2.1** 端到端测试
- 预计耗时1天
#### Day 34-35: 优化与上线
- [ ] **T7.3.1** 性能优化
- 预计耗时4小时
- [ ] **T7.3.2** 用户文档
- 预计耗时4小时
- [ ] **T7.3.3** 上线部署
- 预计耗时4小时
---
### Phase 2 验收标准
- [ ] 用户可以输入PICOS和纳排标准
- [ ] AI可以分析并生成5-8个边界问题
- [ ] 用户可以确认每个边界问题的处理方式
- [ ] 系统可以自动生成自定义Prompt
- [ ] 用户可以编辑生成的Prompt
- [ ] 筛选任务可以使用自定义Prompt
- [ ] Prompt生成准确率 ≥ 90%
---
## 📊 完整进度跟踪
| 阶段 | Week | 任务 | 状态 | 完成时间 |
|------|------|------|------|----------|
| **MVP** | Week 1 | 数据库+后端API | ✅ | 2025-11-18 |
| **MVP** | Week 2 | 前端UI | ⬜ | - |
| **MVP** | Week 3 | 批量筛选+高级功能 | ⬜ | - |
| **MVP** | Week 4 | 测试+上线 | ⬜ | - |
| **Phase 2** | Week 5 | 智能Prompt后端 | ⬜ | - |
| **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隔离架构设计10个.md)
---
**更新日志**
- 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 创建,初始占位符