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
This commit is contained in:
@@ -1,72 +1,98 @@
|
||||
# ASL 模块开发里程碑
|
||||
|
||||
> **鏂囨。鐗堟湰锛?* V3.0
|
||||
> **鍒涘缓鏃ユ湡锛?* 2025-11-16
|
||||
> **缁存姢鑰咃細** AI鏅鸿兘鏂囩尞寮€鍙戝洟闃?
|
||||
> **文档版本:** V3.0
|
||||
> **创建日期:** 2025-11-16
|
||||
> **维护者:** AI智能文献开发团队
|
||||
> **最后更新:** 2025-11-16
|
||||
> **猸?閲嶈<E996B2>锛氬熀浜庣湡瀹炴灦鏋勶紙Frontend-v2 + Backend澧為噺婕旇繘锛?*
|
||||
> **⭐ 重要:基于真实架构(Frontend-v2 + Backend增量演进)**
|
||||
|
||||
---
|
||||
|
||||
## 📋 文档概述
|
||||
|
||||
鏈<EFBFBD>枃妗e畾涔?ASL锛圓I鏅鸿兘鏂囩尞锛夋ā鍧楃殑瀹屾暣寮€鍙戦噷绋嬬<E7BB8B>锛岄噰鐢?**MVP 鈫?V1.0 鈫?V2.0** 涓夐樁娈垫笎杩涘紡婕旇繘绛栫暐銆?
|
||||
**鏋舵瀯鍓嶆彁锛?*
|
||||
- 鉁?Frontend-v2 鍏ㄦ柊鏋舵瀯锛堥《閮ㄥ<E996AE>鑸?+ 妯″潡娉ㄥ唽锛? Week 2 Day 6-7 宸插畬鎴?- 鉁?Backend 澧為噺婕旇繘鏋舵瀯锛坙egacy/ + common/ + modules/锛? Week 2 Day 8-9 宸插畬鎴?- 鉁?鏁版嵁搴?10涓猄chema闅旂<E99785> - Week 1 宸插畬鎴?- 馃毀 ASL 妯″潡鍗犱綅灏辩华锛岀瓑寰?Week 3 寮€鍙?
|
||||
本文档定义 ASL(AI智能文献)模块的完整开发里程碑,采用 **MVP → V1.0 → V2.0** 三阶段渐进式演进策略。
|
||||
|
||||
**架构前提:**
|
||||
- ✅ Frontend-v2 全新架构(顶部导航 + 模块注册)- Week 2 Day 6-7 已完成
|
||||
- ✅ Backend 增量演进架构(legacy/ + common/ + modules/)- Week 2 Day 8-9 已完成
|
||||
- ✅ 数据库 10个Schema隔离 - Week 1 已完成
|
||||
- 🚧 ASL 模块占位就绪,等待 Week 3 开发
|
||||
|
||||
---
|
||||
|
||||
## 馃彈锔?褰撳墠鏋舵瀯鍩虹<E98DA9>锛堝凡瀹屾垚锛?
|
||||
## 🏗️ 当前架构基础(已完成)
|
||||
|
||||
### Frontend-v2 真实架构
|
||||
```
|
||||
frontend-v2/src/
|
||||
鈹溾攢鈹€ framework/ # 鉁?宸插疄鐜帮紙Week 2 Day 6-7锛?鈹? 鈹溾攢鈹€ layout/
|
||||
鈹? 鈹? 鈹溾攢鈹€ MainLayout.tsx # 鉁?涓诲竷灞€锛堥《閮ㄥ<E996AE>鑸<EFBFBD>級
|
||||
鈹? 鈹? 鈹斺攢鈹€ TopNavigation.tsx # 鉁?椤堕儴瀵艰埅鏍忥紙6涓<36>ā鍧楋級
|
||||
鈹? 鈹溾攢鈹€ modules/
|
||||
鈹? 鈹? 鈹溾攢鈹€ moduleRegistry.ts # 鉁?妯″潡娉ㄥ唽涓<E594BD>績
|
||||
鈹? 鈹? 鈹溾攢鈹€ ErrorBoundary.tsx # 鉁?閿欒<E996BF>杈圭晫
|
||||
鈹? 鈹? 鈹斺攢鈹€ types.ts # 鉁?妯″潡绫诲瀷瀹氫箟
|
||||
鈹? 鈹溾攢鈹€ router/
|
||||
鈹? 鈹? 鈹斺攢鈹€ RouteGuard.tsx # 鉁?璺<>敱瀹堝崼
|
||||
鈹? 鈹斺攢鈹€ permission/
|
||||
鈹? 鈹溾攢鈹€ PermissionContext.tsx # 鉁?鏉冮檺鎺у埗
|
||||
鈹? 鈹斺攢鈹€ usePermission.ts # 鉁?鏉冮檺Hook
|
||||
鈹?鈹斺攢鈹€ modules/ # 馃摝 涓氬姟妯″潡
|
||||
├── framework/ # ✅ 已实现(Week 2 Day 6-7)
|
||||
│ ├── layout/
|
||||
│ │ ├── MainLayout.tsx # ✅ 主布局(顶部导航)
|
||||
│ │ └── TopNavigation.tsx # ✅ 顶部导航栏(6个模块)
|
||||
│ ├── modules/
|
||||
│ │ ├── moduleRegistry.ts # ✅ 模块注册中心
|
||||
│ │ ├── ErrorBoundary.tsx # ✅ 错误边界
|
||||
│ │ └── types.ts # ✅ 模块类型定义
|
||||
│ ├── router/
|
||||
│ │ └── RouteGuard.tsx # ✅ 路由守卫
|
||||
│ └── permission/
|
||||
│ ├── PermissionContext.tsx # ✅ 权限控制
|
||||
│ └── usePermission.ts # ✅ 权限Hook
|
||||
│
|
||||
└── modules/ # 📦 业务模块
|
||||
├── asl/ # 🚧 ASL模块(占位,Week 3开发)
|
||||
鈹? 鈹斺攢鈹€ index.tsx # 鉁?鍗犱綅椤甸潰
|
||||
鈹溾攢鈹€ aia/ # 鉁?AI闂<49>瓟锛堝崰浣嶏級
|
||||
鈹溾攢鈹€ pkb/ # 鉁?鐭ヨ瘑搴擄紙鍗犱綅锛? 鈹溾攢鈹€ dc/ # 鉁?鏁版嵁娓呮礂锛堝崰浣嶏級
|
||||
鈹溾攢鈹€ ssa/ # 鉁?缁熻<E7BC81>鍒嗘瀽锛堝崰浣嶏級
|
||||
鈹斺攢鈹€ st/ # 鉁?缁熻<E7BC81>宸ュ叿锛堝崰浣嶏級
|
||||
│ └── index.tsx # ✅ 占位页面
|
||||
├── aia/ # ✅ AI问答(占位)
|
||||
├── pkb/ # ✅ 知识库(占位)
|
||||
├── dc/ # ✅ 数据清洗(占位)
|
||||
├── ssa/ # ✅ 统计分析(占位)
|
||||
└── st/ # ✅ 统计工具(占位)
|
||||
```
|
||||
|
||||
### Backend 真实架构
|
||||
```
|
||||
backend/src/
|
||||
鈹溾攢鈹€ legacy/ # 鉁?鐜版湁涓氬姟锛圵eek 2 Day 8-9瀹屾垚杩佺Щ锛?鈹? 鈹溾攢鈹€ routes/ # 7涓<37>矾鐢辨枃浠?鈹? 鈹? 鈹溾攢鈹€ projects.ts # AIA: 椤圭洰璺<E6B4B0>敱
|
||||
鈹? 鈹? 鈹溾攢鈹€ agents.ts # AIA: 鏅鸿兘浣撹矾鐢?鈹? 鈹? 鈹溾攢鈹€ conversations.ts # AIA: 瀵硅瘽璺<E798BD>敱
|
||||
鈹? 鈹? 鈹溾攢鈹€ chatRoutes.ts # AIA: 閫氱敤瀵硅瘽
|
||||
鈹? 鈹? 鈹溾攢鈹€ knowledgeBases.ts # PKB: 鐭ヨ瘑搴撹矾鐢?鈹? 鈹? 鈹溾攢鈹€ batchRoutes.ts # PKB: 鎵瑰<E98EB5>鐞嗚矾鐢?鈹? 鈹? 鈹斺攢鈹€ reviewRoutes.ts # RVW: 绋夸欢瀹℃煡璺<E785A1>敱
|
||||
鈹? 鈹溾攢鈹€ controllers/ # 鎺у埗鍣?鈹? 鈹斺攢鈹€ services/ # 鏈嶅姟
|
||||
鈹?鈹溾攢鈹€ common/ # 鉁?閫氱敤鑳藉姏灞傦紙宸插疄鐜帮級
|
||||
鈹? 鈹溾攢鈹€ llm/adapters/ # LLM閫傞厤鍣?鈹? 鈹? 鈹溾攢鈹€ DeepSeekAdapter.ts # 鉁?DeepSeek-V3
|
||||
鈹? 鈹? 鈹溾攢鈹€ QwenAdapter.ts # 鉁?Qwen3-72B
|
||||
鈹? 鈹? 鈹斺攢鈹€ LLMFactory.ts # 鉁?宸ュ巶绫?鈹? 鈹溾攢鈹€ rag/
|
||||
鈹? 鈹? 鈹斺攢鈹€ DifyClient.ts # 鉁?RAG瀹㈡埛绔?鈹? 鈹溾攢鈹€ document/
|
||||
鈹? 鈹? 鈹斺攢鈹€ ExtractionClient.ts # 鉁?鏂囨。鎻愬彇瀹㈡埛绔?鈹? 鈹溾攢鈹€ middleware/
|
||||
鈹? 鈹? 鈹斺攢鈹€ validateProject.ts # 鉁?楠岃瘉涓<E79889>棿浠?鈹? 鈹斺攢鈹€ utils/
|
||||
鈹? 鈹斺攢鈹€ jsonParser.ts # 鉁?JSON瑙f瀽宸ュ叿
|
||||
鈹?鈹斺攢鈹€ modules/ # 馃専 鏂版ā鍧楀紑鍙戝尯
|
||||
├── legacy/ # ✅ 现有业务(Week 2 Day 8-9完成迁移)
|
||||
│ ├── routes/ # 7个路由文件
|
||||
│ │ ├── projects.ts # AIA: 项目路由
|
||||
│ │ ├── agents.ts # AIA: 智能体路由
|
||||
│ │ ├── conversations.ts # AIA: 对话路由
|
||||
│ │ ├── chatRoutes.ts # AIA: 通用对话
|
||||
│ │ ├── knowledgeBases.ts # PKB: 知识库路由
|
||||
│ │ ├── batchRoutes.ts # PKB: 批处理路由
|
||||
│ │ └── reviewRoutes.ts # RVW: 稿件审查路由
|
||||
│ ├── controllers/ # 控制器
|
||||
│ └── services/ # 服务
|
||||
│
|
||||
├── common/ # ✅ 通用能力层(已实现)
|
||||
│ ├── llm/adapters/ # LLM适配器
|
||||
│ │ ├── DeepSeekAdapter.ts # ✅ DeepSeek-V3
|
||||
│ │ ├── QwenAdapter.ts # ✅ Qwen3-72B
|
||||
│ │ └── LLMFactory.ts # ✅ 工厂类
|
||||
│ ├── rag/
|
||||
│ │ └── DifyClient.ts # ✅ RAG客户端
|
||||
│ ├── document/
|
||||
│ │ └── ExtractionClient.ts # ✅ 文档提取客户端
|
||||
│ ├── middleware/
|
||||
│ │ └── validateProject.ts # ✅ 验证中间件
|
||||
│ └── utils/
|
||||
│ └── jsonParser.ts # ✅ JSON解析工具
|
||||
│
|
||||
└── modules/ # 🌟 新模块开发区
|
||||
└── asl/ # 🚧 ASL模块(空目录,Week 3开发)
|
||||
鈹斺攢鈹€ 锛堝緟鍒涘缓锛?```
|
||||
└── (待创建)
|
||||
```
|
||||
|
||||
### Database Schema锛堝凡闅旂<EFBFBD>锛?```
|
||||
### Database Schema(已隔离)
|
||||
```
|
||||
PostgreSQL 15 + Prisma 6.17.0
|
||||
|
||||
鉁?platform_schema - 鐢ㄦ埛琛<EFBFBD>紙users锛?鉁?aia_schema - AI闂<49>瓟锛坧rojects, conversations, messages绛夛級
|
||||
鉁?pkb_schema - 鐭ヨ瘑搴擄紙knowledge_bases, documents, batch_tasks绛夛級
|
||||
✅ platform_schema - 用户表(users)
|
||||
✅ aia_schema - AI问答(projects, conversations, messages等)
|
||||
✅ pkb_schema - 知识库(knowledge_bases, documents, batch_tasks等)
|
||||
🚧 asl_schema - AI智能文献(Week 3 定义表结构)
|
||||
馃搵 common_schema - 閫氱敤鑳藉姏灞傦紙棰勭暀锛?馃搵 dc_schema - 鏁版嵁娓呮礂锛堥<E9949B>鐣欙級
|
||||
📋 common_schema - 通用能力层(预留)
|
||||
📋 dc_schema - 数据清洗(预留)
|
||||
📋 rvw_schema - 稿件审查(预留)
|
||||
📋 admin_schema - 运营管理(预留)
|
||||
📋 ssa_schema - 统计分析(预留)
|
||||
@@ -78,9 +104,20 @@ PostgreSQL 15 + Prisma 6.17.0
|
||||
## 🎯 总体战略
|
||||
|
||||
```
|
||||
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? ASL 涓夐樁娈垫紨杩涜矾绾垮浘 鈹?鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? MVP (4鍛? V1.0 (6鍛? V2.0 (8鍛? 鈹?鈹? 鈹溾攢 鍩虹<E98DA9>鍙<EFBFBD>敤 鈹溾攢 楂樿川閲? 鈹溾攢 鍖诲<E98D96>绾? 鈹?鈹? 鈹溾攢 蹇<>€熼獙璇? 鈹溾攢 鏅鸿兘浼樺寲 鈹溾攢 鑷<>姩瀹¤<E780B9> 鈹?鈹? 鈹溾攢 鎴愭湰浼樺厛 鈹溾攢 璐ㄩ噺鎻愬崌 鈹溾攢 瀹屾暣杩芥函 鈹?鈹? 鈹斺攢 浜哄伐澶嶆牳 鈹斺攢 瑙勫垯楠岃瘉 鈹斺攢 HITL鏅鸿兘鍒嗘祦 鈹?鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
|
||||
鏍稿績璁捐<EFBFBD>鍘熷垯锛? 1. 鏋舵瀯鍏堣<E98D8F>锛氬湪宸插畬鎴愮殑 Frontend-v2 鍜?Backend 鏋舵瀯鍩虹<E98DA9>涓婂紑鍙? 2. 鍒嗘<E98D92>瀹炴柦锛氭瘡闃舵<E99783>浜や粯鍙<E7B2AF>敤鍔熻兘
|
||||
3. 璐ㄩ噺鍙<E599BA>帶锛氬噯纭<E599AF>巼浠?5% 鈫?90% 鈫?95%
|
||||
┌──────────────────────────────────────────────────────────────┐
|
||||
│ ASL 三阶段演进路线图 │
|
||||
├──────────────────────────────────────────────────────────────┤
|
||||
│ MVP (4周) V1.0 (6周) V2.0 (8周) │
|
||||
│ ├─ 基础可用 ├─ 高质量 ├─ 医学级 │
|
||||
│ ├─ 快速验证 ├─ 智能优化 ├─ 自动审计 │
|
||||
│ ├─ 成本优先 ├─ 质量提升 ├─ 完整追溯 │
|
||||
│ └─ 人工复核 └─ 规则验证 └─ HITL智能分流 │
|
||||
└──────────────────────────────────────────────────────────────┘
|
||||
|
||||
核心设计原则:
|
||||
1. 架构先行:在已完成的 Frontend-v2 和 Backend 架构基础上开发
|
||||
2. 分步实施:每阶段交付可用功能
|
||||
3. 质量可控:准确率从85% → 90% → 95%
|
||||
4. 成本可控:优先使用DeepSeek+Qwen3,可切换高端模型
|
||||
```
|
||||
|
||||
@@ -88,16 +125,16 @@ PostgreSQL 15 + Prisma 6.17.0
|
||||
|
||||
## 📊 三阶段里程碑对比
|
||||
|
||||
| 缁村害 | MVP (4鍛? | V1.0 (6鍛? | V2.0 (8鍛? |
|
||||
| 维度 | MVP (4周) | V1.0 (6周) | V2.0 (8周) |
|
||||
|------|----------|-----------|-----------|
|
||||
| **交付范围** | 标题摘要初筛 | + 全文复筛 + PDF提取 | + 数据提取 + 质量审计 |
|
||||
| **鍑嗙‘鐜囩洰鏍?* | 鈮?85% | 鈮?90% | 鈮?95% |
|
||||
| **妯″瀷缁勫悎** | DeepSeek + Qwen3 | 鎴愭湰浼樺寲绛栫暐 | 涓夋ā鍨嬩徊瑁?|
|
||||
| **璐ㄩ噺鎺у埗** | 鍙屾ā鍨嬮獙璇?+ JSON Schema | + Few-shot + 瑙勫垯寮曟搸 | + HITL + 鑷<EFBFBD>姩瀹¤<EFBFBD> |
|
||||
| **鍙<EFBFBD>拷婧<EFBFBD>€?* | 鍩烘湰鏃ュ織 | 瀹屾暣璇佹嵁閾?| 瀹¤<E780B9>绾ц<E7BBBE>褰?|
|
||||
| **鍓嶇<EFBFBD>** | 鍩虹<EFBFBD>宸ヤ綔鍙帮紙Frontend-v2锛?| 浼樺寲浜や簰 | 瀹屾暣UI |
|
||||
| **准确率目标** | ≥ 85% | ≥ 90% | ≥ 95% |
|
||||
| **模型组合** | DeepSeek + Qwen3 | 成本优化策略 | 三模型仲裁 |
|
||||
| **质量控制** | 双模型验证 + JSON Schema | + Few-shot + 规则引擎 | + HITL + 自动审计 |
|
||||
| **可追溯性** | 基本日志 | 完整证据链 | 审计级记录 |
|
||||
| **前端** | 基础工作台(Frontend-v2) | 优化交互 | 完整UI |
|
||||
| **后端** | modules/asl/核心功能 | + PDF服务集成 | + 高级质量保障 |
|
||||
| **鎴愭湰/1000绡?* | 楼5 | 楼21 | 楼24 + 浠茶<EFBFBD> |
|
||||
| **成本/1000篇** | ¥5 | ¥21 | ¥24 + 仲裁 |
|
||||
|
||||
---
|
||||
|
||||
@@ -105,15 +142,28 @@ PostgreSQL 15 + Prisma 6.17.0
|
||||
|
||||
### 阶段目标
|
||||
|
||||
**浜や粯鏍囧噯**锛?- 鉁?鏍囬<E98F8D>鎽樿<E98EBD>鍒濈瓫鍔熻兘瀹屾暣鍙<E69AA3>敤
|
||||
- 鉁?Excel 瀵煎叆銆丄I 鍙屾ā鍨嬬瓫閫夈€佷汉宸ュ<E5AEB8>鏍?- 鉁?鍑嗙‘鐜?鈮?85%
|
||||
- 鉁?鎴愭湰鎺у埗锛氣墹 楼50/1000 绡?- 鉁?鍓嶇<E98D93>闆嗘垚鍒?Frontend-v2 椤堕儴瀵艰埅
|
||||
- 鉁?鍚庣<E98D9A> API 娉ㄥ唽鍒?/api/v1/asl/*
|
||||
**交付标准**:
|
||||
- ✅ 标题摘要初筛功能完整可用
|
||||
- ✅ Excel 导入、AI 双模型筛选、人工复核
|
||||
- ✅ 准确率 ≥ 85%
|
||||
- ✅ 成本控制:≤ ¥50/1000 篇
|
||||
- ✅ 前端集成到 Frontend-v2 顶部导航
|
||||
- ✅ 后端 API 注册到 /api/v1/asl/*
|
||||
|
||||
### 閲岀▼纰戝垝鍒?
|
||||
#### **M1.1 - 鏁版嵁搴揝chema璁捐<E79281>**锛圵eek 1, Day 1锛?
|
||||
**浠诲姟**锛?- [ ] 璁捐<E79281> asl_schema 琛ㄧ粨鏋勶紙4寮犳牳蹇冭〃锛? - `asl_screening_projects`锛堢瓫閫夐」鐩<EFBFBD>〃锛? - `asl_literatures`锛堟枃鐚<EFBFBD>潯鐩<EFBFBD>〃锛? - `asl_screening_results`锛堢瓫閫夌粨鏋滆〃锛? - `asl_screening_tasks`锛堢瓫閫変换鍔¤〃锛?- [ ] 鍦?`backend/prisma/schema.prisma` 涓<>坊鍔犳ā鍨嬪畾涔? - 浣跨敤 `@@schema("asl_schema")` 鎸囧畾Schema
|
||||
- 瀹氫箟澶栭敭鍏崇郴锛堝紩鐢?`platform_schema.users`锛? - **娣诲姞 OSS 鐩稿叧瀛楁<E7809B>**锛堟敮鎸佷簯鍘熺敓閮ㄧ讲锛夛細
|
||||
### 里程碑划分
|
||||
|
||||
#### **M1.1 - 数据库Schema设计**(Week 1, Day 1)
|
||||
|
||||
**任务**:
|
||||
- [ ] 设计 asl_schema 表结构(4张核心表)
|
||||
- `asl_screening_projects`(筛选项目表)
|
||||
- `asl_literatures`(文献条目表)
|
||||
- `asl_screening_results`(筛选结果表)
|
||||
- `asl_screening_tasks`(筛选任务表)
|
||||
- [ ] 在 `backend/prisma/schema.prisma` 中添加模型定义
|
||||
- 使用 `@@schema("asl_schema")` 指定Schema
|
||||
- 定义外键关系(引用 `platform_schema.users`)
|
||||
- **添加 OSS 相关字段**(支持云原生部署):
|
||||
- `pdfUrl` - PDF访问URL
|
||||
- `pdfOssKey` - OSS存储Key
|
||||
- `pdfFileSize` - 文件大小
|
||||
@@ -124,129 +174,170 @@ PostgreSQL 15 + Prisma 6.17.0
|
||||
npx prisma generate
|
||||
```
|
||||
|
||||
**浜や粯鐗?*锛?- 鉁?asl_schema 琛ㄥ垱寤哄畬鎴?- 鉁?Prisma Client 鐢熸垚鎴愬姛
|
||||
- 鉁?鏁版嵁搴撹縼绉绘垚鍔?- 鉁?OSS 瀛楁<E7809B>棰勭暀瀹屾垚
|
||||
**交付物**:
|
||||
- ✅ asl_schema 表创建完成
|
||||
- ✅ Prisma Client 生成成功
|
||||
- ✅ 数据库迁移成功
|
||||
- ✅ OSS 字段预留完成
|
||||
|
||||
---
|
||||
|
||||
#### **M1.2 - 鍚庣<EFBFBD>API鎼<EFBFBD>缓**锛圵eek 1, Day 2-3锛?
|
||||
> **猸?鍓嶇疆鏉′欢锛?025-11-17 鏇存柊锛?*锛氬钩鍙板熀纭€璁炬柦宸插畬鎴愬疄鏂?鉁?
|
||||
> **瀹屾垚鐘舵€?*锛?涓<>牳蹇冩ā鍧楋紝100%娴嬭瘯閫氳繃
|
||||
#### **M1.2 - 后端API搭建**(Week 1, Day 2-3)
|
||||
|
||||
> **⭐ 前置条件(2025-11-17 更新)**:平台基础设施已完成实施 ✅
|
||||
> **完成状态**:8个核心模块,100%测试通过
|
||||
> **完成报告**:[平台基础设施实施完成报告](../../../08-项目管理/03-每周计划/2025-11-17-平台基础设施实施完成报告.md)
|
||||
> **使用指南**:[backend/src/common/README.md](../../../../backend/src/common/README.md)
|
||||
|
||||
**骞冲彴宸叉彁渚涚殑8涓<EFBFBD>牳蹇冩ā鍧楋紙鏃犻渶ASL妯″潡瀹炵幇锛?*锛?
|
||||
**平台已提供的8个核心模块(无需ASL模块实现)**:
|
||||
|
||||
| # | 模块 | 路径 | 使用方式 | 说明 |
|
||||
|---|------|------|---------|------|
|
||||
| 1 | **瀛樺偍鏈嶅姟** | `common/storage/` | `import { storage } from '@/common/storage'` | 鏂囦欢涓婁紶涓嬭浇锛堟湰鍦?OSS鍒囨崲锛?|
|
||||
| 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 | **寮傛<EFBFBD>浠诲姟** | `common/jobs/` | `import { jobQueue } from '@/common/jobs'` | 闀挎椂闂翠换鍔″<EFBFBD>鐞?|
|
||||
| 5 | **鍋ュ悍妫€鏌?* | `common/health/` | `import { registerHealthRoutes } from '@/common/health'` | SAE鍋ュ悍妫€鏌?|
|
||||
| 6 | **鐩戞帶鎸囨爣** | `common/monitoring/` | `import { Metrics } from '@/common/monitoring'` | 鎬ц兘鐩戞帶鍜屽憡璀?|
|
||||
| 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'` | 统一配置管理 |
|
||||
|
||||
**浠诲姟**锛?- [ ] 鍒涘缓 `backend/src/modules/asl/` 鐩<>綍缁撴瀯
|
||||
**任务**:
|
||||
- [ ] 创建 `backend/src/modules/asl/` 目录结构
|
||||
```
|
||||
modules/asl/
|
||||
├── routes/
|
||||
鈹? 鈹斺攢鈹€ index.ts # 璺<EFBFBD>敱娉ㄥ唽
|
||||
│ └── index.ts # 路由注册
|
||||
├── controllers/
|
||||
鈹? 鈹溾攢鈹€ projectController.ts # 椤圭洰鎺у埗鍣? 鈹? 鈹溾攢鈹€ literatureController.ts # 鏂囩尞鎺у埗鍣? 鈹? 鈹斺攢鈹€ screeningController.ts # 绛涢€夋帶鍒跺櫒
|
||||
│ ├── projectController.ts # 项目控制器
|
||||
│ ├── literatureController.ts # 文献控制器
|
||||
│ └── screeningController.ts # 筛选控制器
|
||||
├── services/
|
||||
鈹? 鈹溾攢鈹€ projectService.ts # 椤圭洰涓氬姟閫昏緫
|
||||
鈹? 鈹溾攢鈹€ literatureService.ts # 鏂囩尞涓氬姟閫昏緫
|
||||
鈹? 鈹斺攢鈹€ llmScreeningService.ts # LLM绛涢€夋湇鍔? 鈹溾攢鈹€ schemas/
|
||||
鈹? 鈹斺攢鈹€ screening.schema.ts # JSON Schema瀹氫箟
|
||||
│ ├── projectService.ts # 项目业务逻辑
|
||||
│ ├── literatureService.ts # 文献业务逻辑
|
||||
│ └── llmScreeningService.ts # LLM筛选服务
|
||||
├── schemas/
|
||||
│ └── screening.schema.ts # JSON Schema定义
|
||||
└── types/
|
||||
└── screening.types.ts # TypeScript类型
|
||||
```
|
||||
- [ ] 鍦?`backend/src/index.ts` 涓<EFBFBD>敞鍐孉SL璺<EFBFBD>敱
|
||||
- [ ] 在 `backend/src/index.ts` 中注册ASL路由
|
||||
```typescript
|
||||
import { aslRoutes } from './modules/asl/routes/index.js'
|
||||
await app.register(aslRoutes, { prefix: '/api/v1/asl' })
|
||||
```
|
||||
- [ ] 瀹炵幇鏍稿績API锛堝弬鑰?API璁捐<E79281>瑙勮寖鏂囨。锛? - `POST /api/v1/asl/projects` - 鍒涘缓椤圭洰
|
||||
- [ ] 实现核心API(参考 API设计规范文档)
|
||||
- `POST /api/v1/asl/projects` - 创建项目
|
||||
- `POST /api/v1/asl/projects/:id/literatures/import` - 导入文献
|
||||
- `POST /api/v1/asl/projects/:id/screening/start` - 鍚<EFBFBD>姩绛涢€? - `GET /api/v1/asl/projects/:id/screening/results` - 鑾峰彇缁撴灉
|
||||
- `POST /api/v1/asl/projects/:id/screening/start` - 启动筛选
|
||||
- `GET /api/v1/asl/projects/:id/screening/results` - 获取结果
|
||||
- [ ] **配置环境变量**
|
||||
```bash
|
||||
# .env.development(本地开发)
|
||||
STORAGE_TYPE=local
|
||||
|
||||
# .env.production锛堢敓浜х幆澧冿紝SAE閰嶇疆锛? STORAGE_TYPE=oss
|
||||
# .env.production(生产环境,SAE配置)
|
||||
STORAGE_TYPE=oss
|
||||
OSS_REGION=oss-cn-hangzhou
|
||||
OSS_BUCKET=aiclinical-prod
|
||||
```
|
||||
|
||||
**浜や粯鐗?*锛?- 鉁?ASL鍚庣<E98D9A>鐩<EFBFBD>綍缁撴瀯瀹屾暣
|
||||
- 鉁?API璺<49>敱娉ㄥ唽鎴愬姛
|
||||
- 鉁?鏍稿績API鍙<49>皟鐢<E79A9F>紙Postman娴嬭瘯閫氳繃锛?- 鉁?姝e父浣跨敤骞冲彴鏈嶅姟锛坰torage/logger/cache/jobQueue/prisma绛?涓<>ā鍧楋級
|
||||
**交付物**:
|
||||
- ✅ ASL后端目录结构完整
|
||||
- ✅ API路由注册成功
|
||||
- ✅ 核心API可调用(Postman测试通过)
|
||||
- ✅ 正常使用平台服务(storage/logger/cache/jobQueue/prisma等8个模块)
|
||||
|
||||
---
|
||||
|
||||
#### **M1.3 - LLM绛涢€夋牳蹇?*锛圵eek 2, Day 1-2锛?
|
||||
**浠诲姟**锛?- [ ] 瀹炵幇鍙屾ā鍨嬪苟琛岃皟鐢ㄩ€昏緫
|
||||
#### **M1.3 - LLM筛选核心**(Week 2, Day 1-2)
|
||||
|
||||
**任务**:
|
||||
- [ ] 实现双模型并行调用逻辑
|
||||
- 复用 `common/llm/adapters/LLMFactory.ts`
|
||||
- 调用 DeepSeek-V3 + Qwen3-72B
|
||||
- [ ] 瀹氫箟JSON Schema锛圥ICO鍒ゆ柇缁撴瀯锛?- [ ] 璁捐<E79281>鎻愮ず璇嶆ā鏉匡紙v1.0.0锛? - 瀛樻斁鍦?`backend/prompts/asl/screening/v1.0.0-basic.txt`
|
||||
- [ ] 瀹炵幇鍐茬獊妫€娴嬬畻娉?- [ ] 瀹炵幇鑷<E5B987>姩鍒嗘祦瑙勫垯锛堢疆淇″害 < 0.7 鈫?浜哄伐澶嶆牳锛?
|
||||
**浜や粯鐗?*锛?- 鉁?鍙屾ā鍨嬪彲鎴愬姛璋冪敤
|
||||
- 鉁?JSON Schema楠岃瘉閫氳繃鐜?> 95%
|
||||
- 鉁?鍐茬獊妫€娴嬪噯纭?
|
||||
- [ ] 定义JSON Schema(PICO判断结构)
|
||||
- [ ] 设计提示词模板(v1.0.0)
|
||||
- 存放在 `backend/prompts/asl/screening/v1.0.0-basic.txt`
|
||||
- [ ] 实现冲突检测算法
|
||||
- [ ] 实现自动分流规则(置信度 < 0.7 → 人工复核)
|
||||
|
||||
**交付物**:
|
||||
- ✅ 双模型可成功调用
|
||||
- ✅ JSON Schema验证通过率 > 95%
|
||||
- ✅ 冲突检测准确
|
||||
|
||||
---
|
||||
|
||||
#### **M1.4 - 鍓嶇<EFBFBD>妯″潡寮€鍙?*锛圵eek 2-3锛?
|
||||
**浠诲姟**锛?- [ ] 鏇存柊 `frontend-v2/src/modules/asl/index.tsx`
|
||||
#### **M1.4 - 前端模块开发**(Week 2-3)
|
||||
|
||||
**任务**:
|
||||
- [ ] 更新 `frontend-v2/src/modules/asl/index.tsx`
|
||||
```typescript
|
||||
// 绉婚櫎鍗犱綅鏍囪<EFBFBD>锛屽疄鐜扮湡瀹炴ā鍧? const ASLModule: ModuleDefinition = {
|
||||
// 移除占位标记,实现真实模块
|
||||
const ASLModule: ModuleDefinition = {
|
||||
id: 'literature-platform',
|
||||
name: 'AI智能文献',
|
||||
path: '/literature',
|
||||
icon: FileSearchOutlined,
|
||||
component: lazy(() => import('./routes')),
|
||||
placeholder: false, // 鈫?鏀逛负 false
|
||||
placeholder: false, // ← 改为 false
|
||||
requiredVersion: 'advanced',
|
||||
}
|
||||
```
|
||||
- [ ] 鍒涘缓 `frontend-v2/src/modules/asl/` 瀛愮洰褰? ```
|
||||
- [ ] 创建 `frontend-v2/src/modules/asl/` 子目录
|
||||
```
|
||||
asl/
|
||||
├── index.tsx # 模块定义
|
||||
├── routes.tsx # 路由配置
|
||||
├── pages/
|
||||
鈹? 鈹溾攢鈹€ ProjectList.tsx # 椤圭洰鍒楄〃
|
||||
鈹? 鈹溾攢鈹€ ScreeningSettings.tsx # 璁剧疆涓庡惎鍔? 鈹? 鈹溾攢鈹€ ScreeningWorkbench.tsx # 瀹℃牳宸ヤ綔鍙? 鈹? 鈹斺攢鈹€ ScreeningResults.tsx # 鍒濈瓫缁撴灉
|
||||
│ ├── ProjectList.tsx # 项目列表
|
||||
│ ├── ScreeningSettings.tsx # 设置与启动
|
||||
│ ├── ScreeningWorkbench.tsx # 审核工作台
|
||||
│ └── ScreeningResults.tsx # 初筛结果
|
||||
├── components/
|
||||
鈹? 鈹溾攢鈹€ ExcelUploader.tsx # Excel涓婁紶
|
||||
鈹? 鈹溾攢鈹€ ScreeningTable.tsx # 绛涢€夎〃鏍? 鈹? 鈹溾攢鈹€ DualModelModal.tsx # 鍙岃<E98D99>鍥炬ā鎬佹<E98EAC>
|
||||
鈹? 鈹斺攢鈹€ ResultsExport.tsx # 缁撴灉瀵煎嚭
|
||||
│ ├── ExcelUploader.tsx # Excel上传
|
||||
│ ├── ScreeningTable.tsx # 筛选表格
|
||||
│ ├── DualModelModal.tsx # 双视图模态框
|
||||
│ └── ResultsExport.tsx # 结果导出
|
||||
├── api/
|
||||
鈹? 鈹溾攢鈹€ projectApi.ts # 椤圭洰API
|
||||
鈹? 鈹溾攢鈹€ screeningApi.ts # 绛涢€堿PI
|
||||
鈹? 鈹斺攢鈹€ index.ts
|
||||
│ ├── projectApi.ts # 项目API
|
||||
│ ├── screeningApi.ts # 筛选API
|
||||
│ └── index.ts
|
||||
├── hooks/
|
||||
鈹? 鈹溾攢鈹€ useScreening.ts # 绛涢€塇ook
|
||||
鈹? 鈹斺攢鈹€ useLiterature.ts # 鏂囩尞Hook
|
||||
│ ├── useScreening.ts # 筛选Hook
|
||||
│ └── useLiterature.ts # 文献Hook
|
||||
└── types/
|
||||
└── screening.ts # 类型定义
|
||||
```
|
||||
- [ ] 瀹炵幇Excel涓婁紶鍔熻兘锛堜娇鐢?`xlsx` 搴擄級
|
||||
- [ ] 瀹炵幇瀹℃牳宸ヤ綔鍙帮紙琛ㄦ牸鍖栧竷灞€锛屽弬鑰冨師鍨嬪浘锛?- [ ] 瀹炵幇鍙岃<E98D99>鍥惧師鏂囧<E98F82>鏌ユā鎬佹<E98EAC>
|
||||
- [ ] 瀹炵幇缁撴灉灞曠ず鍜屽<EFBFBD>鍑?
|
||||
**浜や粯鐗?*锛?- 鉁?ASL妯″潡鍦ㄩ《閮ㄥ<E996AE>鑸<EFBFBD>樉绀哄苟鍙<E88B9F>偣鍑?- 鉁?鍓嶇<E98D93>3涓<33>富瑕侀〉闈㈠畬鏁?- 鉁?鍓嶅悗绔<E68297>仈璋冩垚鍔?
|
||||
- [ ] 实现Excel上传功能(使用 `xlsx` 库)
|
||||
- [ ] 实现审核工作台(表格化布局,参考原型图)
|
||||
- [ ] 实现双视图原文审查模态框
|
||||
- [ ] 实现结果展示和导出
|
||||
|
||||
**交付物**:
|
||||
- ✅ ASL模块在顶部导航显示并可点击
|
||||
- ✅ 前端3个主要页面完整
|
||||
- ✅ 前后端联调成功
|
||||
|
||||
---
|
||||
|
||||
#### **M1.5 - 闆嗘垚娴嬭瘯涓庨獙鏀?*锛圵eek 4锛?
|
||||
**浠诲姟**锛?- [ ] 绔<>埌绔<E59F8C>畬鏁存祦绋嬫祴璇? - 涓婁紶 199绡囨枃鐚?Excel 鈫?绛涢€?鈫?澶嶆牳 鈫?瀵煎嚭
|
||||
- [ ] 鍑嗙‘鐜囨祴璇曪紙浣跨敤閲戞爣鍑嗘暟鎹<E69A9F>泦锛? - 鐩<>爣锛氣墺 85%
|
||||
#### **M1.5 - 集成测试与验收**(Week 4)
|
||||
|
||||
**任务**:
|
||||
- [ ] 端到端完整流程测试
|
||||
- 上传 199篇文献 Excel → 筛选 → 复核 → 导出
|
||||
- [ ] 准确率测试(使用金标准数据集)
|
||||
- 目标:≥ 85%
|
||||
- [ ] 性能测试
|
||||
- 100绡囨枃鐚<EFBFBD>瓫閫?鈮?10鍒嗛挓
|
||||
- [ ] 淇<EFBFBD><EFBFBD>Bug鍜屼紭鍖?
|
||||
**浜や粯鐗?*锛?- 鉁?鍑嗙‘鐜?鈮?85%
|
||||
- 鉁?鍙屾ā鍨嬩竴鑷寸巼 鈮?80%
|
||||
- 鉁?JSON Schema楠岃瘉閫氳繃鐜?鈮?95%
|
||||
- 鉁?浜哄伐澶嶆牳闃熷垪 鈮?20%
|
||||
- 100篇文献筛选 ≤ 10分钟
|
||||
- [ ] 修复Bug和优化
|
||||
|
||||
**交付物**:
|
||||
- ✅ 准确率 ≥ 85%
|
||||
- ✅ 双模型一致率 ≥ 80%
|
||||
- ✅ JSON Schema验证通过率 ≥ 95%
|
||||
- ✅ 人工复核队列 ≤ 20%
|
||||
|
||||
---
|
||||
|
||||
@@ -254,47 +345,72 @@ PostgreSQL 15 + Prisma 6.17.0
|
||||
|
||||
### 阶段目标
|
||||
|
||||
**浜や粯鏍囧噯**锛?- 鉁?鏂板<E98F82>鍏ㄦ枃澶嶇瓫鍔熻兘
|
||||
- 鉁?PDF 鎻愬彇闆嗘垚锛圢ougat + PyMuPDF锛?- 鉁?Unpaywall API 闆嗘垚锛堣嚜鍔ㄤ笅杞藉叏鏂囷級
|
||||
- 鉁?Few-shot 绀轰緥搴?- 鉁?瑙勫垯寮曟搸楠岃瘉
|
||||
- 鉁?鍑嗙‘鐜?鈮?90%
|
||||
**交付标准**:
|
||||
- ✅ 新增全文复筛功能
|
||||
- ✅ PDF 提取集成(Nougat + PyMuPDF)
|
||||
- ✅ Unpaywall API 集成(自动下载全文)
|
||||
- ✅ Few-shot 示例库
|
||||
- ✅ 规则引擎验证
|
||||
- ✅ 准确率 ≥ 90%
|
||||
|
||||
### 閲岀▼纰戝垝鍒?
|
||||
#### **M2.1 - PDF 鎻愬彇鏈嶅姟闆嗘垚**锛圵eek 5锛?
|
||||
**浠诲姟**锛?- [ ] 灏佽<E7818F> `ExtractionClient`锛堝凡鏈?`common/document/ExtractionClient.ts`锛岄渶浼樺寲锛?- [ ] 瀹炵幇鑷<E5B987>姩璇<E5A7A9>█妫€娴嬪拰绛栫暐閫夋嫨
|
||||
- [ ] Python 寰<>湇鍔′紭鍖栵紙`extraction_service/`锛? - 浼樺寲 Nougat 璋冪敤鎬ц兘
|
||||
- 娣诲姞瓒呮椂鍜岄敊璇<E6958A><E79287>鐞?- [ ] 瀹炵幇 PDF 璐ㄩ噺璇勪及閫昏緫
|
||||
### 里程碑划分
|
||||
|
||||
**浜や粯鐗?*锛?- 鉁?鍙<>垚鍔熸彁鍙栬嫳鏂囧尰瀛<E5B0B0>DF锛?0-30椤碉級
|
||||
- 鉁?鎻愬彇鍑嗙‘鐜?> 90%
|
||||
#### **M2.1 - PDF 提取服务集成**(Week 5)
|
||||
|
||||
**任务**:
|
||||
- [ ] 封装 `ExtractionClient`(已有 `common/document/ExtractionClient.ts`,需优化)
|
||||
- [ ] 实现自动语言检测和策略选择
|
||||
- [ ] Python 微服务优化(`extraction_service/`)
|
||||
- 优化 Nougat 调用性能
|
||||
- 添加超时和错误处理
|
||||
- [ ] 实现 PDF 质量评估逻辑
|
||||
|
||||
**交付物**:
|
||||
- ✅ 可成功提取英文医学PDF(10-30页)
|
||||
- ✅ 提取准确率 > 90%
|
||||
|
||||
---
|
||||
|
||||
#### **M2.2 - Unpaywall API 闆嗘垚**锛圵eek 5锛?
|
||||
**浠诲姟**锛?- [ ] 鍒涘缓 `backend/src/common/literature/UnpaywallClient.ts`
|
||||
- [ ] 瀹炵幇鎵归噺鏌ヨ<E98F8C> DOI 鍙<>笅杞芥€?- [ ] 瀹炵幇 PDF 涓嬭浇鍔熻兘
|
||||
#### **M2.2 - Unpaywall API 集成**(Week 5)
|
||||
|
||||
**任务**:
|
||||
- [ ] 创建 `backend/src/common/literature/UnpaywallClient.ts`
|
||||
- [ ] 实现批量查询 DOI 可下载性
|
||||
- [ ] 实现 PDF 下载功能
|
||||
- [ ] 文件存储管理
|
||||
|
||||
**浜や粯鐗?*锛?- 鉁?鐢ㄦ埛鍙<E59F9B>竴閿<E7ABB4><E996BF>鏌?100 绡囨枃鐚<E69E83>殑鍙<E6AE91>笅杞芥€?- 鉁?鍙<>嚜鍔ㄤ笅杞?OA 鍏ㄦ枃
|
||||
**交付物**:
|
||||
- ✅ 用户可一键检查 100 篇文献的可下载性
|
||||
- ✅ 可自动下载 OA 全文
|
||||
|
||||
---
|
||||
|
||||
#### **M2.3 - 鍏ㄦ枃澶嶇瓫鍔熻兘**锛圵eek 6-7锛?
|
||||
**浠诲姟**锛?- [ ] 鎵╁睍鏁版嵁搴撹〃锛坄asl_full_text_screening_results`锛?- [ ] 鍚庣<E98D9A>鍏ㄦ枃澶嶇瓫API
|
||||
#### **M2.3 - 全文复筛功能**(Week 6-7)
|
||||
|
||||
**任务**:
|
||||
- [ ] 扩展数据库表(`asl_full_text_screening_results`)
|
||||
- [ ] 后端全文复筛API
|
||||
- [ ] 前端全文审核工作台(复用组件 + PDF查看器)
|
||||
|
||||
**浜や粯鐗?*锛?- 鉁?鐢ㄦ埛鍙<E59F9B><E98D99>鍒濈瓫绾冲叆鏂囩尞杩涜<E69DA9>鍏ㄦ枃澶嶇瓫
|
||||
- 鉁?鏀<>寔 PDF 鍦ㄧ嚎鏌ョ湅鍜屾爣娉?
|
||||
**交付物**:
|
||||
- ✅ 用户可对初筛纳入文献进行全文复筛
|
||||
- ✅ 支持 PDF 在线查看和标注
|
||||
|
||||
---
|
||||
|
||||
#### **M2.4 - 璐ㄩ噺澧炲己鍔熻兘**锛圵eek 8-10锛?
|
||||
**浠诲姟**锛?- [ ] 浜哄伐鏍囨敞 20-30 涓?Few-shot 绀轰緥
|
||||
#### **M2.4 - 质量增强功能**(Week 8-10)
|
||||
|
||||
**任务**:
|
||||
- [ ] 人工标注 20-30 个 Few-shot 示例
|
||||
- [ ] 定义验证规则(样本量、P值、必填字段)
|
||||
- [ ] 瀹炵幇鎴愭湰浼樺寲绛栫暐锛堝揩閫熷垵绛?+ 楂樹环鍊煎<E98D8A>鏍革級
|
||||
- [ ] 瀹屽杽璇佹嵁閾捐<E996BE>褰?
|
||||
**浜や粯鐗?*锛?- 鉁?Few-shot 绀轰緥搴?鈮?20 涓?- 鉁?瑙勫垯寮曟搸瑕嗙洊鐜?鈮?80%
|
||||
- 鉁?璇佹嵁閾惧畬鏁存€?100%
|
||||
- 鉁?鍑嗙‘鐜?鈮?90%
|
||||
- [ ] 实现成本优化策略(快速初筛 + 高价值复核)
|
||||
- [ ] 完善证据链记录
|
||||
|
||||
**交付物**:
|
||||
- ✅ Few-shot 示例库 ≥ 20 个
|
||||
- ✅ 规则引擎覆盖率 ≥ 80%
|
||||
- ✅ 证据链完整性 100%
|
||||
- ✅ 准确率 ≥ 90%
|
||||
|
||||
---
|
||||
|
||||
@@ -302,57 +418,82 @@ PostgreSQL 15 + Prisma 6.17.0
|
||||
|
||||
### 阶段目标
|
||||
|
||||
**浜や粯鏍囧噯**锛?- 鉁?鏂板<E98F82>鍏ㄦ枃鏁版嵁鎻愬彇鍔熻兘
|
||||
- 鉁?涓夋ā鍨嬪叡璇嗕徊瑁?- 鉁?HITL 鏅鸿兘鍒嗘祦
|
||||
- 鉁?鎻愮ず璇嶇増鏈<E5A297><E98F88>鐞?- 鉁?鑷<>姩璐ㄩ噺瀹¤<E780B9>
|
||||
- 鉁?鍑嗙‘鐜?鈮?95%锛堝尰瀛︾骇锛?
|
||||
### 閲岀▼纰戝垝鍒?
|
||||
#### **M3.1 - 鍏ㄦ枃鏁版嵁鎻愬彇妯″潡**锛圵eek 11-13锛?
|
||||
**浠诲姟**锛?- [ ] 鎵╁睍鏁版嵁搴撹〃锛坄asl_extraction_results`, `asl_extraction_revisions`锛?- [ ] 鍚庣<E98D9A>鍒嗘<E98D92>鎻愬彇閫昏緫
|
||||
**交付标准**:
|
||||
- ✅ 新增全文数据提取功能
|
||||
- ✅ 三模型共识仲裁
|
||||
- ✅ HITL 智能分流
|
||||
- ✅ 提示词版本管理
|
||||
- ✅ 自动质量审计
|
||||
- ✅ 准确率 ≥ 95%(医学级)
|
||||
|
||||
### 里程碑划分
|
||||
|
||||
#### **M3.1 - 全文数据提取模块**(Week 11-13)
|
||||
|
||||
**任务**:
|
||||
- [ ] 扩展数据库表(`asl_extraction_results`, `asl_extraction_revisions`)
|
||||
- [ ] 后端分段提取逻辑
|
||||
- [ ] 前端表格化数据审查台(文献×变量矩阵)
|
||||
|
||||
**浜や粯鐗?*锛?- 鉁?鐢ㄦ埛鍙<E59F9B>厤缃<E58EA4>彁鍙栧彉閲忔竻鍗?- 鉁?鎵归噺鎻愬彇 50 绡囨枃鐚<E69E83>殑缁撴瀯鍖栨暟鎹?- 鉁?鎻愬彇鍑嗙‘鐜?鈮?92%
|
||||
**交付物**:
|
||||
- ✅ 用户可配置提取变量清单
|
||||
- ✅ 批量提取 50 篇文献的结构化数据
|
||||
- ✅ 提取准确率 ≥ 92%
|
||||
|
||||
---
|
||||
|
||||
#### **M3.2 - 鍖诲<EFBFBD>绾ц川閲忎繚闅?*锛圵eek 14-16锛?
|
||||
**浠诲姟**锛?- [ ] 涓夋ā鍨嬩徊瑁侊紙鍐茬獊 鈫?鍚<>敤 Claude-4.5锛?- [ ] HITL 鏅鸿兘鍒嗘祦锛堜紭鍏堢骇璇勫垎锛?- [ ] 鎻愮ず璇嶇増鏈<E5A297><E98F88>鐞嗭紙Git + 璇<>箟鍖栫増鏈<E5A297>級
|
||||
#### **M3.2 - 医学级质量保障**(Week 14-16)
|
||||
|
||||
**任务**:
|
||||
- [ ] 三模型仲裁(冲突 → 启用 Claude-4.5)
|
||||
- [ ] HITL 智能分流(优先级评分)
|
||||
- [ ] 提示词版本管理(Git + 语义化版本)
|
||||
- [ ] 自动质量审计系统
|
||||
|
||||
**浜や粯鐗?*锛?- 鉁?涓夋ā鍨嬩徊瑁佹垚鍔熺巼 > 95%
|
||||
- 鉁?HITL 鍒嗘祦鍑嗙‘鐜?> 85%
|
||||
- 鉁?鎻愮ず璇嶇増鏈<E5A297><E98F88>鐞嗙郴缁熶笂绾?- 鉁?鑷<>姩璐ㄩ噺瀹¤<E780B9>姣忓懆杩愯<E69DA9>
|
||||
**交付物**:
|
||||
- ✅ 三模型仲裁成功率 > 95%
|
||||
- ✅ HITL 分流准确率 > 85%
|
||||
- ✅ 提示词版本管理系统上线
|
||||
- ✅ 自动质量审计每周运行
|
||||
|
||||
---
|
||||
|
||||
#### **M3.3 - 楂樼骇鍔熻兘涓庝紭鍖?*锛圵eek 17-18锛?
|
||||
**浠诲姟**锛?- [ ] Chain of Thought (CoT) 鎺ㄧ悊
|
||||
- [ ] 鍔ㄦ€佺ず渚嬮€夋嫨锛堣<E9949B>涔夌浉浼煎害锛?- [ ] 鎵瑰<E98EB5>鐞嗘€ц兘浼樺寲锛圔ull + Redis锛?- [ ] 鐢ㄦ埛浣撻獙浼樺寲锛堝疄鏃惰繘搴︺€丳DF鏍囨敞銆佸揩鎹烽敭锛?
|
||||
**浜や粯鐗?*锛?- 鉁?绯荤粺绋冲畾鎬ф祴璇曢€氳繃
|
||||
- 鉁?鎬ц兘娴嬭瘯锛?000 绡囨枃鐚?< 30 鍒嗛挓
|
||||
- 鉁?鐢ㄦ埛楠屾敹娴嬭瘯閫氳繃
|
||||
- 鉁?鍑嗙‘鐜?鈮?95%
|
||||
#### **M3.3 - 高级功能与优化**(Week 17-18)
|
||||
|
||||
**任务**:
|
||||
- [ ] Chain of Thought (CoT) 推理
|
||||
- [ ] 动态示例选择(语义相似度)
|
||||
- [ ] 批处理性能优化(Bull + Redis)
|
||||
- [ ] 用户体验优化(实时进度、PDF标注、快捷键)
|
||||
|
||||
**交付物**:
|
||||
- ✅ 系统稳定性测试通过
|
||||
- ✅ 性能测试:1000 篇文献 < 30 分钟
|
||||
- ✅ 用户验收测试通过
|
||||
- ✅ 准确率 ≥ 95%
|
||||
|
||||
---
|
||||
|
||||
## 馃搵 浜や粯鐗╂<E99097>鏌ユ竻鍗?
|
||||
## 📋 交付物检查清单
|
||||
|
||||
### MVP 阶段
|
||||
|
||||
- [ ] **鏁版嵁搴?*
|
||||
- [ ] **数据库**
|
||||
- [ ] asl_schema 4张表创建
|
||||
- [ ] Prisma 迁移成功
|
||||
|
||||
- [ ] **后端**
|
||||
- [ ] `modules/asl/` 目录结构完整
|
||||
- [ ] API 璺<EFBFBD>敱娉ㄥ唽鍒?`/api/v1/asl/*`
|
||||
- [ ] LLM绛涢€夋湇鍔″彲鐢?
|
||||
- [ ] API 路由注册到 `/api/v1/asl/*`
|
||||
- [ ] LLM筛选服务可用
|
||||
|
||||
- [ ] **前端**
|
||||
- [ ] ASL妯″潡娉ㄥ唽鍒?`moduleRegistry.ts`
|
||||
- [ ] ASL模块注册到 `moduleRegistry.ts`
|
||||
- [ ] 顶部导航显示"AI智能文献"
|
||||
- [ ] 3个主页面完整
|
||||
|
||||
- [ ] **测试**
|
||||
- [ ] 鍑嗙‘鐜囨祴璇?鈮?85%
|
||||
- [ ] 准确率测试 ≥ 85%
|
||||
- [ ] 端到端测试通过
|
||||
|
||||
### V1.0 阶段
|
||||
@@ -361,19 +502,21 @@ PostgreSQL 15 + Prisma 6.17.0
|
||||
- [ ] PDF 提取服务
|
||||
- [ ] Unpaywall API 集成
|
||||
- [ ] 全文复筛
|
||||
- [ ] Few-shot 绀轰緥搴?
|
||||
- [ ] Few-shot 示例库
|
||||
|
||||
- [ ] **测试**
|
||||
- [ ] 鍑嗙‘鐜?鈮?90%
|
||||
- [ ] 准确率 ≥ 90%
|
||||
|
||||
### V2.0 阶段
|
||||
|
||||
- [ ] **新增功能**
|
||||
- [ ] 全文数据提取
|
||||
- [ ] 涓夋ā鍨嬩徊瑁? - [ ] HITL 鏅鸿兘鍒嗘祦
|
||||
- [ ] 三模型仲裁
|
||||
- [ ] HITL 智能分流
|
||||
- [ ] 自动质量审计
|
||||
|
||||
- [ ] **测试**
|
||||
- [ ] 鍑嗙‘鐜?鈮?95%
|
||||
- [ ] 准确率 ≥ 95%
|
||||
- [ ] 医学专家验证
|
||||
|
||||
---
|
||||
@@ -384,32 +527,34 @@ PostgreSQL 15 + Prisma 6.17.0
|
||||
|
||||
| 指标 | MVP 目标 | V1.0 目标 | V2.0 目标 |
|
||||
|------|---------|----------|----------|
|
||||
| 鎻愬彇鍑嗙‘鐜?| 鈮?85% | 鈮?90% | 鈮?95% |
|
||||
| 鍙屾ā鍨嬩竴鑷寸巼 | 鈮?80% | 鈮?85% | 鈮?90% |
|
||||
| JSON Schema 楠岃瘉閫氳繃鐜?| 鈮?95% | 鈮?98% | 鈮?99% |
|
||||
| 浜哄伐澶嶆牳闃熷垪鍗犳瘮 | 鈮?20% | 鈮?15% | 鈮?10% |
|
||||
| 提取准确率 | ≥ 85% | ≥ 90% | ≥ 95% |
|
||||
| 双模型一致率 | ≥ 80% | ≥ 85% | ≥ 90% |
|
||||
| JSON Schema 验证通过率 | ≥ 95% | ≥ 98% | ≥ 99% |
|
||||
| 人工复核队列占比 | ≤ 20% | ≤ 15% | ≤ 10% |
|
||||
|
||||
### 成本指标
|
||||
|
||||
| 场景 | MVP | V1.0 | V2.0 |
|
||||
|------|-----|------|------|
|
||||
| 标题摘要筛选(1000篇) | ¥5 | ¥21 | ¥24 |
|
||||
| 鍏ㄦ枃澶嶇瓫锛?00绡囷級 | - | 楼30 | 楼35 |
|
||||
| 鏁版嵁鎻愬彇锛?0绡囷級 | - | 楼60 | 楼80 |
|
||||
| 全文复筛(200篇) | - | ¥30 | ¥35 |
|
||||
| 数据提取(50篇) | - | ¥60 | ¥80 |
|
||||
|
||||
---
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- [璐ㄩ噺淇濋殰涓庡彲杩芥函绛栫暐](../02-鎶€鏈<E282AC><E98F88>璁?06-璐ㄩ噺淇濋殰涓庡彲杩芥函绛栫暐.md)
|
||||
- [鏂囩尞澶勭悊鎶€鏈<EFBFBD>€夊瀷](../02-鎶€鏈<E282AC><E98F88>璁?07-鏂囩尞澶勭悊鎶€鏈<E282AC>€夊瀷.md)
|
||||
- [鏁版嵁搴撹<EFBFBD>璁<EFBFBD>(../02-鎶€鏈<E282AC><E98F88>璁?01-鏁版嵁搴撹<E690B4>璁?md)
|
||||
- [API 璁捐<EFBFBD>瑙勮寖](../02-鎶€鏈<EFBFBD><EFBFBD>璁?02-API璁捐<E79281>瑙勮寖.md)
|
||||
- [质量保障与可追溯策略](../02-技术设计/06-质量保障与可追溯策略.md)
|
||||
- [文献处理技术选型](../02-技术设计/07-文献处理技术选型.md)
|
||||
- [数据库设计](../02-技术设计/01-数据库设计.md)
|
||||
- [API 设计规范](../02-技术设计/02-API设计规范.md)
|
||||
- [前后端模块化架构设计-V2](../../../00-系统总体设计/前后端模块化架构设计-V2.md)
|
||||
- [Schema闅旂<EFBFBD>鏋舵瀯璁捐<EFBFBD>](../../../09-鏋舵瀯瀹炴柦/01-Schema闅旂<EFBFBD>鏋舵瀯璁捐<EFBFBD>锛?0涓<30>級.md)
|
||||
- [Schema隔离架构设计](../../../09-架构实施/01-Schema隔离架构设计(10个).md)
|
||||
|
||||
---
|
||||
|
||||
**鏇存柊鏃ュ織**锛?- 2025-11-18: V3.1 鏇存柊锛岃ˉ鍏呭钩鍙板熀纭€璁炬柦瀹屾垚鐘舵€侊紙8涓<38>牳蹇冩ā鍧楋級
|
||||
- 2025-11-16: V3.0 閲嶅啓锛屽熀浜庣湡瀹炴灦鏋勶紙Frontend-v2 + Backend澧為噺婕旇繘 + 10涓猄chema锛?- 2025-11-16: V2.0 閲嶅啓锛屽熀浜庝笁闃舵<E99783>璺<EFBFBD>嚎鍥捐<E98DA5>缁嗚<E7BC81>鍒掗噷绋嬬<E7BB8B>
|
||||
- 2025-10-29: V1.0 鍒涘缓锛屽垵濮嬬増鏈?
|
||||
**更新日志**:
|
||||
- 2025-11-18: V3.1 更新,补充平台基础设施完成状态(8个核心模块)
|
||||
- 2025-11-16: V3.0 重写,基于真实架构(Frontend-v2 + Backend增量演进 + 10个Schema)
|
||||
- 2025-11-16: V2.0 重写,基于三阶段路线图详细规划里程碑
|
||||
- 2025-10-29: V1.0 创建,初始版本
|
||||
|
||||
Reference in New Issue
Block a user