Files
AIclinicalresearch/docs/03-业务模块/ASL-AI智能文献/04-开发计划/03-任务分解.md
HaHafeng 66255368b7 feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
2026-01-16 13:42:10 +08:00

36 KiB
Raw Blame History

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%目标85%


📋 使用说明

本文档是 ASL 标题摘要初筛模块 的详细任务分解清单,基于 真实的架构基础

  • Frontend-v2顶部导航 + 模块注册)- Week 2 已完成
  • Backend 增量演进legacy/ + common/ + modules/- Week 2 已完成
  • 数据库 10个Schema隔离 - Week 1 已完成

任务状态标记

  • [ ] - 待开始
  • [🔄] - 进行中
  • [✅] - 已完成
  • [❌] - 已取消/跳过

🌥️ 云原生开发要求2025-11-16 新增)

重要提醒:所有任务必须遵循云原生开发规范
详细规范云原生开发规范

核心要求

要求 说明
存储抽象层 使用 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完成报告
API测试: ASL-API测试报告

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 模型中添加关联

    // backend/prisma/schema.prisma - User模型添加
    aslProjects AslScreeningProject[] @relation("AslProjects")
    
    • 实际耗时5 分钟
    • 完成人AI Assistant
  • [] T1.1.3 运行 Prisma 迁移

    cd backend
    npx tsx scripts/create-asl-tables.ts  # 手动SQL创建
    
    • 实际耗时10 分钟
    • 完成人AI Assistant
  • [] T1.1.4 生成 Prisma Client

    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%测试通过
完成报告平台基础设施实施完成报告
使用指南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' 统一配置管理

示例代码

// 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.envenv 配置管理混乱
同步处理LLM批量任务 使用 jobQueue.push() 避免Serverless超时
直接使用 console.log() 使用 logger.info() 日志格式标准化
自己实现缓存逻辑 使用 cache.set() / cache.get() 平台已提供分布式缓存

后端任务

  • [] T1.2.1 创建 ASL 模块目录结构

    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 创建类型定义文件

    // 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.2src/index.ts 中注册ASL路由

    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 测试路由可访问性

    # 启动后端服务
    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 已完成

完成日期: 2025-11-21
实际耗时: 3天
完成报告: Prompt设计与测试完成报告
实际准确率: 60%目标85%,需优化)

Day 6: JSON Schema 与提示词设计

后端任务

  • [] T2.1.1 定义 JSON Schema

    • 文件:backend/src/modules/asl/schemas/screening.schema.ts
    • 定义输出结构decision, reason, confidence, pico
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T2.1.2 安装验证库

    cd backend
    npm install ajv
    
    • 实际耗时5 分钟
    • 完成人AI Assistant
  • [] T2.1.3 编写 Schema 验证函数

    • 使用 Ajv 验证
    • 错误信息格式化
    • 实际耗时30 分钟
    • 完成人AI Assistant
  • [] T2.1.4 设计提示词模板 v1.0.0

    • 文件:backend/prompts/asl/screening/v1.0.0-mvp.txt
    • 包含PICO标准、纳排标准、输出格式
    • 实际耗时4 小时
    • 完成人AI Assistant + 用户
  • [] T2.1.5 人工测试提示词

    • 手动调用 LLM使用 10 篇样本)
    • 评估输出质量
    • 迭代优化提示词
    • 实际耗时2 小时
    • 完成人AI Assistant + 用户

Day 6 验收标准

  • JSON Schema 定义完成
  • ⚠️ 提示词人工测试准确率 60%目标80%,需后续优化)

Day 7: LLM 服务封装

