Files
AIclinicalresearch/docs/03-业务模块/ASL-AI智能文献/04-开发计划/03-任务分解.md
HaHafeng 1b53ab9d52 feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
2026-01-14 19:15:01 +08:00

36 KiB
Raw Blame History

ASL 模å<C2A1>—任务分解(To-do Listï¼?

*文档版本� V3.2
*创建日期� 2025-11-16
*适用阶段ï¼? MVP(标题æ˜è¦<C3A8>åˆ<C3A5>ç­ï¼‰
*预计周期ï¼? 4 å‘? 最å<EFBFBD>Žæ´æ°ï¼š 2025-11-21
*â­?é‡<C3A9>è¦<C3A8>:基于真实架构(Frontend-v2 + Backend + asl_schemaï¼?
*📊 MVP核心功能è¿åº¦ï¼? âœ?100% 完æˆ<C3A6>(Week 1-3 æ<><C3A6>å‰<C3A5>完æˆ<C3A6>ï¼? *📊 è´¨é‡<C3A9>优åŒè¿åº¦ï¼? 🔄 60% 完æˆ<C3A6>(准确率60%,目æ ?5%ï¼?


📋 使用说明

本文档是 ASL 标题æ˜è¦<C3A8>åˆ<C3A5>ç­æ¨¡å<C2A1> 的详细任务分解清å<E280A6>•,基于 **真实的架构基础**ï¼?- âœ?Frontend-v2(顶部导èˆ?+ 模å<C2A1>—注册ï¼? Week 2 已完æˆ?- âœ?Backend 增é‡<C3A9>æ¼”è¿ï¼ˆlegacy/ + common/ + modules/ï¼? Week 2 已完æˆ?- âœ?æ•°æ<C2B0>®åº?10个Schema隔离 - Week 1 已完æˆ? **任务状æ€<C3A6>æ ‡è®?*ï¼?- [ ] - å¾…å¼€å§?- [🔄] - 进行ä¸?- [✅] - 已完æˆ?- <>Œ] - å·²å<C2B2>æ¶?跳过


🌥ï¸?äºåŽŸç”Ÿå¼€å<E282AC>è¦<C3A8>æ±ï¼ˆ2025-11-16 新增ï¼?

**â­?é‡<C3A9>è¦<C3A8>æ<EFBFBD><C3A6>é†**:所有任务必须é<C2BB>µå¾ªäºåŽŸç”Ÿå¼€å<E282AC>è§„èŒ? 详细规范:äºåŽŸç”Ÿå¼€å<EFBFBD>规范

核心è¦<EFBFBD>æ±

è¦<EFBFBD>æ± è¯´æ˜Ž
âœ?*存储抽象å±? 使用 StorageFactory,支æŒ<EFBFBD>本åœ?OSS切æ<E280A1>¢
âœ?内存解æž<EFBFBD> Excel导入使用 xlsx.read(buffer),ä¸<EFBFBD>è<EFBFBD>½ç˜
âœ?异步任务 LLMç­é€‰å¿…须弿­¥å¤„ç<EFBFBD>†ï¼ˆ> 10ç§ï¼‰
âœ?环境å<EFBFBD>˜é‡<EFBFBD> 所有é…<EFBFBD>置从 .env 读å<C2BB>
âœ?**æ•°æ<C2B0>®åº“连接池** 使用全局 prisma 实例
�OSS字段预留 pdfUrl, pdfOssKey, pdfFileSize

æ¯<EFBFBD>日检查清å<EFBFBD>?

æ<EFBFBD><EFBFBD>交代ç <EFBFBD>å‰<EFBFBD>必须确认:

  • 是å<EFBFBD>¦ä½¿ç”¨å­˜å¨æŠ½è±¡å±ï¼Ÿ
  • 是å<EFBFBD>¦é<EFBFBD>¿å…<EFBFBD>æ‡ä»¶è<EFBFBD>½ç˜ï¼?- [ ] 是å<C2AF>¦ä½¿ç”¨å…¨å±€ prisma 实例ï¼?- [ ] 是å<C2AF>¦æ‰€æœ‰é…<C3A9>置都从环境å<C692>˜é‡<C3A9>读å<C2BB>?
  • 长时间任务是å<EFBFBD>¦å¼æ­¥å¤„ç<EFBFBD>†ï¼Ÿ

🗓ï¸?Week 1: æ•°æ<C2B0>®åº“Schema与å<C5BD>Žç«¯API框架(Day 1-5)✅ 已完æˆ?

完æˆ<EFBFBD>日期: 2025-11-18
实际耗时: 1天(æ<CB86><C3A6>å‰<C3A5>4天)
完æˆ<EFBFBD>报åŠ: Week 1完æˆ<C3A6>报åŠ
APIæµè¯•: ASL-APIæµè¯•报åŠ

Day 1: Prisma Schema 设计 �

æ•°æ<EFBFBD>®åº“ä»»åŠ?

  • [✅] T1.1.1 设计 asl_schema 表结æž? - 文件:backend/prisma/schema.prisma

    • æ°å¢ž4个模åžï¼š
      • AslScreeningProject(筛选项目表ï¼? - AslLiterature(æ‡çŒ®æ<EFBFBD>¡ç®è¡¨ï¼? - AslScreeningResult(筛选结果表ï¼? - AslScreeningTask(筛选任务表ï¼? - 使用 @@schema("asl_schema") 指定Schema
    • **â­?æ°å¢žè¦<C3A8>æ±ï¼ˆäºåŽŸç”Ÿï¼?*:在 AslLiterature 中添åŠ?OSS 字段
      • pdfUrl String? @map("pdf_url") - PDF访问URL
      • pdfOssKey String? @map("pdf_oss_key") - OSSå­˜å¨Key
      • pdfFileSize Int? @map("pdf_file_size") - æ‡ä»¶å¤§å°<C3A5>(字èŠï¼‰
      • 说明:MVP阶段预留,V1.0阶段使用
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>? - å<>考:02-标题æ˜è¦<C3A8>åˆ<C3A5>ç­å¼€å<E282AC>计åˆ?md Week 1 Day 1
  • [✅] T1.1.2 åœ?User 模åžä¸­æ·»åŠ å…³è<C2B3>? ```prisma // backend/prisma/schema.prisma - Useræ¨¡åžæ·»åŠ  aslProjects AslScreeningProject[] @relation("AslProjects")

    - 实际耗时� 分钟
    - 完æˆ<C3A6>人:AI Assistant
    
    
  • [✅] T1.1.3 è¿<C3A8>行 Prisma è¿<C3A8>ç§»

    cd backend
    npx tsx scripts/create-asl-tables.ts  # æ‰åЍSQLåˆå»º
    
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T1.1.4 生æˆ<C3A6> Prisma Client

    npx prisma generate
    
    • 实际耗时ï¼? 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T1.1.5 验è¯<C3A8>æ•°æ<C2B0>®åº“表åˆå»º

    • 使用脚本验è¯<EFBFBD>æ•°æ<EFBFBD>®åº? - 检æŸ?asl_schema ä¸çš„4个表 âœ? - 检查索引和外键 âœ? - 实际耗时ï¼? 分钟
    • 完æˆ<EFBFBD>人:AI Assistant

Day 1 验收标准 ✅:

  • âœ?asl_schema 4张表åˆå»ºæˆ<C3A6>功
  • âœ?Prisma Client 生æˆ<C3A6>æ— é”™è¯?- âœ?å<>¯æŸ¥è¯?asl_schema è¡?

Day 2: å<>Žç«¯ç®å½•结构åˆå»º âœ?

**â­?å‰<C3A5>ç½®æ<C2AE>¡ä»¶ï¼?025-11-17 æ›´æ–°ï¼?*:平å<C2B3>°åŸºç¡€è®¾æ½å·²å®Œæˆ<C3A6>实æ?âœ? **完æˆ<C3A6>状æ€?*ï¼?个核心模å<C2A1>—,100%测试通过
完æˆ<EFBFBD>报åŠï¼šå¹³å<EFBFBD>°åŸºç¡€è®¾æ½å®žæ½å®Œæˆ<EFBFBD>报åŠ
**使用指å<E280A1>—**:backend/src/common/README.md

å¹³å<EFBFBD>°å·²æ<EFBFBD><EFBFBD>ä¾çš„8个核心模å<EFBFBD>—(ASL模å<EFBFBD>—无需实现ï¼?

**å¹³å<C2B3>°åŸºç¡€è®¾æ½å·²å®Œæˆ<C3A6>(2025-11-17ï¼?*ï¼?

# æœ<EFBFBD>务 路径 使用æ¹å¼<EFBFBD> 说明
1 å­˜å¨æœ<EFBFBD>务 common/storage/ import { storage } from '@/common/storage' 文件上传下载(本åœ?OSS切æ<E280A1>¢ï¼?
2 日志系统 common/logging/ import { logger } from '@/common/logging' 结构åŒJSON日志
3 缓存æœ<EFBFBD>务 common/cache/ import { cache } from '@/common/cache' 内存/Redis缓存
4 异步任务 common/jobs/ import { jobQueue } from '@/common/jobs' 长时间任务处ç<EFBFBD>?
5 å<EFBFBD>¥åº·æ£€æŸ? common/health/ import { registerHealthRoutes } from '@/common/health' SAEå<EFBFBD>¥åº·æ£€æŸ?
6 监控指标 common/monitoring/ import { Metrics } from '@/common/monitoring' 性能监控和告�
7 æ•°æ<EFBFBD>®åº“连接池 config/database.ts import { prisma } from '@/config/database' 全局Prisma实ä¾
8 环境é…<EFBFBD>ç½® config/env.ts import { env } from '@/config/env' 统一é…<EFBFBD>置管ç<EFBFBD>

**示ä¾ä»£ç <C3A7>**ï¼?```typescript // ASL模å<C2A1>—ç´æŽ¥ä½¿ç”¨å¹³å<C2B3>°æœ<C3A6>务 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 })

// 缓存数æ<C2B0>® await cache.set(project:${projectId}, data, 3600)

// 创建异步任务 const job = await jobQueue.push('asl:screening', { projectId })

// 记录监控指标 Metrics.recordAPIResponseTime('POST', '/api/v1/asl/screening', 200, 150)


**âš ï¸<C3AF> ç¦<C3A7>止的æ“<C3A6>作(必须é<C2BB>µå®ˆï¼?*ï¼?
| ç¦<C3A7>æ­¢æ“<C3A6>作 | 正确å<C2AE>𿳕 | 原因 |
|---------|---------|------|
| `fs.writeFileSync()` | 使用 `storage.upload()` | Serverless容器é‡<C3A9>å<EFBFBD>¯ä¸¢å¤±æ‡ä»¶ |
| `new PrismaClient()` | 使用全局 `prisma` 实例 | é<>¿å…<C3A5>连接数暴增(已é…<C3A9>置连接池ï¼?|
| 硬ç¼ç <C3A7>é…<C3A9>ç½?| 使用 `process.env` æˆ?`env` | é…<C3A9>置管ç<C2A1>†æ··ä¹± |
| å<>Œæ­¥å¤„ç<E2809E>†LLM批é‡<C3A9>任务 | 使用 `jobQueue.push()` | é<>¿å…<C3A5>Serverlessè¶…æ—¶ |
| 直接使用 `console.log()` | 使用 `logger.info()` | 日志格å¼<C3A5>标准åŒ?|
| 自己实现缓存逻辑 | 使用 `cache.set()` / `cache.get()` | å¹³å<C2B3>°å·²æ<C2B2><C3A6>ä¾åˆ†å¸ƒå¼<C3A5>缓存 |

---

#### å<>Žç«¯ä»»åŠ¡

- [✅] **T1.2.1** 创建 ASL 模å<C2A1>—ç®å½•结构
  ```bash
  cd backend/src/modules
  mkdir -p asl/{routes,controllers,services,schemas,types,utils}
  • 预计耗时ï¼? 分钟
  • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • T1.2.2 创建路由文件
    • routes/index.ts - 路由注册
    • 实现å<EFBFBD> ä½<EFBFBD>函数(返å?04æˆç©ºæ•°ç»„ï¼? - 预计耗时ï¼?0 分钟
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • T1.2.3 创建控制器文ä»? - controllers/projectController.ts - 项目控制å™? - controllers/literatureController.ts - 文献控制å™? - controllers/screeningController.ts - 筛选控制器
    • åˆå»ºå<EFBFBD> ä½<EFBFBD>函数(æ¯<EFBFBD>个控制器5-7个函数)
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • T1.2.4 åˆå»ºæœ<C3A6>åŠ¡å±æ‡ä»? - services/projectService.ts - 项目业务逻辑
    • services/literatureService.ts - 文献业务逻辑
    • services/llmScreeningService.ts - LLMç­é€‰æœ<C3A6>åŠ? - 预计耗时ï¼?0 分钟
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • [✅] T1.2.5 创建类型定义文件
    // types/screening.types.ts
    export interface Literature { ... }
    export interface ScreeningResult { ... }
    export interface Protocol { ... }
    
    • 预计耗时ï¼?0 分钟
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>? Day 2 验收标准 ✅:
  • âœ?ASL 模å<C2A1>—ç®å½•结构完整ï¼?个å­<C3A5>ç®å½•ï¼?个文件)
  • âœ?所有å<E280B0> ä½<C3A4>æ‡ä»¶åˆå»ºå®Œæˆ?- âœ?**å<>¯æ­£å¸¸ä½¿ç”¨å¹³å<C2B3>°æœ<C3A6>务(¸ªæ ¸å¿ƒæ¨¡å<C2A1>—)**ï¼? - âœ?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路由 �

å<EFBFBD>Žç«¯ä»»åŠ¡

  • [✅] T1.3.1 实现 routes/index.ts

    • 注册所有API路由
    • å<EFBFBD>è€?legacy/routes/ 的风æ ? - 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>? - å<>考:02-标题æ˜è¦<C3A8>åˆ<C3A5>ç­å¼€å<E282AC>计åˆ?md Week 1 Day 2
  • [✅] T1.3.2 åœ?src/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/*')
    
    • 预计耗时ï¼?0 分钟
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • [✅] T1.3.3 æµè¯•路由å<C2B1>¯è®¿é—®æ€? ```bash

    å<EFBFBD>¯åЍå<EFBFBD>Žç«¯æœ<EFBFBD>务

    cd backend && npm run dev

    æµè¯•å<EFBFBD>¥åº·æ£€æŸ? curl http://localhost:3001/api/v1/asl/projects

    - 预计耗时�0 分钟
    - 负责人:å<C5A1>Žç«¯å¼€å<E282AC>?
    

Day 3 验收标准 ✅:

  • âœ?å<>Žç«¯æœ<C3A6>务正常å<C2B8>¯åЍ
  • âœ?ASL路由注册æˆ<C3A6>功ï¼?api/v1/aslï¼?- âœ?APIå<49>¯è®¿é—®ï¼ˆ10个端ç¹ï¼‰

Day 4-5: 实现基础API �

å<EFBFBD>Žç«¯ä»»åŠ¡

  • [✅] T1.4.1 实现 projectService.ts
    • createProject(userId, data) - 创建项目
    • listProjects(userId) - 获å<C2B7>项ç®åˆ—表
    • getProject(projectId) - 获å<C2B7>项ç®è¯¦æƒ…
    • 使用 Prisma Client æ“<C3A6>作 asl_schema
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • [✅] T1.4.2 实现 projectController.ts
    • createProject - 控制å™? - listProjects - 控制å™? - getProject - 控制å™? - 请æ±éªŒè¯<C3A8>ã€<C3A3>å“<C3A5>应格å¼<C3A5>åŒ
    • 预计耗时ï¼?.5 å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • [✅] T1.4.3 实现 literatureService.ts
    • importBatch(projectId, literatures) - 批é‡<C3A9>导入
    • listLiteratures(projectId, page, pageSize) - 分页查询
    • 去é‡<EFBFBD>逻è¾ï¼ˆåŸºäºŽDOIåŒæ ‡é¢˜ï¼‰
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • [✅] T1.4.4 实现 literatureController.ts
    • importLiteratures - 导入控制å™? - listLiteratures - 列表控制å™? - Excelæ•°æ<C2B0>®éªŒè¯<C3A8>
    • 预计耗时ï¼?.5 å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • [✅] T1.4.5 APIæµè¯•(完整æµè¯•脚本)
    • 创建 Postman æµè¯•é†å<E280A0>ˆ
    • æµè¯•所有已实现的API
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>? Day 4-5 验收标准 ✅:
  • âœ?项ç®ç®¡ç<C2A1>†APIå<49>¯è°ƒç”¨ï¼ˆ¸ªæŽ¥å<C2A5>£ï¼‰
  • âœ?æ‡çŒ®å¯¼å…¥APIå<49>¯è°ƒç”¨ï¼ˆ¸ªæŽ¥å<C2A5>£ï¼‰
  • âœ?æ•°æ<C2B0>®æ­£ç¡®ä¿<C3A4>å­˜åˆ?asl_schema
  • âœ?所有测试通过ï¼?/7 - 100%ï¼?

🗓ï¸?Week 2: LLMç­é€‰æ ¸å¿ƒï¼ˆDay 6-10)✅ 已完æˆ?

完æˆ<EFBFBD>日期: 2025-11-21
实际耗时: 3å¤? 完æˆ<EFBFBD>报åŠ: Prompt设计与æµè¯•完æˆ<EFBFBD>报åŠ
**实际准确�*: 60%(目�5%,需优化�

Day 6: JSON Schema 与æ<C5BD><C3A6>示è¯<C3A8>设计 âœ?

å<EFBFBD>Žç«¯ä»»åŠ¡

  • [✅] T2.1.1 定义 JSON Schema

    • 文件:backend/src/modules/asl/schemas/screening.schema.ts
    • 定义输出结构(decision, reason, confidence, picoï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.1.2 安装验è¯<C3A8>åº? ```bash cd backend npm install ajv

    - 实际耗时� 分钟
    - 完æˆ<C3A6>人:AI Assistant
    
    
  • [✅] T2.1.3 编写 Schema 验è¯<C3A8>函数

    • 使用 Ajv 验è¯<C3A8>
    • 错误信æ<EFBFBD>¯æ ¼å¼<EFBFBD>åŒ? - 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.1.4 设计æ<C2A1><C3A6>示è¯<C3A8>模æ<C2A1>?v1.0.0

    • 文件:backend/prompts/asl/screening/v1.0.0-mvp.txt
    • 包å<EFBFBD>«ï¼šPICO标准ã€<EFBFBD>çº³æŽæ ‡å‡†ã€<EFBFBD>输出格å¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant + 用户
  • [✅] T2.1.5 人工æµè¯•æ<E280A2><C3A6>示è¯? - 手动调用 LLM(使ç”?10 篇样本)

    • 评估输出质é‡<EFBFBD>
    • è¿­ä»£ä¼˜åŒæ<EFBFBD><EFBFBD>示è¯? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant + 用户

Day 6 验收标准 ✅:

  • âœ?JSON Schema 定义完æˆ<C3A6>
  • âš ï¸<EFBFBD> æ<><C3A6>示è¯<C3A8>人工æµè¯•准确率 60%(目æ ?0%,需å<E282AC>Žç»­ä¼˜åŒï¼?

Day 7: LLM æœ<C3A6>务å°<C3A5>装 âœ?

å<EFBFBD>Žç«¯ä»»åŠ¡

  • [✅] T2.2.1 创建 llmScreeningService.ts

    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.2.2 实现 callModel 方法

    • 调用 LLMFactory.createLLM()(å¤<EFBFBD>ç”?common/llmï¼? - 设置å<C2AE>数(temperature: 0ï¼? - 错误处ç<E2809E>
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.2.3 实现 parseModelOutput 方法

    • JSON è§£æž<C3A6>(使ç”?common/utils/jsonParser.jsï¼? - Schema 验è¯<C3A8>
    • æ ¼å¼<EFBFBD>åŒä¸º ModelDecision
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.2.4 实现 compareDecisions 方法

    • 对比两个模型çš?PICO 判断
    • 识别冲çª<EFBFBD>字段(仅结论ä¸<EFBFBD>一致)
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.2.5 实现 shouldReview 方法

    • 自动分æµ<EFBFBD>è§„åˆ
    • 置信度阈值(< 0.7ï¼? - 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.2.6 实现 dualModelScreening 方法

    • 并行调用两个模型(Promise.allï¼? - 汇总结æž? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.2.7 å<>•å…ƒæµè¯•

    • 测试 JSON è§£æž<C3A6>
    • æµè¯•冲çª<EFBFBD>检æµ? - æµè¯•分æµ<C3A6>è§„åˆ
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant

Day 7 验收标准 ✅:

  • âœ?å<>¯æˆ<C3A6>功调ç”?DeepSeek å’?Qwen3
  • âœ?JSON Schema 验è¯<C3A8>通过çŽ?100%
  • âœ?冲çª<C3A7>检æµå‡†ç¡®ï¼ˆä»…结论ä¸<C3A4>一致)

Day 8: 批é‡<C3A9>ç­é€‰ä»»åŠ¡ç®¡ç<C2A1>?âœ?

å<EFBFBD>Žç«¯ä»»åŠ¡

  • [✅] T2.3.1 实现 batchScreening 方法

    • 串行处ç<EFBFBD>†ï¼ˆé<EFBFBD>¿å…<EFBFBD>APIé™<EFBFBD>æµ<EFBFBD>ï¼? - 进度计算
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.3.2 实现任务创建

    • screeningService.startScreeningTask
    • åˆ<EFBFBD>å§åŒä»»åŠ¡è®°å½•ï¼ˆAslScreeningTask表)
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.3.3 实现任务状æ€<C3A6>æ´æ? - screeningService.processLiteraturesInBackground

    • æ›´æ–° processedItems, deepseekProcessed, qwenProcessed ç­? - 实际耗时ï¼?.5 å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.3.4 实现结果ä¿<C3A4>å­˜

    • å<EFBFBD>•篇ä¿<EFBFBD>å­˜åˆ?AslScreeningResult è¡? - 冲çª<C3A7>检æµï¼ˆä»…结论ä¸<C3A4>一致)
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.3.5 错误处ç<E2809E>†åŒé‡<C3A9>è¯? - å<>•篇失败ä¸<C3A4>å½±å“<C3A5>æ•´ä½? - 记录错误信æ<C2A1>¯

    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant

Day 8 验收标准 ✅:

  • âœ?å<>¯æ‰¹é‡<C3A9>处ç<E2809E>?199 篇文献(串行ï¼?- âœ?任务状æ€<C3A6>正确记å½?- âœ?结果正确ä¿<C3A4>存到数æ<C2B0>®åº“
  • âœ?è¿åº¦å®žæ—¶æ´æ°ï¼ˆæ¯<C3A6><31>¡ï¼‰

Day 9: ç­›é€?API å¼€å<E282AC>?âœ?

å<EFBFBD>Žç«¯ä»»åŠ¡

  • [✅] T2.4.1 实现å<C2B0>¯åЍç­é€?API

    • 自动在æ‡çŒ®å¯¼å…¥å<EFBFBD>Žå<EFBFBD>¯åŠ¨ï¼ˆliteratureController.importLiteraturesï¼? - 创建任务
    • **â­?äºåŽŸç”Ÿè¦<C3A8>æ±?*ï¼šå¼æ­¥æ‰§è¡Œç­é€‰ï¼ˆç«å<E280B9>³è¿”åžtaskId,å<C592>Žå<C5BD>°å¤„ç<E2809E>†ï¼‰
    • é<EFBFBD>¿å…<EFBFBD>请æ±è¶…时(SAE默认30ç§è¶…æ—¶é™<EFBFBD>制)
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.4.2 实现进度查询 API

    • GET /api/v1/asl/projects/:projectId/screening-task
    • è¿”åžå®žæ—¶è¿åº¦ï¼ˆæ€»æ•°ã€<EFBFBD>已处ç<EFBFBD>†ã€<EFBFBD>æˆ<EFBFBD>功ã€<EFBFBD>冲çª<EFBFBD>ã€<EFBFBD>失败ã€<EFBFBD>DS处ç<EFBFBD>†æ•°ã€<EFBFBD>Qwen处ç<EFBFBD>†æ•°ï¼‰
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.4.3 实现结果查询 API

    • GET /api/v1/asl/projects/:projectId/screening-results
    • 支æŒ<EFBFBD>过滤(all, conflict, included, excluded, reviewedï¼? - 分页(å<CB86>Žç«¯åˆ†é¡µï¼‰
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.4.4 实现更新决策 API

    • POST /api/v1/asl/screening-results/:resultId/review
    • 人工å¤<EFBFBD>æ ¸æ<EFBFBD><EFBFBD>交
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T2.4.5 Postman 测试

    • åˆå»ºæµè¯•é†å<EFBFBD>ˆ
    • æµè¯•å<EFBFBD>„ç§<EFBFBD>场景
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant

Day 9 验收标准 ✅:

  • âœ?API 调用æˆ<C3A6>功
  • âœ?任务å<C2A1>¯å¼æ­¥æ‰§è¡?- âœ?进度查询实时准确ï¼?秒轮询)

Day 10: å<>Žç«¯é†æˆ<C3A6>æµè¯• âœ?

å<EFBFBD>Žç«¯ä»»åŠ¡

  • [✅] T2.5.1 端到端æµè¯•(199篇æ‡çŒ®ï¼‰

    • 导入文献 â†?自动å<C2A8>¯åЍç­é€?â†?查询结果
    • 实际耗时ï¼? å°<C3A5>时执行 + 1å°<C3A5>时分æž<C3A6>
    • 完æˆ<EFBFBD>人:AI Assistant + 用户
  • [✅] T2.5.2 性能测试

    • 测试 199 篇文献筛选时é—? - 实际:约33-66分éŸï¼ˆä¸²è¡Œå¤„ç<E2809E>†ï¼‰
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant + 用户
  • [✅] T2.5.3 è´¨é‡<C3A9>评估

    • 计算准确率(对比金标准)
    • 计算å<EFBFBD>Œæ¨¡åžä¸€è‡´çއ
    • 计算冲çª<EFBFBD>çŽ? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant + 用户
    • 结果:准确率60%, 一致率70-100%, JSON验è¯<C3A8>çŽ?00%
  • [✅] T2.5.4 ä¿®å¤<C3A5> Bug

    • ä¿®å¤<EFBFBD>字段映射问题(PICOSã€<EFBFBD>模åžå<EFBFBD><EFBFBD>称)
    • ä¿®å¤<EFBFBD>列表顺åº<EFBFBD>问题
    • ä¿®å¤<EFBFBD>è¿åº¦æ˜¾ç¤ºé—®é¢˜
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant

*Week 2 总验收标å‡? âš ï¸<C3AF> 部分达标ï¼?- âœ?å<>¯æˆ<C3A6>功ç­é€?199 篇文çŒ?- âš ï¸<C3AF> 准确çŽ?60%(目æ ?5%,需Prompt优åŒï¼?- âœ?å<>Œæ¨¡åžä¸€è‡´çއ 70-100%

  • âš ï¸<EFBFBD> 性能ï¼?99篇约33-66分éŸï¼ˆä¸²è¡Œå¤„ç<E2809E>†ï¼Œå<C592>¯ä¼˜åŒä¸ºå¹¶å<C2B6>ï¼?- âœ?JSON Schema验è¯<C3A8>çŽ?00%

🗓ï¸?Week 3: å‰<C3A5>端模å<C2A1>—å¼€å<E282AC>(Day 11-15)✅ 已完æˆ?

完æˆ<EFBFBD>日期: 2025-11-21
实际耗时: 2å¤? 完æˆ<EFBFBD>报åŠ: Week2-Day2完æˆ<C3A6>报åŠ
说明: Week 3任务实际在Week 2完æˆ<C3A6>

Day 11: å‰<C3A5>端模å<C2A1>—结构åˆå»º âœ?

å‰<EFBFBD>端任务

  • [✅] T3.1.1 æ›´æ–° modules/asl/index.tsx

    • åˆå»ºå·¦ä¾§å¯¼èˆªå¸ƒå±€ï¼ˆASLLayoutï¼? - 7个主模å<C2A1>—,标题æ˜è¦<C3A8>åˆ<C3A5>ç­å<E280BA>«3个å­<C3A5>页é<C2B5>¢
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.1.2 创建 ASL å­<C3A5>ç®å½? ```bash cd frontend-v2/src/modules/asl mkdir pages components api hooks types utils

    - 实际耗时� 分钟
    - 完æˆ<C3A6>人:AI Assistant
    
    
  • [✅] T3.1.3 åˆå»ºè·¯ç”±é…<C3A9>ç½®

    • 直接åœ?index.tsx 中使ç”?<Route> 定义
    • 使用 lazy() 懒加è½? - 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.1.4 åˆå»º3个主页é<C2B5>¢

    • pages/TitleScreeningSettings.tsx - 设置与å<C5BD>¯åŠ? - pages/ScreeningWorkbench.tsx - 审核工作å<C593>? - pages/ScreeningResults.tsx - åˆ<C3A5>ç­ç»“果(å<CB86> ä½<C3A4>)
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.1.5 测试路由

    • å<EFBFBD>¯åЍå‰<EFBFBD>端:cd frontend-v2 && npm run dev
    • 访问 http://localhost:3001/literature
    • 确认顶部导航显示"AI智能æ‡çŒ®"
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant + 用户

Day 11 验收标准 ✅:

  • âœ?顶部导航显示"AI智能æ‡çŒ®"
  • âœ?左侧导航显示7个模å<C2A1>?- âœ?ç¹å‡»å<C2BB>Žè¿å…?设置与å<C5BD>¯åŠ?页é<C2B5>¢

Day 12: Excel 上传功能 �

å‰<EFBFBD>端任务

  • [✅] T3.2.1 安装ä¾<C3A4>èµ

    cd frontend-v2
    npm install xlsx
    
    • 实际耗时ï¼? 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.2.2 创建 Excel上传组件

    • 醿ˆ<EFBFBD>åœ?TitleScreeningSettings.tsx ä¸? - 文件选择(antd Upload.Draggerï¼? - æ‡ä»¶ç±»åžéªŒè¯<C3A8>ï¼?xls, .xlsxï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.2.3 实现 Excel è§£æž<C3A6>逻è¾

    • 使用 xlsx 库解æž? - **â­?äºåŽŸç”Ÿè¦<C3A8>æ±?*:内存解æž?xlsx.read(buffer),ç¦<EFBFBD>æ­¢è<EFBFBD>½ç? - 字段映射(Title/title â†?title,支æŒ<C3A6>ä¸­è±æ‡ï¼? - æ•°æ<C2B0>®éªŒè¯<C3A8>(titleåŒabstractå¿…å¡«ï¼? - 文件:utils/excelUtils.ts
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.2.4 实现去é‡<C3A9>逻è¾

    • 基于 DOI 去é‡<C3A9>(优先)
    • 基于标题去é‡<EFBFBD>(标准åŒï¼ŒåŽ»ç©ºæ ¼/标点ï¼? - 去é‡<C3A9>统计展示
    • 文件:utils/excelUtils.ts
    • 实际耗时ï¼?.5 å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.2.5 实现文献预览表格

    • 使用 Ant Design Table
    • 显示:åº<EFBFBD>å<EFBFBD>·ã€<EFBFBD>标题ã€<EFBFBD>æ˜è¦<EFBFBD>ã€<EFBFBD>作者ã€<EFBFBD>年份ã€<EFBFBD>期刊ã€<EFBFBD>PMIDã€<EFBFBD>DOI
    • åºå®šåˆ—宽ã€<EFBFBD>Tooltip显示全æ
    • 无分页(内存中)
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.2.6 实现Excel模æ<C2A1>¿ä¸è½½

    • 生æˆ<EFBFBD>包å<EFBFBD>«å­—段说明的Excel模æ<EFBFBD>¿
    • 两个Sheet:æ‡çŒ®åˆ—表ã€<EFBFBD>字段说æ˜? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant

Day 12 验收标准 ✅:

  • âœ?å<>¯æˆ<C3A6>功上ä¼?Excel 文件
  • âœ?è§£æž<C3A6>å<EFBFBD>Žæ•°æ<C2B0>®æ­£ç¡®å±•ç¤?- âœ?去é‡<C3A9>功能正常(DOI优先,标题辅助)
  • âœ?Excel模æ<C2A1>¿ä¸è½½æ­£å¸¸

Day 13: API 客户端å°<C3A5>è£?âœ?

å‰<EFBFBD>端任务

  • [✅] T3.3.1 创建 API 客户ç«? - api/index.ts

    • 使用 fetch + 统一错误处ç<E2809E>
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.3.2 实现项目 API

    • createProject(data)
    • listProjects()
    • getProject(id)
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.3.3 实现文献 API

    • importLiteratures(projectId, literatures)
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.3.4 实现筛é€?API

    • getScreeningTask(projectId) - 获å<C2B7>任务è¿åº¦
    • getScreeningResultsList(projectId, params) - 获å<C2B7>结果列表
    • getScreeningResultDetail(resultId) - 获å<C2B7>结果详情
    • reviewScreeningResult(resultId, data) - 人工å¤<C3A5>æ ¸
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.3.5 å‰<C3A5>å<EFBFBD>Žç«¯è<C2AF>”è°? - æµè¯•所有API调用

    • 错误处ç<EFBFBD>†ï¼ˆç»Ÿä¸€messageæ<EFBFBD><EFBFBD>示ï¼? - Loading 状æ€? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant + 用户

Day 13 验收标准 ✅:

  • âœ?API 客户端å<C2AF>¯æ­£å¸¸è°ƒç”¨å<C2A8>Žç«¯
  • âœ?上传Excelå<6C>Žæ•°æ<C2B0>®ä¿<C3A4>存到数æ<C2B0>®åº?- âœ?自动å<C2A8>¯åЍç­é€‰ä»»åŠ?

Day 14-15: 审核工作å<C593>°ï¼ˆæ ¸å¿ƒUI)✅

å‰<EFBFBD>端任务

  • [✅] T3.4.1 实现 ScreeningWorkbench 页é<C2B5>¢

    • 任务进度显示(轮è¯?ç§?次)
    • å<EFBFBD>Œè¡Œè¡¨æ ¼ç»“构(使用rowSpanï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.4.2 实现表头

    • åº<EFBFBD>å<EFBFBD>·ã€<EFBFBD>æ‡çŒ®æ ‡é¢˜ã€<EFBFBD>结论ã€<EFBFBD>æ“<EFBFBD>作ã€<EFBFBD>模åžã€<EFBFBD>Pã€<EFBFBD>Iã€<EFBFBD>Cã€<EFBFBD>S
    • åŽç¼©åˆ—宽ã€<EFBFBD>模åžå<EFBFBD><EFBFBD>缩写(DS/Qwï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.4.3 实现主行(å<CB86>Œè¡Œï¼‰

    • 点击标题展开/æ”¶èµ·è¯<C3A8>æ<EFBFBD>®
    • æ‡çŒ®æ ‡é¢˜ã€<EFBFBD>DSåŒQwençš„PICO判æ­ï¼ˆå<EFBFBD>•å­—æ¯<EFBFBD>ï¼? - 冲çª<C3A7>状æ€<C3A6>(红色背景ï¼? - 结论Tag(纳å…?排除ï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.4.4 实现展开è¡? - 显示DSåŒQwen的详细PICOS判æ­ã€<C3A3>è¯<C3A8>æ<EFBFBD>®ã€<C3A3>ç<EFBFBD>†ç”? - 两æ <C3A6>布局(左DS,å<C592>³Qwenï¼? - 实际耗时ï¼? å°<C3A5>æ—¶

    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.4.5 实现冲çª<C3A7>高亮

    • 冲çª<EFBFBD>行背景色浅红(仅结论ä¸<EFBFBD>一致)
    • 冲çª<EFBFBD>Tag显示
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.4.6 实现å¤<C3A5>æ ¸Drawer

    • 使用 Ant Design Drawerï¼?000px宽)
    • 左侧70%:æ‡çŒ®è¯¦æƒ…ã€<C3A3>模åžåˆ¤æ­ã€<C3A3>è¯<C3A8>æ<EFBFBD>? - å<>³ä¾§30%:人工å¤<C3A5>核表å<C2A8>•(stickyï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.4.7 实现ç­é€‰Tab

    • 全部ã€<EFBFBD>冲çª<EFBFBD>ã€<EFBFBD>已纳入ã€<EFBFBD>å·²æŽé™¤ã€<EFBFBD>å·²å¤<EFBFBD>æ ¸
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T3.4.8 实现分页

    • å<EFBFBD>Žç«¯åˆ†é¡µï¼?0æ<30>?页)
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant

Day 14-15 验收标准 ✅:

  • âœ?审核工作å<C593>°å®Œæ•´å<C2B4>¯ç”?- âœ?表格å<C2BC>¯æ­£ç¡®å±•示ç­é€‰ç»“果(å<CB86>Œè¡Œï¼?- âœ?冲çª<C3A7>项高亮显示(红色背景ï¼?- âœ?å¤<C3A5>æ ¸Drawerå<72>¯å¼¹å‡ºå¹¶æ<C2B6><C3A6>交
  • âœ?进度实时更新ï¼?秒轮询)
  • âœ?列表顺åº<C3A5>与Excel上传一è‡?

🗓ï¸?Week 4: ç»“æžœå±•ç¤ºä¸Žé†æˆ<C3A6>æµè¯•(Day 16-20)✅ 已完æˆ?

完æˆ<EFBFBD>日期: 2025-11-21
实际耗时: 1天(3å°<C3A5>æ—¶ï¼? 完æˆ<EFBFBD>报åŠ: Week4完æˆ<EFBFBD>报åŠ
架构验è¯<EFBFBD>: âœ?完全符å<C2A6>ˆäºåŽŸç”Ÿå¼€å<E282AC>è§„èŒ?

Day 16: 结果统计与展��

å‰<EFBFBD>端任务

  • [✅] T4.1.1 实现统计æ¦è§ˆå<CB86>¡ç‰‡

    • ¸ªå<EFBFBD>¡ç‰‡ï¼ˆæ€»æ•°ã€<EFBFBD>纳入ã€<EFBFBD>æŽé™¤ã€<EFBFBD>å¾…å¤<EFBFBD>æ ¸ï¼? - 使用 Ant Design Statistic
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T4.1.2 实现 PRISMA å¼<C3A5>æŽé™¤æ€»ç»“

    • 按æŽé™¤åŽŸå åˆ†ç»„统计(å<EFBFBD>Žç«¯è<EFBFBD>šå<EFBFBD>ˆï¼? - 柱状å¾å±•示(Progress组件ï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T4.1.3 实现结果列表 Tab é¡? - 全部ã€<C3A3>已纳入ã€<C3A3>å·²æŽé™¤ã€<C3A3>å¾…å¤<C3A5>æ ¸ Tab

    • Tabæ•°é‡<EFBFBD>动æ€<EFBFBD>显ç¤? - 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T4.1.4 实现结果表格(混å<C2B7>ˆæ¹æ¡ˆï¼‰

    • 列:åº<EFBFBD>å<EFBFBD>·ã€<EFBFBD>标题ã€<EFBFBD>AI共识ã€<EFBFBD>æŽé™¤åŽŸå ã€<EFBFBD>人工最终决ç­ã€<EFBFBD>状æ€<EFBFBD>ã€<EFBFBD>æ“<EFBFBD>ä½? - å<>¯ç¹å‡»æ ‡é¢˜å±•开查çœå<E280B9>Œæ¨¡åžè¯¦ç»†åˆ¤æ? - 总宽åº?70px(无需横å<C2AA>滚动ï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T4.1.5 实现å<C2B0>Žç«¯ç»Ÿè®¡API

    • GET /projects/:projectId/statistics
    • Prisma并行è<EFBFBD>šå<EFBFBD>ˆæŸ¥è¯¢
    • 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant

Day 16 验收标准 ✅:

  • âœ?统计数æ<C2B0>®æ­£ç¡®å±•示
  • âœ?PRISMA 排除总结清晰
  • âœ?结果列表å<C2A8>¯æ­£å¸¸æŸ¥çœ?- âœ?æ··å<C2B7>ˆæ¹æ¡ˆè§£å†³é€»è¾çŸç¾
  • âœ?äºåŽŸç”Ÿæž¶æž„éªŒè¯<C3A8>通过

Day 17: Excel 导出功能

å<EFBFBD>Žç«¯ä»»åŠ¡

  • T4.2.1 å<>Žç«¯å®žçŽ°å¯¼å‡ºé€»è¾
    • 使用 exceljs åº? - 生æˆ<C3A6> Excel 文件
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • T4.2.2 实现导出 API
    • GET /api/v1/asl/projects/:id/screening/results/export
    • 支æŒ<EFBFBD>过滤å<EFBFBD>数(导出全éƒ?仅纳å…?仅排除)
    • 预计耗时ï¼?.5 å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?

å‰<EFBFBD>端任务

  • T4.2.3 å‰<C3A5>端实现导出按é®

    • 调用导出 API
    • 下载文件
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å‰<EFBFBD>端开å<EFBFBD>?
  • [✅] T4.2.1 åˆå»ºExcel导出工具

    • 文件:utils/excelExport.ts
    • 使用 xlsx 库(å‰<C3A5>端生æˆ<C3A6>ï¼Œé¶æ‡ä»¶è<C2B6>½ç˜ï¼? - 实际耗时ï¼?.5 å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T4.2.2 实现导出功能

    • 导出统计æ˜è¦<EFBFBD>ï¼?个Sheetï¼? - 导出åˆ<C3A5>ç­ç»“果(当å‰<C3A5>Tabï¼? - 导出选中é¡? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T4.2.3 Excelæ ¼å¼<C3A5>优åŒï¼ˆæ··å<C2B7>ˆæ¹æ¡ˆï¼‰

    • å…?0列完整信æ<C2A1>? - 包å<E280A6>«AI共识ã€<C3A3>å<EFBFBD>Œæ¨¡åžè¯¦ç»†åˆ¤æ­ã€<C3A3>人工决ç­? - 一行显示全部信æ<C2A1>? - 自动设置列宽
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant

Day 17 验收标准 ✅:

  • âœ?å<>¯æˆ<C3A6>功导å‡?Excelï¼?ç§<C3A7>æ¹å¼<C3A5>)
  • âœ?导出格å¼<C3A5>规范ï¼?0列)
  • âœ?æ•°æ<C2B0>®å®Œæ•´å‡†ç¡®
  • âœ?äºåŽŸç”Ÿï¼šå‰<C3A5>端生æˆ<C3A6>ï¼Œé¶æ‡ä»¶è<C2B6>½ç˜

Day 18: 完整æµ<C3A6>ç¨æµè¯• âœ?

醿ˆ<EFBFBD>æµè¯•任务

  • [✅] T4.3.1 端到端完整æµ<C3A6>ç¨æµè¯? - 上传 â†?ç­›é€?â†?å¤<C3A5>æ ¸ â†?统计 â†?导出

    • 使用真实çš?7 篇æµè¯•æ•°æ<C2B0>? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant + 用户
  • [✅] T4.3.2 UI/UX优åŒ

    • ä¿®å¤<EFBFBD>逻è¾çŸç¾ï¼ˆçº³å…¥ä¸<EFBFBD>显示æŽé™¤åŽŸå ï¼? - 实现混å<C2B7>ˆæ¹æ¡ˆï¼ˆAI共识+人工决策ï¼? - 优化表格宽度ï¼?70px,无需滚动ï¼? - 实际耗时ï¼? å°<C3A5>æ—¶
    • 完æˆ<EFBFBD>人:AI Assistant + 用户
  • [✅] T4.3.3 性能测试

    • 统计APIï¼?500msï¼?99篇)
    • Excel导出ï¼?3ç§ï¼ˆ199篇)
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant
  • [✅] T4.3.4 创建快速测试工å…? - scripts/get-test-projects.mjs

    • 自动推è<EFBFBD><EFBFBD>有数æ<EFBFBD>®çš„项ç®
    • 生æˆ<EFBFBD>æµè¯•URL
    • 实际耗时ï¼?0 分钟
    • 完æˆ<EFBFBD>人:AI Assistant

Day 18 验收标准 ✅:

  • âœ?完整æµ<C3A6>ç¨æ— é˜»å¡?- âœ?æ··å<C2B7>ˆæ¹æ¡ˆè§£å†³é—®é¢˜
  • âœ?性能达标
  • âœ?符å<C2A6>ˆäºåŽŸç”Ÿè§„èŒ?

Day 19: è´¨é‡<C3A9>验收

è´¨é‡<EFBFBD>验收任务

  • T4.4.1 准确率测è¯? - ä½¿ç”¨é‡æ ‡å‡†æ•°æ<C2B0>®é†ï¼?99 篇)

    • 计算准确率ã€<EFBFBD>å<EFBFBD>¬åžçއã€<EFBFBD>F1
    • 目标:准确率 â‰?85%
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:AIå·¥ç¨å¸?+ 医学专家
  • T4.4.2 å<>Œæ¨¡åžä¸€è‡´æ€§æµè¯? - 计算一致率

    • 目标:≥ 80%
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:AIå·¥ç¨å¸?
  • T4.4.3 JSON Schema 验è¯<C3A8>率æµè¯? - 统计验è¯<C3A8>通过çŽ? - 目标:≥ 95%

    • 预计耗时ï¼?0 分钟
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • T4.4.4 人工å¤<C3A5>核队列æµè¯•

    • 统计需人工å¤<EFBFBD>核的比ä¾? - 目标:≤ 20%
    • 预计耗时ï¼?0 分钟
    • 负责人:AIå·¥ç¨å¸?
  • T4.4.5 æ ¹æ<C2B9>®æµè¯•结果优åŒ

    • 调整æ<EFBFBD><EFBFBD>示è¯? - 调整分æµ<C3A6>阈å€? - 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:AIå·¥ç¨å¸? **Day 19 验收标准**ï¼?- âœ?准确çŽ?â‰?85%
  • âœ?å<>Œæ¨¡åžä¸€è‡´çއ â‰?80%

  • âœ?JSON Schema 验è¯<C3A8>通过çŽ?â‰?95%

  • âœ?人工å¤<C3A5>核队列 â‰?20%


Day 20: 文档与交�

文档任务

  • T4.5.1 编写用户手册

    • 功能ä»ç»<EFBFBD>
    • æ“<EFBFBD>作步骤
    • 常è§<EFBFBD>问题
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:产å“<EFBFBD>ç»<EFBFBD>ç<EFBFBD>
  • T4.5.2 编写技术文æ¡? - 架构设计

    • API 文档
    • æ•°æ<EFBFBD>®åº“设è®? - 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:å<EFBFBD>Žç«¯å¼€å<EFBFBD>?
  • T4.5.3 编写测试报告

    • 测试用例
    • 测试结果
    • è´¨é‡<EFBFBD>指标
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:测试
  • T4.5.4 代ç <C3A7>审查

    • 代ç <EFBFBD>规范检æŸ? - 安全性检æŸ? - 性能检æŸ? - 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:技æœ?Leader
  • T4.5.5 准备演示环境

    • 部署到测试环å¢? - 准备演示数æ<C2B0>®
    • 预计耗时ï¼? å°<C3A5>æ—¶
    • 负责人:è¿<EFBFBD>ç»´

**Day 20 验收标准**�- �文档完整

  • âœ?代ç <C3A7>è´¨é‡<C3A9>å<EFBFBD>ˆæ ¼
  • âœ?测试报告完整
  • âœ?演示环境就绪

📊 总体验收清å<E280A6>•ï¼?025-11-21 æ›´æ–°ï¼?

功能完整性(MVP核心�

  • [✅] 用户å<C2B7>¯ä¸Šä¼?Excel 文件
  • [✅] Excel æ ¼å¼<C3A5>验è¯<C3A8>æ­£å¸¸ï¼ˆä¸­è±æ‡è¡¨å¤´ï¼?- [✅] æ‡çŒ®åŽ»é‡<C3A9>功能正常(DOI优先,标题辅助)
  • [✅] AI å<>Œæ¨¡åžç­é€‰å<E280B0>¯è¿<C3A8>行(DeepSeek + Qwenï¼?- [✅] 冲çª<C3A7>自动检æµåŒæ ‡è®°ï¼ˆä»…结论ä¸<C3A4>一致)
  • [✅] 人工å¤<C3A5>核界é<C592>¢å®Œæ•´ï¼ˆDetailReviewDrawerï¼?- [✅] 批é‡<C3A9>选æ©åŠŸèƒ½æ­£å¸¸ï¼ˆCheckbox多选)
  • [✅] 结果统计正确展示(统计概è§?PRISMAæŽé™¤åˆ†æž<C3A6>ï¼?- [✅] Excel 导出功能正常ï¼?ç§<C3A7>导出æ¹å¼<C3A5>)
  • [✅] ASL模å<C2A1>—在顶部导航显示并å<C2B6>¯ç¹å‡?- [✅] æ··å<C2B7>ˆæ¹æ¡ˆè§£å†³é€»è¾çŸç¾ï¼ˆAI决ç­+人工决策明确区分ï¼?

è´¨é‡<EFBFBD>指标

  • [âš ï¸<C3AF>] 准确çŽ?60%ï¼?*ç®æ ‡85%,需Prompt优åŒ**ï¼?- [✅] å<>Œæ¨¡åžä¸€è‡´çއ 70-100%
  • [✅] JSON Schema 验è¯<C3A8>通过çŽ?100%
  • [âš ï¸<C3AF>] 人工å¤<C3A5>核队列 20-30%ï¼ˆç®æ ‡â‰¤20%ï¼?

性能指标

  • [âš ï¸<C3AF>] 199 篇文献筛é€?33-66 分钟(串行,**å<>¯ä¼˜åŒä¸º3-5å¹¶å<C2B6>**ï¼?- [✅] Excel 上传å“<C3A5>应 < 1 ç§ï¼ˆå†…存解æž<C3A6>ï¼?- [✅] 页é<C2B5>¢åŠ è½½ < 2 ç§?

架构验è¯<EFBFBD>

  • [✅] ASL模å<C2A1>—正确注册(左侧导航)
  • [✅] å<>Žç«¯è·¯ç”±æ³¨å†Œåˆ?/api/v1/asl/*
  • [✅] æ•°æ<C2B0>®ä¿<C3A4>å­˜åˆ?asl_schema
  • [✅] å¤<C3A5>用 common/llm æˆ<C3A6>功(LLMFactoryï¼?- [✅] Prisma Client 正常工作(全局实例ï¼?- [✅] äºåŽŸç”Ÿè¦<C3A8>æ±ï¼šå†…存解æž<C3A6>Excel
  • [✅] äºåŽŸç”Ÿè¦<C3A8>æ±ï¼šå¼æ­¥å¤„ç<E2809E>†ç­é€‰ä»»åŠ?


🚀 Phase 2: 智能Prompt生æˆ<C3A6>模å<C2A1>—(Week 5-7ï¼?

å‰<EFBFBD>ç½®æ<EFBFBD>¡ä»¶: MVP阶段(Week 1-4)完æˆ? **å¼€å<E282AC>卿œ?: 3å? **优先çº?: P1(高级功能)
详细设计: 智能Prompt生æˆ<EFBFBD>模å<EFBFBD>—å¼€å<EFBFBD>计åˆ

核心目标

解决问题: 消除AI与人类对边界情况的ç<E2809E>†è§£å·®å¼? 核心æµ<EFBFBD>ç¨:

用户输入PICOS â†?AI分æž<C3A6>边界情况 â†?用户确认 â†?生æˆ<C3A6>自定义Prompt â†?ç­›é€?```

---

### 🗓ï¸?Week 5: å<>Žç«¯å¼€å<E282AC>(Day 21-25ï¼?
#### Day 21-22: PICOS分æž<C3A6>æœ<C3A6>务

- [ ] **T5.1.1** åˆå»ºPrompté…<C3A9>置数æ<C2B0>®è¡?  - 文件:`backend/prisma/schema.prisma`
  - 新增模型:`PromptConfiguration`
  - 预计耗时ï¼?å°<C3A5>æ—¶

- [ ] **T5.1.2** 实现PICOS分æž<C3A6>æœ<C3A6>务
  - 文件:`backend/src/modules/asl/services/picosAnalyzer.ts`
  - 功能:调用LLM分æž<C3A6>PICOS,生æˆ<C3A6>边界问é¢?  - 预计耗时ï¼?å¤?
- [ ] **T5.1.3** API: 分æž<C3A6>PICOS
  - 路由:`POST /api/v1/asl/prompt/analyze`
  - 预计耗时ï¼?å°<C3A5>æ—¶

#### Day 23: Prompt生æˆ<C3A6>æœ<C3A6>务

- [ ] **T5.2.1** 实现Prompt生æˆ<C3A6>逻è¾
  - 文件:`backend/src/modules/asl/services/promptGenerator.ts`
  - 预计耗时��
- [ ] **T5.2.2** API: 确认边界规则并生æˆ<C3A6>Prompt
  - 路由:`POST /api/v1/asl/prompt/confirm-rules`
  - 预计耗时ï¼?å°<C3A5>æ—¶

#### Day 24: Promptä¿<C3A4>存与使ç”?
- [ ] **T5.3.1** API: ä¿<C3A4>存最终Prompt
  - 路由:`POST /api/v1/asl/prompt/save`
  - 预计耗时ï¼?å°<C3A5>æ—¶

- [ ] **T5.3.2** 修改ç­é€‰æœ<C3A6>务支æŒ<C3A6>自定义Prompt
  - æ°å¢žå<C5BE>数:`customPromptOverride?: string`
  - 预计耗时ï¼?å°<C3A5>æ—¶

#### Day 25: 测试与优�
- [ ] **T5.4.1** å<>•å…ƒæµè¯•
  - 预计耗时ï¼?å°<C3A5>æ—¶

- [ ] **T5.4.2** 醿ˆ<C3A6>æµè¯•
  - 预计耗时ï¼?å°<C3A5>æ—¶

---

### 🗓ï¸?Week 6: å‰<C3A5>端开å<E282AC>(Day 26-30ï¼?
#### Day 26: PICOS输入界é<C592>¢

- [ ] **T6.1.1** åˆå»ºPICOSé…<C3A9>置页é<C2B5>¢
  - 路径:`/asl/projects/:id/prompt-config`
  - 预计耗时ï¼?å°<C3A5>æ—¶

- [ ] **T6.1.2** PICOS输入表å<C2A8>•组件
  - 7个输入字æ®?  - 预计耗时ï¼?å°<C3A5>æ—¶

#### Day 27-28: 用户确认界é<C592>¢

- [ ] **T6.2.1** AIç<49>†è§£å±•示组件
  - 显示必须纳入/æŽé™¤çš„è¦<C3A8>ç´?  - 预计耗时ï¼?å¤?
- [ ] **T6.2.2** 边界问题确认组件
  - é€<C3A9>个确认边界问题
  - 预计耗时��
#### Day 29: Promptç¼è¾å™?
- [ ] **T6.3.1** Prompt预览与ç¼è¾ç»„ä»?  - 支æŒ<C3A6>用户ç¼è¾åŒä¿<C3A4>å­?  - 预计耗时ï¼?å¤?
#### Day 30: 醿ˆ<C3A6>与æµè¯?
- [ ] **T6.4.1** 完整æµ<C3A6>ç¨é†æˆ<C3A6>
  - 预计耗时ï¼?å°<C3A5>æ—¶

- [ ] **T6.4.2** UI/UX优åŒ
  - 预计耗时ï¼?å°<C3A5>æ—¶

---

### 🗓ï¸?Week 7: 优åŒä¸Žä¸Šçº¿ï¼ˆDay 31-35ï¼?
#### Day 31-32: 功能完善

- [ ] **T7.1.1** Prompt模æ<C2A1>¿ç®¡ç<C2A1>†
  - 预计耗时��
- [ ] **T7.1.2** 在ç­é€‰ä»»åŠ¡ä¸­ä½¿ç”¨è‡ªå®šä¹‰Prompt
  - 预计耗时ï¼?å°<C3A5>æ—¶

#### Day 33: 测试

- [ ] **T7.2.1** 端到端测�  - 预计耗时��
#### Day 34-35: 优化与上�
- [ ] **T7.3.1** 性能优化
  - 预计耗时ï¼?å°<C3A5>æ—¶

- [ ] **T7.3.2** 用户文档
  - 预计耗时ï¼?å°<C3A5>æ—¶

- [ ] **T7.3.3** 上线部署
  - 预计耗时ï¼?å°<C3A5>æ—¶

---

### Phase 2 验收标准

- [ ] 用户å<C2B7>¯ä»¥è¾“å…¥PICOSåŒçº³æŽæ ‡å‡?- [ ] AIå<49>¯ä»¥åˆ†æž<C3A6>并生æˆ?-8个边界问é¢?- [ ] 用户å<C2B7>¯ä»¥ç¡®è®¤æ¯<C3A6>个边界问题的处ç<E2809E>†æ¹å¼?- [ ] 系统å<C5B8>¯ä»¥è‡ªåŠ¨ç”Ÿæˆ<C3A6>自定义Prompt
- [ ] 用户å<C2B7>¯ä»¥ç¼è¾ç”Ÿæˆ<C3A6>çš„Prompt
- [ ] ç­é€‰ä»»åŠ¡å<C2A1>¯ä»¥ä½¿ç”¨è‡ªå®šä¹‰Prompt
- [ ] Prompt生æˆ<C3A6>准确çŽ?â‰?90%

---

## 📊 完整进度跟踪�025-11-21 更新�
| 阶段 | Week | 任务 | 状æ€?| 完æˆ<C3A6>æ—¶é—´ | 备注 |
|------|------|------|------|----------|------|
| **MVP** | Week 1 | æ•°æ<C2B0>®åº?å<>Žç«¯API | âœ?| 2025-11-18 | æ<><C3A6>å‰<C3A5>4天完æˆ?|
| **MVP** | Week 2 | LLMç­é€‰æ ¸å¿?| âœ?| 2025-11-21 | 准确çŽ?0%,需优化 |
| **MVP** | Week 3 | å‰<C3A5>端UI(设ç½?工作å<C593>°ï¼‰ | âœ?| 2025-11-21 | 实际在Week 2完æˆ<C3A6> |
| **MVP** | Week 4 | 结果展示+导出 | âœ?| 2025-11-21 | **æ··å<C2B7>ˆæ¹æ¡ˆï¼ŒäºåŽŸç”Ÿæž¶æž„** |
| **MVP优åŒ** | - | **Prompt优åŒ** | 🔄 | - | **ä¸ä¸€æ­¥ï¼šæ<C5A1><C3A6>å<EFBFBD>‡è‡?5%** |
| **MVP优åŒ** | - | å¹¶å<C2B6>处ç<E2809E>†ä¼˜åŒ | â<>¸ï¸<C3AF> | - | 3-5å¹¶å<C2B6>,æ<C592><C3A6>å<EFBFBD>‡æ€§èƒ½ |
| **Phase 2** | Week 5 | 智能Promptå<74>Žç«¯ | â¬?| - | å¾…MVPè´¨é‡<C3A9>达标å<E280A1>Žå¼€å§?|
| **Phase 2** | Week 6 | 智能Promptå‰<C3A5>端 | â¬?| - | - |
| **Phase 2** | Week 7 | 优化+上线 | �| - | - |

---

## 📚 相关文档

- [å¼€å<E282AC>里ç¨ç¢](./01-å¼€å<E282AC>里ç¨ç¢.md)
- [标题æ˜è¦<C3A8>åˆ<C3A5>ç­å¼€å<E282AC>计åˆ](./02-标题æ˜è¦<C3A8>åˆ<C3A5>ç­å¼€å<E282AC>计åˆ?md)
- [è´¨é‡<C3A9>ä¿<C3A4>éšœç­ç•¥](../02-技术设è®?06-è´¨é‡<C3A9>ä¿<C3A4>障与å<C5BD>¯è¿½æº¯ç­ç•¥.md)
- [技术选型](../02-技术设è®?07-æ‡çŒ®å¤„ç<E2809E>†æŠ€æœ¯é€‰åž.md)
- [API 设计规范](../02-技术设�02-API设计规范.md)
- [智能Prompt生æˆ<C3A6>模å<C2A1>—](../02-技术设è®?07-智能Prompt生æˆ<C3A6>模å<C2A1>—å¼€å<E282AC>计åˆ?md) â­?**新增**
- [å‰<C3A5>å<EFBFBD>Žç«¯æ¨¡å<C2A1>—åŒæž¶æž„设计-V2](../../../00-系统总体设计/å‰<C3A5>å<EFBFBD>Žç«¯æ¨¡å<C2A1>—åŒæž¶æž„设计-V2.md)
- [Schema隔离架构设计](../../../09-架构实施/01-Schema隔离架构设计�0个).md)

---

**更新日志**ï¼?- 2025-11-21: V3.3 æ´æ°ï¼ŒWeek 4功能完æˆ<C3A6>(结果展ç¤?Excel导出,混å<C2B7>ˆæ¹æ¡ˆè§£å†³é€»è¾çŸç¾ï¼?- 2025-11-21: V3.2 æ´æ°ï¼Œå<C592><C3A5>映MVP核心功能完æˆ<C3A6>状æ€<C3A6>(Week 1-3已完æˆ<C3A6>,准确çŽ?0%需优化ï¼?- 2025-11-18: V4.0 æ´æ°ï¼Œæ•´å<C2B4>ˆæ™ºèƒ½Prompt生æˆ<C3A6>模å<C2A1>—(Phase 2: Week 5-7ï¼?- 2025-11-18: V3.1 æ´æ°ï¼Œè¡¥å……å¹³å<C2B3>°åŸºç¡€è®¾æ½å®Œæˆ<C3A6>状æ€<C3A6>(¸ªæ ¸å¿ƒæ¨¡å<C2A1>—,ç¦<C3A7>æ­¢æ“<C3A6>作清å<E280A6>•ï¼?- 2025-11-16: V3.0 完全é‡<C3A9>写,基于真实架构(Frontend-v2 + Backend + asl_schema),详细到æ¯<C3A6>个任åŠ?- 2025-11-16: V2.0 完全é‡<C3A9>写,详细到æ¯<C3A6>个任务(预计耗时ã€<C3A3>负责人ã€<C3A3>验收标准)
- 2025-10-29: V1.0 åˆå»ºï¼Œåˆ<C3A5>å§å<E280B9> ä½<C3A4>符