# ASL模块开发 - AI对接快速上下文 > **创建日期:** 2025-11-16 > **适用对象:** 新的AI编程助手、新开发人员 > **目的:** 5分钟快速了解项目状态,立即开始工作 > **版本:** V1.0 --- ## 📍 项目定位 **AIclinicalresearch** 是一个医学科研AI平台,当前正在开发 **ASL(AI智能文献)** 模块。 **ASL模块功能**:AI驱动的医学文献筛选和数据提取系统(类似Cochrane系统评价流程) --- ## ✅ 当前状态(2025-11-16) ### 已完成的基础工作 | 工作项 | 状态 | 完成时间 | |--------|------|---------| | 数据库Schema隔离(10个Schema) | ✅ 完成 | Week 1 (11月初) | | Frontend-v2架构(顶部导航+模块注册) | ✅ 完成 | Week 2 Day 6-7 | | Backend增量演进(legacy/common/modules) | ✅ 完成 | Week 2 Day 8-9 | | ASL开发计划文档(3个) | ✅ 完成 | 2025-11-16 | | **ASL模块代码** | 🚧 未开始 | 待Week 3 | ### 架构现状 ``` Frontend-v2(新) Backend(混合) Database(隔离) ↓ ↓ ↓ 顶部导航 + 6模块 legacy/ + common/ 10个独立Schema ASL占位 + modules/asl/ asl_schema空 ✅ 架构已就绪 ✅ LLM可复用 🚧 表结构待定义 ✅ 路由框架完成 ✅ 工具可复用 🚧 Prisma模型待添加 ``` --- ## 🎯 下一步任务 ### MVP阶段(4周):标题摘要初筛 **交付目标**: - Excel文献导入 → AI双模型筛选(DeepSeek+Qwen3) → 人工复核 → 导出结果 - 准确率 ≥ 85% - 成本 ≤ ¥50/1000篇 **开发顺序**: ``` Week 1: Prisma Schema设计(4张表) + 后端API框架 + 路由注册 Week 2: LLM筛选核心(双模型并行 + JSON Schema + 冲突检测) Week 3: 前端模块开发(3个页面 + 审核工作台) Week 4: 集成测试与验收(准确率测试 + 性能测试) ``` --- ## 📚 必读文档(5个,按顺序) ### 1️⃣ 理解架构(必读) **`docs/00-系统总体设计/前后端模块化架构设计-V2.md`** - 📍 位置:第51-519行 - 🎯 重点:「📸 当前架构真实状态(2025-11-14)」章节 - ⏱️ 阅读时间:10分钟 - 📌 关键信息: - Frontend-v2 目录结构(`framework/` + `modules/`) - Backend 目录结构(`legacy/` + `common/` + `modules/`) - 10个Schema列表 - API路由规范(`/api/v1/asl/*`) ### 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", # 🚧 空Schema(Week 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智能文献PRD(1)-产品概览.md │ ├── AI智能文献PRD(2)-初筛与复筛.md │ └── AI智能文献PRD(3)-提取与分析模块.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分钟) **任务ID:T1.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`,已支持DeepSeek和Qwen3 **Q5:如何注册前端模块?** A:✅ 更新 `frontend-v2/src/modules/asl/index.tsx`,移除 `placeholder: true` **Q6:API路由前缀是什么?** A:✅ `/api/v1/asl/*`(在 `backend/src/index.ts` 中注册) **Q7:第一个任务是什么?** 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 中的详细清单 ``` --- ## 📌 最后提醒 1. **不要从零开始**:Frontend-v2和Backend架构已完成,直接在此基础上开发 2. **复用common层**:LLM、JSON解析、文档提取都可复用 3. **遵循Schema隔离**:所有ASL表必须在 `asl_schema` 中 4. **参考任务清单**:`03-任务分解.md` 有80+个任务,逐个执行 5. **代码在文档中**:`02-标题摘要初筛开发计划.md` 包含完整代码示例,可直接复制 --- ## 📞 求助指南 遇到问题时,优先查看: 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 开始吧!**