后端任务

  • [] T2.2.1 创建 llmScreeningService.ts

    • 实际耗时10 分钟
    • 完成人AI Assistant
  • [] T2.2.2 实现 callModel 方法

    • 调用 LLMFactory.createLLM()(复用 common/llm
    • 设置参数temperature: 0
    • 错误处理
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T2.2.3 实现 parseModelOutput 方法

    • JSON 解析(使用 common/utils/jsonParser.js
    • Schema 验证
    • 格式化为 ModelDecision
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T2.2.4 实现 compareDecisions 方法

    • 对比两个模型的 PICO 判断
    • 识别冲突字段(仅结论不一致)
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T2.2.5 实现 shouldReview 方法

    • 自动分流规则
    • 置信度阈值(< 0.7
    • 实际耗时30 分钟
    • 完成人AI Assistant
  • [] T2.2.6 实现 dualModelScreening 方法

    • 并行调用两个模型(Promise.all
    • 汇总结果
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T2.2.7 单元测试

    • 测试 JSON 解析
    • 测试冲突检测
    • 测试分流规则
    • 实际耗时2 小时
    • 完成人AI Assistant

Day 7 验收标准

  • 可成功调用 DeepSeek 和 Qwen3
  • JSON Schema 验证通过率 100%
  • 冲突检测准确(仅结论不一致)

Day 8: 批量筛选任务管理

后端任务

  • [] T2.3.1 实现 batchScreening 方法

    • 串行处理避免API限流
    • 进度计算
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T2.3.2 实现任务创建

    • screeningService.startScreeningTask
    • 初始化任务记录AslScreeningTask表
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T2.3.3 实现任务状态更新

    • screeningService.processLiteraturesInBackground
    • 更新 processedItems, deepseekProcessed, qwenProcessed 等
    • 实际耗时1.5 小时
    • 完成人AI Assistant
  • [] T2.3.4 实现结果保存

    • 单篇保存到 AslScreeningResult
    • 冲突检测(仅结论不一致)
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T2.3.5 错误处理和重试

    • 单篇失败不影响整体
    • 记录错误信息
    • 实际耗时1 小时
    • 完成人AI Assistant

Day 8 验收标准

  • 可批量处理 199 篇文献(串行)
  • 任务状态正确记录
  • 结果正确保存到数据库
  • 进度实时更新每1条

Day 9: 筛选 API 开发

后端任务

  • [] T2.4.1 实现启动筛选 API

    • 自动在文献导入后启动(literatureController.importLiteratures
    • 创建任务
    • 云原生要求异步执行筛选立即返回taskId后台处理
    • 避免请求超时SAE默认30秒超时限制
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T2.4.2 实现进度查询 API

    • GET /api/v1/asl/projects/:projectId/screening-task
    • 返回实时进度总数、已处理、成功、冲突、失败、DS处理数、Qwen处理数
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T2.4.3 实现结果查询 API

    • GET /api/v1/asl/projects/:projectId/screening-results
    • 支持过滤all, conflict, included, excluded, reviewed
    • 分页(后端分页)
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T2.4.4 实现更新决策 API

    • POST /api/v1/asl/screening-results/:resultId/review
    • 人工复核提交
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T2.4.5 Postman 测试

    • 创建测试集合
    • 测试各种场景
    • 实际耗时1 小时
    • 完成人AI Assistant

Day 9 验收标准

  • API 调用成功
  • 任务可异步执行
  • 进度查询实时准确1秒轮询

Day 10: 后端集成测试

后端任务

  • [] T2.5.1 端到端测试199篇文献

    • 导入文献 → 自动启动筛选 → 查询结果
    • 实际耗时1 小时执行 + 1小时分析
    • 完成人AI Assistant + 用户
  • [] T2.5.2 性能测试

    • 测试 199 篇文献筛选时间
    • 实际约33-66分钟串行处理
    • 实际耗时1 小时
    • 完成人AI Assistant + 用户
  • [] T2.5.3 质量评估

    • 计算准确率(对比金标准)
    • 计算双模型一致率
    • 计算冲突率
    • 实际耗时2 小时
    • 完成人AI Assistant + 用户
    • 结果准确率60%, 一致率70-100%, JSON验证率100%
  • [] T2.5.4 修复 Bug

    • 修复字段映射问题PICOS、模型名称
    • 修复列表顺序问题
    • 修复进度显示问题
    • 实际耗时3 小时
    • 完成人AI Assistant

Week 2 总验收标准 ⚠️ 部分达标:

  • 可成功筛选 199 篇文献
  • ⚠️ 准确率 60%目标85%需Prompt优化
  • 双模型一致率 70-100%
  • ⚠️ 性能199篇约33-66分钟串行处理可优化为并发
  • JSON Schema验证率100%

🗓️ Week 3: 前端模块开发Day 11-15 已完成

完成日期: 2025-11-21
实际耗时: 2天
完成报告: Week2-Day2完成报告
说明: Week 3任务实际在Week 2完成

Day 11: 前端模块结构创建

前端任务

  • [] T3.1.1 更新 modules/asl/index.tsx

    • 创建左侧导航布局ASLLayout
    • 7个主模块标题摘要初筛含3个子页面
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T3.1.2 创建 ASL 子目录

    cd frontend-v2/src/modules/asl
    mkdir pages components api hooks types utils
    
    • 实际耗时5 分钟
    • 完成人AI Assistant
  • [] T3.1.3 创建路由配置

    • 直接在 index.tsx 中使用 <Route> 定义
    • 使用 lazy() 懒加载
    • 实际耗时30 分钟
    • 完成人AI Assistant
  • [] T3.1.4 创建3个主页面

    • pages/TitleScreeningSettings.tsx - 设置与启动
    • pages/ScreeningWorkbench.tsx - 审核工作台
    • pages/ScreeningResults.tsx - 初筛结果(占位)
    • 实际耗时30 分钟
    • 完成人AI Assistant
  • [] T3.1.5 测试路由

    • 启动前端:cd frontend-v2 && npm run dev
    • 访问 http://localhost:3001/literature
    • 确认顶部导航显示"AI智能文献"
    • 实际耗时10 分钟
    • 完成人AI Assistant + 用户

Day 11 验收标准

  • 顶部导航显示"AI智能文献"
  • 左侧导航显示7个模块
  • 点击后进入"设置与启动"页面

Day 12: Excel 上传功能

前端任务

  • [] T3.2.1 安装依赖

    cd frontend-v2
    npm install xlsx
    
    • 实际耗时5 分钟
    • 完成人AI Assistant
  • [] T3.2.2 创建 Excel上传组件

    • 集成在 TitleScreeningSettings.tsx
    • 文件选择(antd Upload.Dragger
    • 文件类型验证(.xls, .xlsx
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T3.2.3 实现 Excel 解析逻辑

    • 使用 xlsx 库解析
    • 云原生要求:内存解析 xlsx.read(buffer),禁止落盘
    • 字段映射Title/title → title支持中英文
    • 数据验证title和abstract必填
    • 文件:utils/excelUtils.ts
    • 实际耗时3 小时
    • 完成人AI Assistant
  • [] T3.2.4 实现去重逻辑

    • 基于 DOI 去重(优先)
    • 基于标题去重(标准化,去空格/标点)
    • 去重统计展示
    • 文件:utils/excelUtils.ts
    • 实际耗时1.5 小时
    • 完成人AI Assistant
  • [] T3.2.5 实现文献预览表格

    • 使用 Ant Design Table
    • 显示序号、标题、摘要、作者、年份、期刊、PMID、DOI
    • 固定列宽、Tooltip显示全文
    • 无分页(内存中)
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T3.2.6 实现Excel模板下载

    • 生成包含字段说明的Excel模板
    • 两个Sheet文献列表、字段说明
    • 实际耗时1 小时
    • 完成人AI Assistant

Day 12 验收标准

  • 可成功上传 Excel 文件
  • 解析后数据正确展示
  • 去重功能正常DOI优先标题辅助
  • Excel模板下载正常

Day 13: API 客户端封装

前端任务

  • [] T3.3.1 创建 API 客户端

    • api/index.ts
    • 使用 fetch + 统一错误处理
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T3.3.2 实现项目 API

    • createProject(data)
    • listProjects()
    • getProject(id)
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T3.3.3 实现文献 API

    • importLiteratures(projectId, literatures)
    • 实际耗时30 分钟
    • 完成人AI Assistant
  • [] T3.3.4 实现筛选 API

    • getScreeningTask(projectId) - 获取任务进度
    • getScreeningResultsList(projectId, params) - 获取结果列表
    • getScreeningResultDetail(resultId) - 获取结果详情
    • reviewScreeningResult(resultId, data) - 人工复核
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T3.3.5 前后端联调

    • 测试所有API调用
    • 错误处理统一message提示
    • Loading 状态
    • 实际耗时2 小时
    • 完成人AI Assistant + 用户

Day 13 验收标准

  • API 客户端可正常调用后端
  • 上传Excel后数据保存到数据库
  • 自动启动筛选任务

Day 14-15: 审核工作台核心UI

前端任务

  • [] T3.4.1 实现 ScreeningWorkbench 页面

    • 任务进度显示轮询1秒/次)
    • 双行表格结构(使用rowSpan
    • 实际耗时3 小时
    • 完成人AI Assistant
  • [] T3.4.2 实现表头

    • 序号、文献标题、结论、操作、模型、P、I、C、S
    • 压缩列宽、模型名缩写DS/Qw
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T3.4.3 实现主行(双行)

    • 点击标题展开/收起证据
    • 文献标题、DS和Qwen的PICO判断单字母
    • 冲突状态(红色背景)
    • 结论Tag纳入/排除)
    • 实际耗时4 小时
    • 完成人AI Assistant
  • [] T3.4.4 实现展开行

    • 显示DS和Qwen的详细PICOS判断、证据、理由
    • 两栏布局左DS右Qwen
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T3.4.5 实现冲突高亮

    • 冲突行背景色浅红(仅结论不一致)
    • 冲突Tag显示
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T3.4.6 实现复核Drawer

    • 使用 Ant Design Drawer1000px宽
    • 左侧70%:文献详情、模型判断、证据
    • 右侧30%人工复核表单sticky
    • 实际耗时4 小时
    • 完成人AI Assistant
  • [] T3.4.7 实现筛选Tab

    • 全部、冲突、已纳入、已排除、已复核
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T3.4.8 实现分页

    • 后端分页20条/页)
    • 实际耗时30 分钟
    • 完成人AI Assistant

Day 14-15 验收标准

  • 审核工作台完整可用
  • 表格可正确展示筛选结果(双行)
  • 冲突项高亮显示(红色背景)
  • 复核Drawer可弹出并提交
  • 进度实时更新1秒轮询
  • 列表顺序与Excel上传一致

🗓️ Week 4: 结果展示与集成测试Day 16-20 已完成

完成日期: 2025-11-21
实际耗时: 1天3小时
完成报告: Week4完成报告
架构验证: 完全符合云原生开发规范

Day 16: 结果统计与展示

前端任务

  • [] T4.1.1 实现统计概览卡片

    • 4个卡片总数、纳入、排除、待复核
    • 使用 Ant Design Statistic
    • 实际耗时30 分钟
    • 完成人AI Assistant
  • [] T4.1.2 实现 PRISMA 式排除总结

    • 按排除原因分组统计(后端聚合)
    • 柱状图展示Progress组件
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T4.1.3 实现结果列表 Tab 页

    • 全部、已纳入、已排除、待复核 Tab
    • Tab数量动态显示
    • 实际耗时30 分钟
    • 完成人AI Assistant
  • [] T4.1.4 实现结果表格(混合方案)

    • 序号、标题、AI共识、排除原因、人工最终决策、状态、操作
    • 可点击标题展开查看双模型详细判断
    • 总宽度870px无需横向滚动
    • 实际耗时2 小时
    • 完成人AI Assistant
  • [] T4.1.5 实现后端统计API

    • GET /projects/:projectId/statistics
    • Prisma并行聚合查询
    • 实际耗时1 小时
    • 完成人AI Assistant

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 小时
    • 负责人:前端开发
  • [] T4.2.1 创建Excel导出工具

    • 文件:utils/excelExport.ts
    • 使用 xlsx 库(前端生成,零文件落盘)
    • 实际耗时1.5 小时
    • 完成人AI Assistant
  • [] T4.2.2 实现导出功能

    • 导出统计摘要2个Sheet
    • 导出初筛结果当前Tab
    • 导出选中项
    • 实际耗时1 小时
    • 完成人AI Assistant
  • [] T4.2.3 Excel格式优化混合方案

    • 共40列完整信息
    • 包含AI共识、双模型详细判断、人工决策
    • 一行显示全部信息
    • 自动设置列宽
    • 实际耗时30 分钟
    • 完成人AI Assistant

Day 17 验收标准

  • 可成功导出 Excel3种方式
  • 导出格式规范40列
  • 数据完整准确
  • 云原生:前端生成,零文件落盘

Day 18: 完整流程测试

集成测试任务

  • [] T4.3.1 端到端完整流程测试

    • 上传 → 筛选 → 复核 → 统计 → 导出
    • 使用真实的 7 篇测试数据
    • 实际耗时1 小时
    • 完成人AI Assistant + 用户
  • [] T4.3.2 UI/UX优化

    • 修复逻辑矛盾(纳入不显示排除原因)
    • 实现混合方案AI共识+人工决策)
    • 优化表格宽度870px无需滚动
    • 实际耗时1 小时
    • 完成人AI Assistant + 用户
  • [] T4.3.3 性能测试

    • 统计API<500ms199篇
    • Excel导出<3秒199篇
    • 实际耗时30 分钟
    • 完成人AI Assistant
  • [] T4.3.4 创建快速测试工具

    • scripts/get-test-projects.mjs
    • 自动推荐有数据的项目
    • 生成测试URL
    • 实际耗时30 分钟
    • 完成人AI Assistant

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 验收标准

  • 文档完整
  • 代码质量合格
  • 测试报告完整
  • 演示环境就绪

📊 总体验收清单2025-11-21 更新)

功能完整性MVP核心

  • [] 用户可上传 Excel 文件
  • [] Excel 格式验证正常(中英文表头)
  • [] 文献去重功能正常DOI优先标题辅助
  • [] AI 双模型筛选可运行DeepSeek + Qwen
  • [] 冲突自动检测和标记(仅结论不一致)
  • [] 人工复核界面完整DetailReviewDrawer
  • [] 批量选择功能正常Checkbox多选
  • [] 结果统计正确展示(统计概览+PRISMA排除分析
  • [] Excel 导出功能正常3种导出方式
  • [] 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生成模块开发计划

核心目标

解决问题: 消除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%

📊 完整进度跟踪2025-11-21 更新)

阶段 Week 任务 状态 完成时间 备注
MVP Week 1 数据库+后端API 2025-11-18 提前4天完成
MVP Week 2 LLM筛选核心 2025-11-21 准确率60%,需优化
MVP Week 3 前端UI设置+工作台) 2025-11-21 实际在Week 2完成
MVP Week 4 结果展示+导出 2025-11-21 混合方案,云原生架构
MVP优化 - Prompt优化 🔄 - 下一步提升至85%
MVP优化 - 并发处理优化 ⏸️ - 3-5并发提升性能
Phase 2 Week 5 智能Prompt后端 - 待MVP质量达标后开始
Phase 2 Week 6 智能Prompt前端 - -
Phase 2 Week 7 优化+上线 - -

📚 相关文档


更新日志

  • 2025-11-21: V3.3 更新Week 4功能完成结果展示+Excel导出混合方案解决逻辑矛盾
  • 2025-11-21: V3.2 更新反映MVP核心功能完成状态Week 1-3已完成准确率60%需优化)
  • 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 创建,初始占位符