- 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
21 KiB
ASL模块开发 - AI对接快速上下文
创建日期: 2025-11-16
最后更新: 2025-11-18 ⭐ 平台基础设施完成
适用对象: 新的AI编程助手、新开发人员
目的: 5分钟快速了解项目状态,立即开始工作
版本: V2.0
🎯 10秒速读: 医学科研AI平台,基础设施已完成(存储/日志/缓存/LLM等),现在开发ASL文献筛选模块,使用双模型AI(DeepSeek+GPT-4o,4.8秒响应),第一步定义数据库Schema。所有依赖就绪,可立即开始!
💬 给新AI的一段话(60秒速读)
你好!我是你的前任AI助手。我们刚完成了平台基础设施建设(2025-11-17~11-18),现在所有依赖已就绪,可以立即开始ASL模块开发。
关键信息:
- 项目:医学科研AI平台(AIclinicalresearch)
- 当前任务:开发ASL(AI智能文献)模块的第一个功能 - 标题摘要初筛
- 你的优势:
- ✅ 平台基础设施完整(存储/日志/缓存/任务队列/健康检查等8个模块)
- ✅ 5个LLM模型已集成(DeepSeek/GPT-4o/Claude/Qwen系列)
- ✅ 双模型筛选已验证(4.8秒完成,性能优异)
- ✅ 详细开发文档齐全(数据库设计/API规范/开发计划)
- 第一步:阅读
docs/03-业务模块/ASL-AI智能文献/04-开发计划/02-标题摘要初筛开发计划.md - 核心文档:
docs/00-系统总体设计/00-系统当前状态与开发指南.md(系统全貌)
今天的工作成果(2025-11-18):
- 实现了CloseAI集成(GPT-4o + Claude-4.5)
- 性能优化:双模型筛选从51秒降到4.8秒(10倍提升)
- 所有测试通过,代码就绪
建议的开始方式:
1. 阅读本文档(5分钟)
2. 查看 ASL开发计划文档(10分钟)
3. 开始第一天的开发:定义数据库Schema
祝开发顺利!平台已为你铺好了路。🚀
📍 项目定位
AIclinicalresearch 是一个医学科研AI平台,当前正在开发 ASL(AI智能文献) 模块。
ASL模块功能:AI驱动的医学文献筛选和数据提取系统(类似Cochrane系统评价流程)
✅ 当前状态(2025-11-18)⭐ 最新
已完成的基础工作
| 工作项 | 状态 | 完成时间 | 说明 |
|---|---|---|---|
| 数据库Schema隔离(10个Schema) | ✅ 完成 | Week 1 | 10个独立Schema |
| Frontend-v2架构(顶部导航+模块注册) | ✅ 完成 | Week 2 | 6个模块已注册 |
| Backend增量演进(legacy/common/modules) | ✅ 完成 | Week 2 | 三层架构 |
| 平台基础设施(8个核心模块) | ✅ 完成 | 2025-11-17 | 100%测试通过 ⭐ |
| CloseAI集成(GPT-4o + Claude) | ✅ 完成 | 2025-11-18 | 性能优化完成 ⭐ |
| ASL开发计划文档(3个) | ✅ 完成 | 2025-11-16 | 详细开发指南 |
| ASL模块代码 | 🚧 待开始 | NOW | 所有依赖就绪 ⭐ |
架构现状
Frontend-v2(新) Backend(混合) Database(隔离)
↓ ↓ ↓
顶部导航 + 6模块 legacy/ + common/ 10个独立Schema
ASL占位就绪 + modules/asl/ asl_schema待开发
✅ 架构已就绪 ✅ 平台基础设施完成 🚧 ASL表结构待定义
✅ 路由框架完成 ✅ LLM集成完成(5个模型) 🚧 Prisma模型待添加
⭐ 平台基础设施(2025-11-17完成)
8个核心模块,100%测试通过:
| # | 模块 | 功能 | 测试状态 |
|---|---|---|---|
| 1 | 存储服务 (common/storage/) |
文件上传下载(本地/OSS切换) | ✅ 100% |
| 2 | 日志系统 (common/logging/) |
结构化JSON日志 | ✅ 100% |
| 3 | 缓存服务 (common/cache/) |
内存/Redis缓存 | ✅ 100% |
| 4 | 异步任务 (common/jobs/) |
长时间任务队列 | ✅ 100% |
| 5 | 健康检查 (common/health/) |
SAE健康检查 | ✅ 100% |
| 6 | 监控指标 (common/monitoring/) |
性能监控 | ✅ 100% |
| 7 | 数据库连接池 (config/database.ts) |
Prisma连接池 | ✅ 100% |
| 8 | 环境配置 (config/env.ts) |
统一配置管理 | ✅ 100% |
使用方式:
import { storage, logger, cache, jobQueue } from '@/common'
⭐ LLM模型集成(2025-11-18完成)
5个模型已就绪:
| 模型 | 供应商 | 响应时间 | 成本 | 适用场景 |
|---|---|---|---|---|
| DeepSeek-V3 | DeepSeek | ~13秒 | 最低 | 快速初筛 ✅ |
| GPT-4o | OpenAI (CloseAI) | 1.5秒 ⭐ | 适中 | 高质量筛选 ✅ |
| Claude-4.5 | Anthropic (CloseAI) | 2.8秒 | 适中 | 第三方仲裁 ✅ |
| Qwen3-72B | 阿里云 | ~10秒 | 低 | 中文理解 ✅ |
| Qwen-Long | 阿里云 | ~15秒 | 低 | 超长上下文 ✅ |
双模型筛选性能: 4.8秒(DeepSeek + GPT-4o并行)
使用方式:
import { LLMFactory } from '@/common/llm/adapters'
const llm = LLMFactory.getAdapter('gpt-5') // 使用GPT-4o
🎯 下一步任务(ASL模块开发)
MVP阶段:标题摘要初筛功能
交付目标:
- Excel文献导入 → AI双模型筛选(DeepSeek + GPT-4o)⭐ → 人工复核 → 导出结果
- 准确率 ≥ 85%
- 响应时间:4.8秒/对(双模型并行)⭐
🚀 立即开始的原因:
- ✅ 平台基础设施100%就绪
- ✅ 5个LLM模型已集成测试
- ✅ 双模型筛选已验证(4.8秒)
- ✅ 开发文档完整详细
- ✅ 所有依赖已满足
- 成本 ≤ ¥50/1000篇
开发顺序:
Week 1: Prisma Schema设计(4张表) + 后端API框架 + 路由注册
Week 2: LLM筛选核心(双模型并行 + JSON Schema + 冲突检测)
Week 3: 前端模块开发(3个页面 + 审核工作台)
Week 4: 集成测试与验收(准确率测试 + 性能测试)
📚 必读文档(5个,按顺序)
1️⃣ 理解系统全貌(必读)⭐⭐⭐
docs/00-系统总体设计/00-系统当前状态与开发指南.md
- 🎯 重点:系统真实状态 + 核心开发规范 + 平台基础设施
- ⏱️ 阅读时间:20分钟
- 📌 关键信息:
- Part 1: 系统当前状态
- 三层架构设计
- 前端/后端真实目录结构
- ⭐ 平台基础设施(8个模块) - 重点
- ⭐ LLM模型支持(5个模型) - 重点
- 数据库Schema隔离
- API当前状态
- Part 2: 开发规范速查
- 代码规范(DO/DON'T)
- ⭐ 云原生开发规范 - 必须遵守
- Git提交规范
- 数据库/API设计规范
- Part 3: 重要原则与禁忌
- 5条核心原则
- 10条禁止操作
- Part 1: 系统当前状态
⭐ 为什么这是第一个文档:
- 包含最新的平台基础设施信息(2025-11-17完成)
- 包含CloseAI集成状态(2025-11-18完成)
- 所有信息基于真实代码验证
- 提供快速导航和上手路径
2️⃣ 理解数据库(必读)
docs/09-架构实施/01-Schema隔离架构设计(10个).md
- 🎯 重点:asl_schema 当前为空Schema,需在Week 3 Day 1定义表结构
- ⏱️ 阅读时间:5分钟
- 📌 关键信息:
- 10个Schema名称和用途
- asl_schema 占位说明
- Prisma multiSchema配置
3️⃣ 执行任务清单(核心)
docs/03-业务模块/ASL-AI智能文献/04-开发计划/03-任务分解.md
- 🎯 重点:80+个详细任务,每个有ID、耗时、验收标准
- ⏱️ 阅读时间:15分钟
- 📌 关键信息:
- 第一个任务:T1.1.1 - 设计Prisma Schema
- Week 1-4 每天的任务清单
- 每个任务的验收标准
4️⃣ 技术实现细节(参考)
docs/03-业务模块/ASL-AI智能文献/04-开发计划/02-标题摘要初筛开发计划.md
- 🎯 重点:Week 1 Day 1 包含完整的Prisma Schema代码(可直接复制)
- ⏱️ 阅读时间:20分钟
- 📌 关键信息:
- 完整的Prisma Schema定义(4个模型)
- LLM筛选服务代码示例
- 提示词模板示例
5️⃣ 质量保障策略(重要)
docs/03-业务模块/ASL-AI智能文献/02-技术设计/06-质量保障与可追溯策略.md
- 🎯 重点:双模型验证、JSON Schema、置信度评分、自动分流规则
- ⏱️ 阅读时间:10分钟
🚀 立即行动(第一步)
Step 1: 设计数据库Schema
# 1. 打开文件
code backend/prisma/schema.prisma
# 2. 添加4个模型(参考 02-标题摘要初筛开发计划.md Week 1 Day 1)
# - AslScreeningProject
# - AslLiterature
# - AslScreeningResult
# - AslScreeningTask
# 注意:每个模型必须添加 @@schema("asl_schema")
# 3. 在User模型中添加关联
# aslProjects AslScreeningProject[] @relation("AslProjects")
# 4. 运行迁移
cd backend
npx prisma migrate dev --name add_asl_screening_tables
npx prisma generate
Step 2: 创建后端目录
cd backend/src/modules
mkdir -p asl/{routes,controllers,services,schemas,types,utils}
Step 3: 注册路由
在 backend/src/index.ts 中添加:
import { aslRoutes } from './modules/asl/routes/index.js'
await app.register(aslRoutes, { prefix: '/api/v1/asl' })
📋 关键架构路径
Frontend-v2(真实)
frontend-v2/src/
├── framework/
│ ├── layout/
│ │ ├── MainLayout.tsx # ✅ 顶部导航布局
│ │ └── TopNavigation.tsx # ✅ 6个模块导航
│ └── modules/
│ └── moduleRegistry.ts # ✅ 模块注册中心
│
└── modules/asl/
├── index.tsx # 🚧 需移除 placeholder: true
└── routes.tsx # 🚧 待创建
Backend(真实)
backend/src/
├── common/ # ✅ 可复用
│ ├── llm/adapters/
│ │ ├── LLMFactory.ts # ✅ 调用DeepSeek+Qwen3
│ │ ├── DeepSeekAdapter.ts
│ │ └── QwenAdapter.ts
│ └── utils/
│ └── jsonParser.js # ✅ JSON解析工具
│
├── legacy/ # ✅ 现有业务(不动)
│ ├── routes/ # 7个路由文件
│ └── services/
│
└── modules/ # 🚧 新模块开发区
└── asl/ # 🚧 空目录(待创建)
├── routes/index.ts # 注册到 /api/v1/asl
├── controllers/
├── services/
│ └── llmScreeningService.ts # 复用common/llm
└── schemas/
Database(真实)
// backend/prisma/schema.prisma
datasource db {
provider = "postgresql"
schemas = [
"platform_schema", # ✅ users表
"aia_schema", # ✅ 5张表(AI问答)
"pkb_schema", # ✅ 5张表(知识库)
"asl_schema", # 🚧 空Schema(Week 3定义4张表)
// ...其他6个预留Schema
]
}
🎯 MVP验收标准
功能
- Excel上传 → 解析 → 导入
- AI双模型筛选(DeepSeek + Qwen3)
- 冲突检测和标记
- 人工复核界面
- 结果导出
质量指标
- 准确率 ≥ 85%
- 双模型一致率 ≥ 80%
- JSON Schema验证通过率 ≥ 95%
- 人工复核队列 ≤ 20%
性能指标
- 100篇文献筛选 ≤ 10分钟
- Excel上传响应 ≤ 3秒
🔑 技术要点速查
复用现有能力
// ✅ LLM调用(已实现)
import { LLMFactory } from '../../../common/llm/adapters/LLMFactory.js'
const llm = LLMFactory.createLLM('deepseek') // 或 'qwen'
// ✅ JSON解析(已实现)
import { parseJSON } from '../../../common/utils/jsonParser.js'
const result = parseJSON(llmOutput)
// ✅ 数据库操作(Prisma)
import { prisma } from '../../../config/database.js'
await prisma.aslScreeningProject.create({ data: {...} })
前端模块注册
// frontend-v2/src/modules/asl/index.tsx
const ASLModule: ModuleDefinition = {
id: 'literature-platform',
name: 'AI智能文献',
path: '/literature',
placeholder: false, // ← 改为 false
requiredVersion: 'advanced',
component: lazy(() => import('./routes')),
}
后端路由注册
// backend/src/index.ts
import { aslRoutes } from './modules/asl/routes/index.js'
await app.register(aslRoutes, { prefix: '/api/v1/asl' })
⚠️ 常见陷阱
| 陷阱 | 正确做法 |
|---|---|
| ❌ 创建新架构 | ✅ 在 Frontend-v2 和 Backend/modules/ 下开发 |
| ❌ 表放在 public schema | ✅ 必须使用 @@schema("asl_schema") |
| ❌ 重新实现LLM调用 | ✅ 复用 common/llm/adapters/LLMFactory.ts |
| ❌ 不更新moduleRegistry | ✅ 必须在 moduleRegistry.ts 注册 |
| ❌ 忽略编码规范 | ✅ 参考 docs/04-开发规范/06-Git提交规范.md |
📞 关键文件路径速查
开发计划文档
docs/03-业务模块/ASL-AI智能文献/04-开发计划/
├── 01-开发里程碑.md ⭐ MVP/V1.0/V2.0三阶段路线图
├── 02-标题摘要初筛开发计划.md ⭐⭐ 包含完整代码示例
└── 03-任务分解.md ⭐⭐⭐ 80+个详细任务清单(立即执行)
架构设计文档
docs/00-系统总体设计/
└── 前后端模块化架构设计-V2.md ⭐ 第51-519行:当前架构真实状态
docs/09-架构实施/
└── 01-Schema隔离架构设计(10个).md ⭐ 10个Schema全景
技术设计文档
docs/03-业务模块/ASL-AI智能文献/02-技术设计/
├── 06-质量保障与可追溯策略.md 双模型、JSON Schema、分流规则
└── 07-文献处理技术选型.md Excel、PDF、Unpaywall API
需求与原型
docs/03-业务模块/ASL-AI智能文献/
├── 01-需求分析/
│ ├── AI智能文献PRD(1)-产品概览.md
│ ├── AI智能文献PRD(2)-初筛与复筛.md
│ └── AI智能文献PRD(3)-提取与分析模块.md
└── 03-UI设计/
├── AI智能文献-标题摘要初筛原型.html # 原型图
└── AI智能文献-全文复筛.html
🔥 立即开始(3步走)
第1步:阅读核心文档(20分钟)
- 打开
前后端模块化架构设计-V2.md,阅读第51-519行 - 打开
03-任务分解.md,了解80+个任务清单 - 打开
02-标题摘要初筛开发计划.md,查看Week 1 Day 1的Prisma Schema代码
第2步:执行第一个任务(30分钟)
任务ID:T1.1.1 - 设计Prisma Schema
- 打开
backend/prisma/schema.prisma - 复制
02-标题摘要初筛开发计划.md中Week 1 Day 1的完整Prisma代码 - 添加4个模型:AslScreeningProject、AslLiterature、AslScreeningResult、AslScreeningTask
- 运行迁移:
cd backend && npx prisma migrate dev --name add_asl_screening_tables - 生成Client:
npx prisma generate
第3步:创建后端目录(10分钟)
cd backend/src/modules
mkdir -p asl/{routes,controllers,services,schemas,types,utils}
💡 快速问答
Q1:前端是左侧导航还是顶部导航?
A:✅ 顶部导航(Frontend-v2使用TopNavigation.tsx,显示6个模块)
Q2:后端代码放在哪里?
A:✅ backend/src/modules/asl/(新模块标准位置)
Q3:数据库表放在哪个Schema?
A:✅ 必须使用 @@schema("asl_schema"),不能放在public
Q4:如何调用LLM? ⭐ 重要
A:✅ 复用 common/llm/adapters/LLMFactory.ts
import { LLMFactory } from '@/common/llm/adapters'
// 5个模型已就绪:
const deepseek = LLMFactory.getAdapter('deepseek-v3') // 13秒,经济
const gpt4o = LLMFactory.getAdapter('gpt-5') // 1.5秒,高质 ⭐
const claude = LLMFactory.getAdapter('claude-4.5') // 2.8秒,仲裁
const qwen = LLMFactory.getAdapter('qwen3-72b') // 10秒,中文
Q5:如何使用平台基础设施? ⭐⭐⭐ 最重要 A:✅ 必须使用,禁止重复实现
import { storage, logger, cache, jobQueue } from '@/common'
// 文件上传(自动切换本地/OSS)
await storage.upload('literature/123.pdf', buffer)
// 结构化日志
logger.info('Screening started', { projectId, count })
// 缓存LLM响应(减少成本)
await cache.set('llm:key', response, 3600)
// 异步任务(避免Serverless超时)
const job = await jobQueue.push('asl:screening', data)
Q6:双模型筛选怎么实现?
A:✅ 参考 docs/02-通用能力层/01-LLM大模型网关/03-CloseAI集成指南.md
// 并行调用(4.8秒完成)
const [deepseekResult, gpt4oResult] = await Promise.all([
deepseek.chat(messages),
gpt4o.chat(messages)
])
Q7:API路由前缀是什么?
A:✅ /api/v1/asl/*(在 backend/src/index.ts 中注册)
Q8:第一个任务是什么?
A:✅ T1.1.1 - 在 backend/prisma/schema.prisma 中定义4个模型
📊 技术栈速查
| 层级 | 技术 | 版本 |
|---|---|---|
| 前端 | React + TypeScript + Ant Design | 19 + 5.x |
| 后端 | Node.js + Fastify + Prisma | 20 + 4.x + 6.17.0 |
| 数据库 | PostgreSQL | 15.x |
| LLM | DeepSeek-V3 + Qwen3-72B | via CloseAI |
🎬 工作流
1. 阅读 → 2. 设计Prisma Schema → 3. 创建后端目录 → 4. 实现API → 5. 前端开发 → 6. 测试
(20min) (2hr) (30min) (2天) (1周) (1周)
参考:03-任务分解.md 中的详细清单
⭐ 2025-11-17~11-18 重大进展(必读)
1. 平台基础设施完成(2025-11-17)
8个核心模块已实现并测试通过(100%):
// ASL开发中必须使用以下平台服务:
// 1. 存储服务(文件上传)
import { storage } from '@/common/storage'
await storage.upload('literature/file.pdf', buffer) // 自动切换本地/OSS
// 2. 日志系统(结构化日志)
import { logger } from '@/common/logging'
logger.info('Screening started', { projectId, count })
// 3. 缓存服务(LLM响应缓存)
import { cache } from '@/common/cache'
await cache.set('llm:key', response, 3600)
// 4. 异步任务(长时间LLM筛选)
import { jobQueue } from '@/common/jobs'
const job = await jobQueue.push('asl:screening', { literatureIds: [1,2,3] })
// 5. 数据库(全局Prisma实例)
import { prisma } from '@/config/database'
await prisma.aslProject.create({ data: {...} })
⚠️ 禁止的操作:
- ❌
fs.writeFileSync()- 使用storage.upload()替代 - ❌
new PrismaClient()- 使用全局prisma替代 - ❌ 同步处理LLM批量任务 - 使用
jobQueue异步处理 - ❌ Excel保存到磁盘 - 必须内存解析
xlsx.read(buffer)
参考文档:
docs/00-系统总体设计/00-系统当前状态与开发指南.md- Part 1.3 平台基础设施详解docs/04-开发规范/08-云原生开发规范.md- 必须遵守的规范
2. CloseAI集成完成(2025-11-18)
GPT-4o + Claude-4.5 已集成并性能优化:
| 模型 | 响应时间 | 适用场景 |
|---|---|---|
| DeepSeek-V3 | 13秒 | 快速初筛(经济) |
| GPT-4o | 1.5秒 ⭐ | 高质量筛选(推荐) |
| Claude-4.5 | 2.8秒 | 第三方仲裁 |
双模型筛选性能: 4.8秒(DeepSeek + GPT-4o并行)
推荐策略(ASL使用):
// 策略1:双模型对比(推荐)
const [deepseekResult, gpt4oResult] = await Promise.all([
LLMFactory.getAdapter('deepseek-v3').chat(messages),
LLMFactory.getAdapter('gpt-5').chat(messages)
])
// → 一致则采纳 → 不一致则人工复核
// 策略2:三模型共识仲裁(高质量要求)
// DeepSeek + GPT-4o → 不一致 → Claude仲裁 → 多数决
参考文档:
docs/02-通用能力层/01-LLM大模型网关/03-CloseAI集成指南.md- 完整使用指南
📌 最后提醒(开发前必读)
- 不要从零开始:Frontend-v2和Backend架构已完成,直接在此基础上开发
- ⭐ 必须使用平台基础设施:storage/logger/cache/jobQueue,禁止重复实现
- ⭐ 遵循云原生规范:Excel内存解析、异步处理LLM、无状态设计
- 遵循Schema隔离:所有ASL表必须在
asl_schema中 - 参考任务清单:
03-任务分解.md有80+个任务,逐个执行 - 代码在文档中:
02-标题摘要初筛开发计划.md包含完整代码示例,可直接复制 - ⭐ 推荐LLM组合:DeepSeek(初筛)+ GPT-4o(复核)→ 4.8秒完成
📞 求助指南
遇到问题时,优先查看:
- 架构问题 →
前后端模块化架构设计-V2.md - 数据库问题 →
Schema隔离架构设计(10个).md - 任务不清楚 →
03-任务分解.md - 代码不会写 →
02-标题摘要初筛开发计划.md(有示例) - 质量不达标 →
06-质量保障与可追溯策略.md
文档路径:AIclinicalresearch/docs/03-业务模块/ASL-AI智能文献/[AI对接] ASL模块快速上下文.md
下次更新:ASL模块MVP开发完成后
维护者:AI助手 + 开发团队
🎉 祝开发顺利!从 T1.1.1 开始吧!