Files
AIclinicalresearch/docs/03-业务模块/ASL-AI智能文献/[AI对接] ASL模块快速上下文.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

626 lines
21 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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模块开发 - AI对接快速上下文
> **创建日期:** 2025-11-16
> **最后更新:** 2025-11-18 ⭐ 平台基础设施完成
> **适用对象:** 新的AI编程助手、新开发人员
> **目的:** 5分钟快速了解项目状态立即开始工作
> **版本:** V2.0
**🎯 10秒速读** 医学科研AI平台基础设施已完成存储/日志/缓存/LLM等现在开发ASL文献筛选模块使用双模型AIDeepSeek+GPT-4o4.8秒响应第一步定义数据库Schema。所有依赖就绪可立即开始
---
## 💬 给新AI的一段话60秒速读
你好我是你的前任AI助手。我们刚完成了平台基础设施建设2025-11-17~11-18现在**所有依赖已就绪可以立即开始ASL模块开发**。
**关键信息:**
- **项目**医学科研AI平台AIclinicalresearch
- **当前任务**开发ASLAI智能文献模块的第一个功能 - 标题摘要初筛
- **你的优势**
- ✅ 平台基础设施完整(存储/日志/缓存/任务队列/健康检查等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倍提升
- 所有测试通过,代码就绪
**建议的开始方式:**
```bash
1. 阅读本文档5分钟
2. 查看 ASL开发计划文档10分钟
3. 开始第一天的开发定义数据库Schema
```
祝开发顺利!平台已为你铺好了路。🚀
---
## 📍 项目定位
**AIclinicalresearch** 是一个医学科研AI平台当前正在开发 **ASLAI智能文献** 模块。
**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% |
**使用方式:**
```typescript
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并行
**使用方式:**
```typescript
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条禁止操作
**⭐ 为什么这是第一个文档:**
- 包含最新的平台基础设施信息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
```bash
# 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: 创建后端目录
```bash
cd backend/src/modules
mkdir -p asl/{routes,controllers,services,schemas,types,utils}
```
### Step 3: 注册路由
`backend/src/index.ts` 中添加:
```typescript
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真实
```prisma
// backend/prisma/schema.prisma
datasource db {
provider = "postgresql"
schemas = [
"platform_schema", # ✅ users表
"aia_schema", # ✅ 5张表AI问答
"pkb_schema", # ✅ 5张表知识库
"asl_schema", # 🚧 空SchemaWeek 3定义4张表
// ...其他6个预留Schema
]
}
```
---
## 🎯 MVP验收标准
### 功能
- [ ] Excel上传 → 解析 → 导入
- [ ] AI双模型筛选DeepSeek + Qwen3
- [ ] 冲突检测和标记
- [ ] 人工复核界面
- [ ] 结果导出
### 质量指标
- [ ] 准确率 ≥ 85%
- [ ] 双模型一致率 ≥ 80%
- [ ] JSON Schema验证通过率 ≥ 95%
- [ ] 人工复核队列 ≤ 20%
### 性能指标
- [ ] 100篇文献筛选 ≤ 10分钟
- [ ] Excel上传响应 ≤ 3秒
---
## 🔑 技术要点速查
### 复用现有能力
```typescript
// ✅ 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: {...} })
```
### 前端模块注册
```typescript
// 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')),
}
```
### 后端路由注册
```typescript
// 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智能文献PRD1-产品概览.md
│ ├── AI智能文献PRD2-初筛与复筛.md
│ └── AI智能文献PRD3-提取与分析模块.md
└── 03-UI设计/
├── AI智能文献-标题摘要初筛原型.html # 原型图
└── AI智能文献-全文复筛.html
```
---
## 🔥 立即开始3步走
### 第1步阅读核心文档20分钟
1. 打开 `前后端模块化架构设计-V2.md`阅读第51-519行
2. 打开 `03-任务分解.md`了解80+个任务清单
3. 打开 `02-标题摘要初筛开发计划.md`查看Week 1 Day 1的Prisma Schema代码
### 第2步执行第一个任务30分钟
**任务IDT1.1.1** - 设计Prisma Schema
1. 打开 `backend/prisma/schema.prisma`
2. 复制 `02-标题摘要初筛开发计划.md` 中Week 1 Day 1的完整Prisma代码
3. 添加4个模型AslScreeningProject、AslLiterature、AslScreeningResult、AslScreeningTask
4. 运行迁移:`cd backend && npx prisma migrate dev --name add_asl_screening_tables`
5. 生成Client`npx prisma generate`
### 第3步创建后端目录10分钟
```bash
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`
```typescript
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✅ 必须使用,禁止重复实现
```typescript
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`
```typescript
// 并行调用4.8秒完成)
const [deepseekResult, gpt4oResult] = await Promise.all([
deepseek.chat(messages),
gpt4o.chat(messages)
])
```
**Q7API路由前缀是什么**
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%**
```typescript
// 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使用**
```typescript
// 策略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` - 完整使用指南
---
## 📌 最后提醒(开发前必读)
1. **不要从零开始**Frontend-v2和Backend架构已完成直接在此基础上开发
2. **⭐ 必须使用平台基础设施**storage/logger/cache/jobQueue禁止重复实现
3. **⭐ 遵循云原生规范**Excel内存解析、异步处理LLM、无状态设计
4. **遵循Schema隔离**所有ASL表必须在 `asl_schema`
5. **参考任务清单**`03-任务分解.md` 有80+个任务,逐个执行
6. **代码在文档中**`02-标题摘要初筛开发计划.md` 包含完整代码示例,可直接复制
7. **⭐ 推荐LLM组合**DeepSeek初筛+ GPT-4o复核→ 4.8秒完成
---
## 📞 求助指南
遇到问题时,优先查看:
1. 架构问题 → `前后端模块化架构设计-V2.md`
2. 数据库问题 → `Schema隔离架构设计10个.md`
3. 任务不清楚 → `03-任务分解.md`
4. 代码不会写 → `02-标题摘要初筛开发计划.md`(有示例)
5. 质量不达标 → `06-质量保障与可追溯策略.md`
---
**文档路径**`AIclinicalresearch/docs/03-业务模块/ASL-AI智能文献/[AI对接] ASL模块快速上下文.md`
**下次更新**ASL模块MVP开发完成后
**维护者**AI助手 + 开发团队
---
**🎉 祝开发顺利!从 T1.1.1 开始吧!**