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%)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# ASL模块开发 - 新AI交接文档
|
||||
# ASL璅∪<EFBFBD>撘<EFBFBD><EFBFBD>?- <20>蚊I鈭斗𦻖<E69697><F0A6BB96>﹝
|
||||
|
||||
**<EFBFBD>交<EFBFBD>**: 2025-11-18
|
||||
**当前阶段**: Week 2 - 前端UI开发
|
||||
**敶枏<EFBFBD><EFBFBD>嗆挾**: Week 2 - <EFBFBD>滨垢UI撘<EFBFBD><EFBFBD>?
|
||||
**<EFBFBD><EFBFBD>粉<EFBFBD>園𡢿**: 5<><35><EFBFBD>
|
||||
|
||||
---
|
||||
@@ -12,66 +12,66 @@
|
||||
|
||||
**AIclinicalresearch** - <20>餃郎銝游<E98A9D><E6B8B8>𠉛弦AI撟喳蝱
|
||||
|
||||
一个覆盖医学研究全生命周期的AI辅助平台,包括7大业务模块。**当前正在开发ASL模块**(AI智能文献筛选)。
|
||||
銝<EFBFBD>銝芾<EFBFBD><EFBFBD>硋龫摮衣<EFBFBD>蝛嗅<EFBFBD><EFBFBD>笔𦶢<EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD>I颲<EFBFBD>𨭌撟喳蝱嚗<EFBFBD><EFBFBD><EFBFBD>?憭找<E686AD><E689BE>⊥芋<E28AA5>𨰜<EFBFBD>?*敶枏<E695B6>甇<EFBFBD>銁撘<E98A81><E69298>飊SL璅∪<E79285>**嚗㇁I<E38781>箄<EFBFBD><E7AE84><EFBFBD>讃蝑偦<E89D91>㚁<EFBFBD><E39A81>?
|
||||
|
||||
---
|
||||
|
||||
### 蝟餌<E89D9F><E9A48C>嗆<EFBFBD>嚗<EFBFBD><E59A97>撅<EFBFBD><E69285>
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ 业务模块层 (Business Layer) │
|
||||
│ - ASL (AI智能文献) ← 当前开发中 │
|
||||
│ - AIA, PKB, DC, SSA, ST, RVW │
|
||||
└─────────────────────────────────────────┘
|
||||
↓ 依赖
|
||||
┌─────────────────────────────────────────┐
|
||||
│ 能力层 (Capability Layer) │
|
||||
│ - LLM Gateway (5个模型已集成) ✅ │
|
||||
│ - Document Processing Engine │
|
||||
│ - RAG Engine, ETL, Medical NLP │
|
||||
└─────────────────────────────────────────┘
|
||||
↓ 依赖
|
||||
┌─────────────────────────────────────────┐
|
||||
│ 平台基础设施层 (Platform Layer) │
|
||||
│ 8个核心模块 - 已完成 ✅ │
|
||||
│ Storage, Logging, Caching, Jobs, etc. │
|
||||
└─────────────────────────────────────────┘
|
||||
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
<EFBFBD>? 銝𡁜𦛚璅∪<E79285>撅?(Business Layer) <EFBFBD>?
|
||||
<EFBFBD>? - ASL (AI<EFBFBD>箄<EFBFBD><EFBFBD><EFBFBD>讃) <20>?敶枏<E695B6>撘<EFBFBD><E69298>睲葉 <EFBFBD>?
|
||||
<EFBFBD>? - AIA, PKB, DC, SSA, ST, RVW <EFBFBD>?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
<EFBFBD>?靘肽<E99D98>
|
||||
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
<EFBFBD>? <20>賢<EFBFBD>撅?(Capability Layer) <EFBFBD>?
|
||||
<EFBFBD>? - LLM Gateway (5銝芣芋<EFBFBD>见歇<EFBFBD><EFBFBD><EFBFBD>) <20>? <EFBFBD>?
|
||||
<EFBFBD>? - Document Processing Engine <EFBFBD>?
|
||||
<EFBFBD>? - RAG Engine, ETL, Medical NLP <EFBFBD>?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
<EFBFBD>?靘肽<E99D98>
|
||||
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
<EFBFBD>? 撟喳蝱<E596B3>箇<EFBFBD>霈暹鴌撅?(Platform Layer) <EFBFBD>?
|
||||
<EFBFBD>? 8銝芣瓲敹<E793B2>芋<EFBFBD>?- 撌脣<E6928C><E884A3>?<3F>? <EFBFBD>?
|
||||
<EFBFBD>? Storage, Logging, Caching, Jobs, etc. <EFBFBD>?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
```
|
||||
|
||||
**关键特性**:
|
||||
**<EFBFBD>喲睸<EFBFBD>寞<EFBFBD>?*:
|
||||
- **Schema<6D>𠉛氖**: 10銝芰𡠺蝡閪ostgreSQL Schema
|
||||
- **模块化**: 每个业务模块独立开发、部署、销售
|
||||
- **云原生**: 优化Alibaba Cloud SAE部署
|
||||
- **璅∪<EFBFBD><EFBFBD>?*: 瘥譍葵銝𡁜𦛚璅∪<E79285><E288AA>祉<EFBFBD>撘<EFBFBD><E69298>㻫<EFBFBD><E3BBAB><EFBFBD>蝵脯<E89DB5><E884AF><EFBFBD><EFBFBD>?
|
||||
- **鈭穃<EFBFBD><EFBFBD>?*: 隡睃<E99AA1>Alibaba Cloud SAE<EFBFBD>函蔡
|
||||
|
||||
---
|
||||
|
||||
## 📍 当前状态(2025-11-18)
|
||||
## <EFBFBD><EFBFBD> 敶枏<E695B6><E69E8F>嗆<EFBFBD><E59786><EFBFBD>2025-11-18嚗?
|
||||
|
||||
### ✅ Week 1 已完成(提前4天)
|
||||
### <EFBFBD>?Week 1 撌脣<EFBFBD><EFBFBD>琜<EFBFBD><EFBFBD>𣂼<EFBFBD>4憭抬<EFBFBD>
|
||||
|
||||
**后端开发** (100%):
|
||||
- ✅ 数据库Schema设计(4个表,asl_schema)
|
||||
- ✅ 后端API框架(10个接口)
|
||||
- ✅ LLM双模型筛选服务
|
||||
- ✅ 三种筛选风格(宽松/标准/严格)
|
||||
- ✅ JSON解析器修复(支持中文引号)
|
||||
- ✅ API测试完成(7/7通过)
|
||||
**<EFBFBD>𡒊垢撘<EFBFBD><EFBFBD>?* (100%):
|
||||
- <EFBFBD>?<3F>唳旿摨廍chema霈曇恣嚗?銝芾”嚗蘏sl_schema嚗?
|
||||
- <EFBFBD>?<3F>𡒊垢API獢<49>沲嚗?0銝芣𦻖<E88AA3><F0A6BB96><EFBFBD>
|
||||
- <EFBFBD>?LLM<EFBFBD>峕芋<EFBFBD>讠<EFBFBD><EFBFBD>㗇<EFBFBD><EFBFBD>?
|
||||
- <EFBFBD>?銝厩<E98A9D>蝑偦<E89D91>厰<EFBFBD><E58EB0>潘<EFBFBD>摰賣𠹭/<2F><><EFBFBD>/銝交聢嚗?
|
||||
- <EFBFBD>?JSON閫<EFBFBD><EFBFBD><EFBFBD>其耨憭㵪<EFBFBD><EFBFBD>舀<EFBFBD>銝剜<EFBFBD>撘訫噡嚗?
|
||||
- <EFBFBD>?API瘚贝<EFBFBD>摰峕<EFBFBD>嚗?/7<>朞<EFBFBD>嚗?
|
||||
|
||||
**<EFBFBD>詨<EFBFBD><EFBFBD>鞉<EFBFBD>**:
|
||||
1. **双模型筛选**: DeepSeek-V3 + Qwen-Max并行
|
||||
1. **<EFBFBD>峕芋<EFBFBD>讠<EFBFBD><EFBFBD>?*: DeepSeek-V3 + Qwen-Max撟嗉<EFBFBD>
|
||||
2. **銝厩<E98A9D>Prompt**: 摰賣𠹭/<2F><><EFBFBD>/銝交聢璅∪<E79285>
|
||||
3. **理由展示**: 保存两个模型的完整判断理由
|
||||
4. **冲突检测**: 只检测conclusion冲突,不检测PICO差异
|
||||
3. **<EFBFBD><EFBFBD>眏撅閧內**: 靽嘥<EFBFBD>銝支葵璅∪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>游ế<EFBFBD>剔<EFBFBD><EFBFBD>?
|
||||
4. **<EFBFBD>脩<EFBFBD>璉<EFBFBD>瘚?*: <20>芣<EFBFBD>瘚醶onclusion<6F>脩<EFBFBD>嚗䔶<E59A97>璉<EFBFBD>瘚閪ICO撌桀<E6928C>
|
||||
|
||||
---
|
||||
|
||||
### ⬜ Week 2 待开始(当前任务)
|
||||
### 漎?Week 2 敺<EFBFBD><EFBFBD>憪页<EFBFBD>敶枏<EFBFBD>隞餃𦛚嚗?
|
||||
|
||||
**前端UI开发** (0%):
|
||||
- ⬜ Day 1-2: 项目管理界面
|
||||
- ⬜ Day 3-4: 文献导入界面
|
||||
- ⬜ Day 5: 筛选结果展示
|
||||
**<EFBFBD>滨垢UI撘<EFBFBD><EFBFBD>?* (0%):
|
||||
- 漎?Day 1-2: 憿寧𤌍蝞∠<EFBFBD><EFBFBD>屸𢒰
|
||||
- 漎?Day 3-4: <EFBFBD><EFBFBD>讃撖澆<EFBFBD><EFBFBD>屸𢒰
|
||||
- 漎?Day 5: 蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>𨅯<EFBFBD>蝷?
|
||||
|
||||
---
|
||||
|
||||
@@ -79,24 +79,24 @@
|
||||
|
||||
### <20>滨垢
|
||||
- **獢<>沲**: React 18 + TypeScript
|
||||
- **UI库**: Ant Design 5
|
||||
- **UI摨?*: Ant Design 5
|
||||
- **頝舐眏**: React Router v6
|
||||
- **状态**: React Query + Zustand
|
||||
- **架构**: Frontend-v2(模块化注册)
|
||||
- **<EFBFBD>嗆<EFBFBD>?*: React Query + Zustand
|
||||
- **<EFBFBD>嗆<EFBFBD>**: Frontend-v2嚗<EFBFBD>芋<EFBFBD>堒<EFBFBD>瘜典<EFBFBD>嚗?
|
||||
|
||||
### <20>𡒊垢
|
||||
- **獢<>沲**: Fastify + TypeScript
|
||||
- **ORM**: Prisma
|
||||
- **数据库**: PostgreSQL (asl_schema)
|
||||
- **<EFBFBD>唳旿摨?*: PostgreSQL (asl_schema)
|
||||
- **LLM**: DeepSeek-V3, Qwen-Max, GPT-4o, Claude-4.5
|
||||
|
||||
### 已完成的平台服务(可直接使用)
|
||||
### 撌脣<EFBFBD><EFBFBD>鞟<EFBFBD>撟喳蝱<EFBFBD>滚𦛚嚗<EFBFBD>虾<EFBFBD>湔𦻖雿輻鍂嚗?
|
||||
```typescript
|
||||
import { logger } from '@/common/logging'; // <20>亙<EFBFBD>
|
||||
import { storage } from '@/common/storage'; // 摮睃<E691AE>
|
||||
import { cache } from '@/common/cache'; // 蝻枏<E89DBB>
|
||||
import { jobQueue } from '@/common/jobs'; // 撘<>郊隞餃𦛚
|
||||
import { prisma } from '@/config/database'; // 数据库
|
||||
import { prisma } from '@/config/database'; // <EFBFBD>唳旿摨?
|
||||
```
|
||||
|
||||
---
|
||||
@@ -107,10 +107,10 @@ import { prisma } from '@/config/database'; // 数据库
|
||||
```
|
||||
frontend-v2/src/modules/asl/
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> pages/ # 憿菟𢒰蝏<F0A292B0>辣
|
||||
│ ├── ProjectList/ # 项目列表页 ← Week 2 Day 1
|
||||
│ ├── ProjectDetail/ # 项目详情页 ← Week 2 Day 2
|
||||
│ ├── LiteratureImport/ # 文献导入页 ← Week 2 Day 3-4
|
||||
│ └── ScreeningResults/ # 筛选结果页 ← Week 2 Day 5
|
||||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> ProjectList/ # 憿寧𤌍<EFBFBD>𡑒”憿?<3F>?Week 2 Day 1
|
||||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> ProjectDetail/ # 憿寧𤌍霂行<EFBFBD>憿?<3F>?Week 2 Day 2
|
||||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> LiteratureImport/ # <EFBFBD><EFBFBD>讃撖澆<EFBFBD>憿?<3F>?Week 2 Day 3-4
|
||||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD> ScreeningResults/ # 蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>𣈯△ <20>?Week 2 Day 5
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> components/ # <20>𡁶鍂蝏<E98D82>辣
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> hooks/ # <20>芸<EFBFBD>銋鵎ooks
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> services/ # API靚<49>鍂
|
||||
@@ -121,13 +121,13 @@ frontend-v2/src/modules/asl/
|
||||
### <20>𡒊垢嚗<E59EA2>歇摰峕<E691B0>嚗争<E59A97>
|
||||
```
|
||||
backend/src/modules/asl/
|
||||
├── controllers/ # 控制器 ✅
|
||||
├── services/ # 业务逻辑 ✅
|
||||
│ └── llmScreeningService.ts # 核心筛选服务
|
||||
├── routes/ # 路由 ✅
|
||||
├── schemas/ # JSON Schema + Prompt生成 ✅
|
||||
├── types/ # 类型定义 ✅
|
||||
└── prompts/ # 三种Prompt模板 ✅
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> controllers/ # <EFBFBD>批<EFBFBD><EFBFBD>?<3F>?
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> services/ # 銝𡁜𦛚<EFBFBD>餉<EFBFBD> <20>?
|
||||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD> llmScreeningService.ts # <EFBFBD>詨<EFBFBD>蝑偦<EFBFBD>㗇<EFBFBD><EFBFBD>?
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> routes/ # 頝舐眏 <20>?
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> schemas/ # JSON Schema + Prompt<EFBFBD><EFBFBD><EFBFBD> <20>?
|
||||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> types/ # 蝐餃<EFBFBD>摰帋<EFBFBD> <20>?
|
||||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> prompts/ # 銝厩<EFBFBD>Prompt璅⊥踎 <20>?
|
||||
<20>鎿<EFBFBD><E98EBF><EFBFBD> v1.1.0-lenient.txt # 摰賣𠹭璅∪<E79285>
|
||||
<20>鎿<EFBFBD><E98EBF><EFBFBD> v1.1.0-standard.txt # <20><><EFBFBD>璅∪<E79285>
|
||||
<20>婙<EFBFBD><E5A999><EFBFBD> v1.1.0-strict.txt # 銝交聢璅∪<E79285>
|
||||
@@ -137,78 +137,78 @@ backend/src/modules/asl/
|
||||
|
||||
## <20><> <20>詨<EFBFBD><E8A9A8>蠘<EFBFBD>霂湔<E99C82>
|
||||
|
||||
### 1. 双模型筛选机制
|
||||
### 1. <EFBFBD>峕芋<EFBFBD>讠<EFBFBD><EFBFBD>㗇㦤<EFBFBD>?
|
||||
|
||||
**撌乩<E6928C>瘚<EFBFBD><E7989A>**:
|
||||
```
|
||||
1. 用户上传文献(Excel)
|
||||
2. 系统解析文献(标题+摘要)
|
||||
3. 并行调用两个LLM模型:
|
||||
1. <EFBFBD>冽<EFBFBD>銝𠹺<EFBFBD><EFBFBD><EFBFBD>讃嚗𠄌xcel嚗?
|
||||
2. 蝟餌<EFBFBD>閫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>讃嚗<EFBFBD><EFBFBD>憸?<3F>䁅<EFBFBD>嚗?
|
||||
3. 撟嗉<EFBFBD>靚<EFBFBD>鍂銝支葵LLM璅∪<EFBFBD>嚗?
|
||||
- DeepSeek-V3
|
||||
- Qwen-Max
|
||||
4. 两个模型独立判断(include/exclude)
|
||||
4. 銝支葵璅∪<EFBFBD><EFBFBD>祉<EFBFBD><EFBFBD>斗鱏嚗ǎnclude/exclude嚗?
|
||||
5. 蝟餌<E89D9F>璉<EFBFBD>瘚见<E7989A>蝒<EFBFBD><E89D92>conclusion<6F>臬炏銝<E7828F><E98A9D>湛<EFBFBD>
|
||||
6. 返回结果:
|
||||
- 一致 → finalDecision = 模型结论
|
||||
- 冲突 → finalDecision = pending(需人工复核)
|
||||
6. 餈𥪜<EFBFBD>蝏𤘪<EFBFBD>嚗?
|
||||
- 銝<EFBFBD><EFBFBD>?<3F>?finalDecision = 璅∪<EFBFBD>蝏栞捏
|
||||
- <EFBFBD>脩<EFBFBD> <20>?finalDecision = pending嚗<EFBFBD><EFBFBD>鈭箏極憭齿瓲嚗?
|
||||
```
|
||||
|
||||
**重要**: 保存两个模型的**完整理由**供用户查看
|
||||
**<EFBFBD>滩<EFBFBD>**: 靽嘥<EFBFBD>銝支葵璅∪<EFBFBD><EFBFBD>?*摰峕㟲<E5B395><E39FB2>眏**靘𤤿鍂<F0A4A4BF>瑟䰻<E7919F>?
|
||||
|
||||
---
|
||||
|
||||
### 2. 三种筛选风格
|
||||
### 2. 銝厩<EFBFBD>蝑偦<EFBFBD>厰<EFBFBD><EFBFBD>?
|
||||
|
||||
| 憌擧聢 | <20>寧<EFBFBD> | 雿輻鍂<E8BCBB>箸艶 |
|
||||
|------|------|----------|
|
||||
| **宽松模式** | 宁可多纳入,不错过 | 初筛阶段 |
|
||||
| **标准模式** | 平衡准确率和召回率 | 常规使用 |
|
||||
| **严格模式** | 宁可错杀,保证质量 | 精筛阶段 |
|
||||
| **摰賣𠹭璅∪<EFBFBD>** | 摰<EFBFBD>虾憭𡁶熙<EFBFBD>伐<EFBFBD>銝漤<EFBFBD>餈?| <20>萘<EFBFBD><E89098>嗆挾 |
|
||||
| **<EFBFBD><EFBFBD><EFBFBD>璅∪<EFBFBD>** | 撟唾﹛<EFBFBD><EFBFBD>&<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砍<EFBFBD><EFBFBD>?| 撣貉<E692A3>雿輻鍂 |
|
||||
| **銝交聢璅∪<EFBFBD>** | 摰<EFBFBD>虾<EFBFBD>蹱<EFBFBD>嚗䔶<EFBFBD>霂<EFBFBD>捶<EFBFBD>?| 蝎曄<E89D8E><E69B84>嗆挾 |
|
||||
|
||||
**实现**: 已在后端实现,前端需添加选择器
|
||||
**摰䂿緵**: 撌脣銁<EFBFBD>𡒊垢摰䂿緵嚗<EFBFBD><EFBFBD>蝡舫<EFBFBD>瘛餃<EFBFBD><EFBFBD>㗇𥋘<EFBFBD>?
|
||||
|
||||
---
|
||||
|
||||
### 3. 数据模型(asl_schema)
|
||||
### 3. <EFBFBD>唳旿璅∪<EFBFBD>嚗Òsl_schema嚗?
|
||||
|
||||
**4銝芣瓲敹<E793B2>”**:
|
||||
```sql
|
||||
screening_projects -- 蝑偦<E89D91>厰★<E58EB0>殷<EFBFBD>摮婱ICOS<4F><53>熙<EFBFBD>埝<EFBFBD><E59F9D><EFBFBD><EFBFBD>
|
||||
literatures -- 文献条目(标题、摘要、PDF链接)
|
||||
screening_results -- 筛选结果(两个模型的判断+理由)
|
||||
screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
literatures -- <EFBFBD><EFBFBD>讃<EFBFBD>∠𤌍嚗<EFBFBD><EFBFBD>憸塩<EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD>DF<EFBFBD>暹𦻖嚗?
|
||||
screening_results -- 蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>頣<EFBFBD>銝支葵璅∪<EFBFBD><EFBFBD><EFBFBD>ế<EFBFBD>?<3F><>眏嚗?
|
||||
screening_tasks -- 蝑偦<EFBFBD>劐遙<EFBFBD>∴<EFBFBD><EFBFBD>寥<EFBFBD>隞餃𦛚餈𥕦漲頝蠘葵嚗?
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 UI原型参考
|
||||
## <EFBFBD>綫 UI<EFBFBD>笔<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
|
||||
**雿滨蔭**: `docs/03-銝𡁜𦛚璅∪<E79285>/ASL-AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃/03-UI霈曇恣/AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃-<2D><><EFBFBD><EFBFBD>䁅<EFBFBD><E48185>萘<EFBFBD><E89098>笔<EFBFBD>.html`
|
||||
|
||||
**<EFBFBD>詨<EFBFBD>憿菟𢒰**:
|
||||
1. **项目列表** - 显示所有筛选项目
|
||||
2. **项目详情** - PICOS标准、纳排标准、文献列表
|
||||
3. **文献导入** - Excel上传、预览、导入
|
||||
4. **筛选结果** - 显示筛选结果、两个模型的理由、冲突标记
|
||||
1. **憿寧𤌍<EFBFBD>𡑒”** - <EFBFBD>曄內<EFBFBD><EFBFBD><EFBFBD>厩<EFBFBD><EFBFBD>厰★<EFBFBD>?
|
||||
2. **憿寧𤌍霂行<EFBFBD>** - PICOS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>熙<EFBFBD>埝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>桀<EFBFBD>銵?
|
||||
3. **<EFBFBD><EFBFBD>讃撖澆<EFBFBD>** - Excel銝𠹺<EFBFBD><EFBFBD><EFBFBD><EFBFBD>閫<EFBFBD><EFBFBD><EFBFBD>紡<EFBFBD>?
|
||||
4. **蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>?* - <20>曄內蝑偦<E89D91>厩<EFBFBD><E58EA9>栶<EFBFBD><E6A0B6>舅銝芣芋<E88AA3>讠<EFBFBD><E8AEA0><EFBFBD>眏<EFBFBD><E79C8F><EFBFBD>蝒<EFBFBD><E89D92>霈?
|
||||
|
||||
---
|
||||
|
||||
## 📋 Week 2 开发任务(详细清单)
|
||||
## <EFBFBD><EFBFBD> Week 2 撘<EFBFBD><EFBFBD>睲遙<EFBFBD>∴<EFBFBD>霂衣<EFBFBD>皜<EFBFBD><EFBFBD>嚗?
|
||||
|
||||
### Day 1-2: 憿寧𤌍蝞∠<E89D9E><E288A0>屸𢒰
|
||||
|
||||
**隞餃𦛚**:
|
||||
- [ ] 创建项目列表页(`/asl/projects`)
|
||||
- [ ] <EFBFBD>𥕦遣憿寧𤌍<EFBFBD>𡑒”憿蛛<EFBFBD>`/asl/projects`嚗?
|
||||
- [ ] <20>𥕦遣憿寧𤌍<E5AFA7>厰僼 + <20>𥕦遣憿寧𤌍銵典<E98AB5>
|
||||
- 憿寧𤌍<E5AFA7>滨妍
|
||||
- PICOS标准(5个字段)
|
||||
- 纳入标准(文本域)
|
||||
- 排除标准(文本域)
|
||||
- PICOS<EFBFBD><EFBFBD><EFBFBD>嚗?銝芸<E98A9D>畾蛛<E795BE>
|
||||
- 蝥喳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>砍<EFBFBD>嚗?
|
||||
- <EFBFBD>㘾膄<EFBFBD><EFBFBD><EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>砍<EFBFBD>嚗?
|
||||
- **蝑偦<E89D91>厰<EFBFBD><E58EB0>潮<EFBFBD>㗇𥋘**嚗㇌adio: 摰賣𠹭/<2F><><EFBFBD>/銝交聢嚗争<E59A97>
|
||||
- [ ] 项目列表展示(Table)
|
||||
- [ ] 项目详情页(`/asl/projects/:id`)
|
||||
- [ ] 憿寧𤌍<EFBFBD>𡑒”撅閧內嚗㇍able嚗?
|
||||
- [ ] 憿寧𤌍霂行<EFBFBD>憿蛛<EFBFBD>`/asl/projects/:id`嚗?
|
||||
|
||||
**API接口**(已完成):
|
||||
**API<EFBFBD>亙藁**嚗<>歇摰峕<E691B0>嚗?
|
||||
- `POST /api/v1/asl/projects` - <20>𥕦遣憿寧𤌍
|
||||
- `GET /api/v1/asl/projects` - <20>瑕<EFBFBD>憿寧𤌍<E5AFA7>𡑒”
|
||||
- `GET /api/v1/asl/projects/:id` - <20>瑕<EFBFBD>憿寧𤌍霂行<E99C82>
|
||||
@@ -218,41 +218,41 @@ screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
### Day 3-4: <20><>讃撖澆<E69296><E6BE86>屸𢒰
|
||||
|
||||
**隞餃𦛚**:
|
||||
- [ ] 文献导入页(`/asl/projects/:id/import`)
|
||||
- [ ] Excel文件上传(Dragger)
|
||||
- [ ] 文献预览(Table)
|
||||
- [ ] <EFBFBD><EFBFBD>讃撖澆<EFBFBD>憿蛛<EFBFBD>`/asl/projects/:id/import`嚗?
|
||||
- [ ] Excel<EFBFBD><EFBFBD>辣銝𠹺<EFBFBD>嚗㇄ragger嚗?
|
||||
- [ ] <EFBFBD><EFBFBD>讃憸<EFBFBD><EFBFBD>嚗㇍able嚗?
|
||||
- [ ] <20>澆<EFBFBD>撉諹<E69289><E8ABB9>鞟內
|
||||
- [ ] 蝖株恕撖澆<E69296><E6BE86>厰僼
|
||||
- [ ] 撖澆<E69296>餈𥕦漲<F0A595A6>鞟內
|
||||
|
||||
**API接口**(已完成):
|
||||
**API<EFBFBD>亙藁**嚗<>歇摰峕<E691B0>嚗?
|
||||
- `POST /api/v1/asl/projects/:id/literatures/import-json` - 撖澆<E69296><E6BE86><EFBFBD>讃
|
||||
- `GET /api/v1/asl/projects/:id/literatures` - <20>瑕<EFBFBD><E79195><EFBFBD>讃<EFBFBD>𡑒”
|
||||
|
||||
**Excel<65>澆<EFBFBD>**:
|
||||
```
|
||||
敹<EFBFBD>◆摮埈挾: title, abstract
|
||||
可选字段: pmid, authors, journal, publicationYear, doi
|
||||
<EFBFBD>舫<EFBFBD>匧<EFBFBD>畾? pmid, authors, journal, publicationYear, doi
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Day 5: 筛选结果展示 ⭐ **重点**
|
||||
### Day 5: 蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>𨅯<EFBFBD>蝷?潃?**<2A>滨<EFBFBD>**
|
||||
|
||||
**隞餃𦛚**:
|
||||
- [ ] 筛选结果列表页(`/asl/projects/:id/results`)
|
||||
- [ ] 蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>𨅯<EFBFBD>銵券△嚗Ǒ/asl/projects/:id/results`嚗?
|
||||
- [ ] 蝏𤘪<E89D8F>蝑偦<E89D91>㚁<EFBFBD><E39A81>券<EFBFBD>/蝥喳<E89DA5>/<2F>㘾膄/敺<><E695BA><EFBFBD>賂<EFBFBD>
|
||||
- [ ] 结果详情弹窗 ⭐ **关键**
|
||||
- [ ] 蝏𤘪<EFBFBD>霂行<EFBFBD>撘寧<EFBFBD> 潃?**<2A>喲睸**
|
||||
- <20><>讃靽⊥<E99DBD>嚗<EFBFBD><E59A97>憸塩<E686B8><E5A1A9><EFBFBD>閬<EFBFBD><E996AC>
|
||||
- 最终决策(include/exclude/pending)
|
||||
- **两个模型的完整结果**:
|
||||
- DeepSeek-V3:结论 + 理由 + 置信度
|
||||
- Qwen-Max:结论 + 理由 + 置信度
|
||||
- <EFBFBD><EFBFBD>蝏<EFBFBD><EFBFBD>蝑吔<EFBFBD>include/exclude/pending嚗?
|
||||
- **銝支葵璅∪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>渡<EFBFBD><EFBFBD>?*嚗?
|
||||
- DeepSeek-V3嚗𡁶<EFBFBD>霈?+ <20><>眏 + 蝵桐縑摨?
|
||||
- Qwen-Max嚗𡁶<EFBFBD>霈?+ <20><>眏 + 蝵桐縑摨?
|
||||
- <20>脩<EFBFBD><E884A9>鞟內嚗<E585A7><E59A97><EFBFBD>靝舅銝芣芋<E88AA3>衤<EFBFBD>銝<EFBFBD><E98A9D>湛<EFBFBD>
|
||||
- 鈭箏極憭齿瓲<E9BDBF>厰僼
|
||||
|
||||
**API接口**(已完成):
|
||||
- `GET /api/v1/asl/projects/:id/results` - 获取筛选结果
|
||||
**API<EFBFBD>亙藁**嚗<>歇摰峕<E691B0>嚗?
|
||||
- `GET /api/v1/asl/projects/:id/results` - <EFBFBD>瑕<EFBFBD>蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>?
|
||||
|
||||
**<EFBFBD>滚<EFBFBD><EFBFBD>澆<EFBFBD>**:
|
||||
```typescript
|
||||
@@ -262,37 +262,37 @@ screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
abstract: string;
|
||||
finalDecision: 'include' | 'exclude' | 'pending';
|
||||
|
||||
// ⭐ 两个模型的详细结果
|
||||
// 潃?銝支葵璅∪<E79285><E288AA><EFBFBD>祕蝏<E7A595><E89D8F><EFBFBD>?
|
||||
model1Result: {
|
||||
modelName: 'DeepSeek-V3';
|
||||
conclusion: 'exclude';
|
||||
confidence: 0.92;
|
||||
reason: '完整的排除理由...'; // ← 前端需显示
|
||||
reason: '摰峕㟲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>斤<EFBFBD><EFBFBD>?..'; // <EFBFBD>?<3F>滨垢<E6BBA8><E59EA2><EFBFBD>曄內
|
||||
judgment: { P: 'match', I: 'match', C: 'mismatch', S: 'match' };
|
||||
},
|
||||
model2Result: {
|
||||
modelName: 'Qwen-Max';
|
||||
conclusion: 'include';
|
||||
confidence: 0.85;
|
||||
reason: '完整的纳入理由...'; // ← 前端需显示
|
||||
reason: '摰峕㟲<EFBFBD><EFBFBD>熙<EFBFBD>亦<EFBFBD><EFBFBD>?..'; // <EFBFBD>?<3F>滨垢<E6BBA8><E59EA2><EFBFBD>曄內
|
||||
judgment: { ... };
|
||||
},
|
||||
|
||||
hasConflict: true; // 两个模型不一致
|
||||
hasConflict: true; // 銝支葵璅∪<EFBFBD>銝滢<EFBFBD><EFBFBD>?
|
||||
conflictFields: ['conclusion'];
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔥 Week 2 开发重点
|
||||
## <EFBFBD>𤣳 Week 2 撘<EFBFBD><EFBFBD>煾<EFBFBD><EFBFBD>?
|
||||
|
||||
### 1. 筛选风格选择器 ⭐
|
||||
### 1. 蝑偦<EFBFBD>厰<EFBFBD><EFBFBD>潮<EFBFBD>㗇𥋘<EFBFBD>?潃?
|
||||
|
||||
**雿滨蔭**: <20>𥕦遣憿寧𤌍銵典<E98AB5>
|
||||
|
||||
```jsx
|
||||
<Form.Item label="筛选风格" name="screeningStyle">
|
||||
<Form.Item label="蝑偦<EFBFBD>厰<EFBFBD><EFBFBD>? name="screeningStyle">
|
||||
<Radio.Group defaultValue="standard">
|
||||
<Radio.Button value="lenient">
|
||||
<EFBFBD><EFBFBD> 摰賣𠹭璅∪<EFBFBD>
|
||||
@@ -312,15 +312,15 @@ screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
|
||||
---
|
||||
|
||||
### 2. 两个模型理由展示 ⭐⭐⭐ **最重要**
|
||||
### 2. 銝支葵璅∪<EFBFBD><EFBFBD><EFBFBD>眏撅閧內 潃鐥<E6BD83>潃?**<2A><><EFBFBD>滩<EFBFBD>**
|
||||
|
||||
**位置**: 筛选结果详情弹窗
|
||||
**雿滨蔭**: 蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>𡏭祕<EFBFBD><EFBFBD>撕蝒?
|
||||
|
||||
```jsx
|
||||
<Modal title="筛选详情" width={1000}>
|
||||
{/* 最终决策 */}
|
||||
<Modal title="蝑偦<EFBFBD>㕑祕<EFBFBD>? width={1000}>
|
||||
{/* <20><>蝏<EFBFBD><E89D8F>蝑?*/}
|
||||
<Alert type={finalDecision === 'pending' ? 'warning' : 'success'}>
|
||||
<strong>最终决策:</strong> {finalDecision}
|
||||
<strong><3E><>蝏<EFBFBD><E89D8F>蝑?</strong> {finalDecision}
|
||||
</Alert>
|
||||
|
||||
{/* <20>脩<EFBFBD><E884A9>鞟內 */}
|
||||
@@ -332,7 +332,7 @@ screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
|
||||
<Divider />
|
||||
|
||||
{/* ⭐ 两个模型的详细结果(并排显示)*/}
|
||||
{/* 潃?銝支葵璅∪<E79285><E288AA><EFBFBD>祕蝏<E7A595><E89D8F><EFBFBD>頣<EFBFBD>撟嗆<E6929F><E59786>曄內嚗?/}
|
||||
<Row gutter={16}>
|
||||
<Col span={12}>
|
||||
<Card title="<22><> DeepSeek-V3" size="small">
|
||||
@@ -342,7 +342,7 @@ screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
{model1.conclusion}
|
||||
</Tag>
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="置信度">
|
||||
<Descriptions.Item label="蝵桐縑摨?>
|
||||
{(model1.confidence * 100).toFixed(0)}%
|
||||
</Descriptions.Item>
|
||||
</Descriptions>
|
||||
@@ -352,7 +352,7 @@ screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
<div>
|
||||
<strong><3E>斗鱏<E69697><E9B18F>眏:</strong>
|
||||
<p style={{marginTop: 8, whiteSpace: 'pre-wrap'}}>
|
||||
{model1.reason} {/* ⭐ 显示完整理由 */}
|
||||
{model1.reason} {/* 潃?<3F>曄內摰峕㟲<E5B395><E39FB2>眏 */}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -373,7 +373,7 @@ screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
|
||||
<Col span={12}>
|
||||
<Card title="<22><> Qwen-Max" size="small">
|
||||
{/* 同上,显示model2的结果 */}
|
||||
{/* <EFBFBD>䔶<EFBFBD>嚗峕遬蝷榦odel2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*/}
|
||||
</Card>
|
||||
</Col>
|
||||
</Row>
|
||||
@@ -381,45 +381,45 @@ screening_tasks -- 筛选任务(批量任务进度跟踪)
|
||||
{/* 鈭箏極憭齿瓲<E9BDBF>厰僼 */}
|
||||
<div style={{marginTop: 16, textAlign: 'center'}}>
|
||||
<Button type="primary" onClick={handleManualReview}>
|
||||
人工复核此文献
|
||||
鈭箏極憭齿瓲甇斗<EFBFBD><EFBFBD>?
|
||||
</Button>
|
||||
</div>
|
||||
</Modal>
|
||||
```
|
||||
|
||||
**銝箔<E98A9D>銋<EFBFBD><E98A8B>銋<EFBFBD><E98A8B>閬<EFBFBD><E996AC>**
|
||||
- 用户需要看到AI的思考过程
|
||||
- 当两个模型冲突时,用户需要对比理由来做决策
|
||||
- <EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD>蚊I<EFBFBD><EFBFBD><EFBFBD>肽<EFBFBD><EFBFBD><EFBFBD>蝔?
|
||||
- 敶㮖舅銝芣芋<EFBFBD>见<EFBFBD>蝒<EFBFBD>𧒄嚗𣬚鍂<EFBFBD>琿<EFBFBD>閬<EFBFBD>笆瘥𠉛<EFBFBD><EFBFBD>望䔉<EFBFBD>𡁜<EFBFBD>蝑?
|
||||
- <20>喃蝙鈭箇掩銝枏振銋笔虾<E7AC94>賜塳<E8B39C>辷<EFBFBD><E8BEB7><EFBFBD>眏撣桀𨭌撉諹<E69289>
|
||||
|
||||
---
|
||||
|
||||
## <20><> <20>滩<EFBFBD><E6BBA9><EFBFBD>﹝蝝W<E89D9D>
|
||||
|
||||
### 必读文档(开发前)
|
||||
1. **任务分解**: `docs/03-业务模块/ASL-AI智能文献/04-开发计划/03-任务分解.md`
|
||||
### 敹<EFBFBD>粉<EFBFBD><EFBFBD>﹝嚗<EFBFBD><EFBFBD><EFBFBD>穃<EFBFBD>嚗?
|
||||
1. **隞餃𦛚<EFBFBD><EFBFBD>圾**: `docs/03-銝𡁜𦛚璅∪<EFBFBD>/ASL-AI<EFBFBD>箄<EFBFBD><EFBFBD><EFBFBD>讃/04-撘<><E69298>𤏸恣<F0A48FB8>?03-隞餃𦛚<E9A483><F0A69B9A>圾.md`
|
||||
- Week 2霂衣<E99C82>隞餃𦛚皜<F0A69B9A><E79A9C>
|
||||
|
||||
2. **UI<55>笔<EFBFBD>**: `docs/03-銝𡁜𦛚璅∪<E79285>/ASL-AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃/03-UI霈曇恣/AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃-<2D><><EFBFBD><EFBFBD>䁅<EFBFBD><E48185>萘<EFBFBD><E89098>笔<EFBFBD>.html`
|
||||
- 界面参考
|
||||
- <EFBFBD>屸𢒰<EFBFBD><EFBFBD><EFBFBD>?
|
||||
|
||||
3. **API设计**: `docs/03-业务模块/ASL-AI智能文献/02-技术设计/02-API设计规范.md`
|
||||
3. **API霈曇恣**: `docs/03-銝𡁜𦛚璅∪<EFBFBD>/ASL-AI<EFBFBD>箄<EFBFBD><EFBFBD><EFBFBD>讃/02-<2D><><EFBFBD>航挽霈?02-API霈曇恣閫<E681A3><E996AB>.md`
|
||||
- API<50>亙藁<E4BA99><E89781>﹝
|
||||
|
||||
### 参考文档(需要时查阅)
|
||||
1. **系统架构**: `docs/00-系统总体设计/00-系统当前状态与开发指南.md`
|
||||
2. **前端模块化**: `docs/00-系统总体设计/前后端模块化架构设计-V2.md`
|
||||
3. **数据库设计**: `docs/03-业务模块/ASL-AI智能文献/02-技术设计/01-数据库设计.md`
|
||||
### <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>獢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD>𧒄<EFBFBD>仿<EFBFBD>嚗?
|
||||
1. **蝟餌<EFBFBD><EFBFBD>嗆<EFBFBD>**: `docs/00-蝟餌<EFBFBD><EFBFBD>颱<EFBFBD>霈曇恣/00-蝟餌<E89D9F>敶枏<E695B6><E69E8F>嗆<EFBFBD><E59786><EFBFBD>撘<EFBFBD><E69298>烐<EFBFBD><E78390>?md`
|
||||
2. **<EFBFBD>滨垢璅∪<EFBFBD><EFBFBD>?*: `docs/00-蝟餌<E89D9F><E9A48C>颱<EFBFBD>霈曇恣/<2F>滚<EFBFBD>蝡舀芋<E88880>堒<EFBFBD><E5A092>嗆<EFBFBD>霈曇恣-V2.md`
|
||||
3. **<EFBFBD>唳旿摨栞挽霈?*: `docs/03-銝𡁜𦛚璅∪<EFBFBD>/ASL-AI<EFBFBD>箄<EFBFBD><EFBFBD><EFBFBD>讃/02-<2D><><EFBFBD>航挽霈?01-<2D>唳旿摨栞挽霈?md`
|
||||
|
||||
---
|
||||
|
||||
## 🚀 快速启动
|
||||
## <EFBFBD><EFBFBD> 敹恍<E695B9>笔鍳<E7AC94>?
|
||||
|
||||
### 1. 启动后端(已完成)
|
||||
### 1. <EFBFBD>臬𢆡<EFBFBD>𡒊垢嚗<EFBFBD>歇摰峕<EFBFBD>嚗?
|
||||
```bash
|
||||
cd backend
|
||||
npm run dev
|
||||
# 后端运行在 http://localhost:3001
|
||||
# <EFBFBD>𡒊垢餈鞱<EFBFBD><EFBFBD>?http://localhost:3001
|
||||
# API<50>滨<EFBFBD>: /api/v1/asl
|
||||
```
|
||||
|
||||
@@ -427,12 +427,12 @@ npm run dev
|
||||
```bash
|
||||
cd frontend-v2
|
||||
npm run dev
|
||||
# 前端运行在 http://localhost:5173
|
||||
# <EFBFBD>滨垢餈鞱<EFBFBD><EFBFBD>?http://localhost:5173
|
||||
```
|
||||
|
||||
### 3. 瘚贝<E7989A>API
|
||||
```bash
|
||||
# 健康检查
|
||||
# <EFBFBD>亙熒璉<EFBFBD><EFBFBD>?
|
||||
curl http://localhost:3001/api/v1/asl/health
|
||||
|
||||
# <20>瑕<EFBFBD>憿寧𤌍<E5AFA7>𡑒”
|
||||
@@ -449,11 +449,11 @@ curl http://localhost:3001/api/v1/asl/projects
|
||||
const userId = requestBody.userId || 'asl-test-user-001';
|
||||
```
|
||||
|
||||
**生产环境需要**: 实现真实的JWT认证
|
||||
**<EFBFBD>煺漣<EFBFBD>臬<EFBFBD><EFBFBD><EFBFBD>閬?*: 摰䂿緵<E482BF>笔<EFBFBD><E7AC94><EFBFBD>WT霈方<E99C88>
|
||||
|
||||
---
|
||||
|
||||
### 2. 筛选风格参数
|
||||
### 2. 蝑偦<EFBFBD>厰<EFBFBD><EFBFBD>澆<EFBFBD><EFBFBD>?
|
||||
<EFBFBD>𥕦遣憿寧𤌍<EFBFBD>塚<EFBFBD>霈啣<EFBFBD>隡𣳇<EFBFBD>垍<EFBFBD><EFBFBD>厰<EFBFBD><EFBFBD>潘<EFBFBD>
|
||||
```typescript
|
||||
const projectData = {
|
||||
@@ -462,7 +462,7 @@ const projectData = {
|
||||
inclusionCriteria: '...',
|
||||
exclusionCriteria: '...',
|
||||
screeningConfig: {
|
||||
style: 'lenient', // ← 筛选风格
|
||||
style: 'lenient', // <EFBFBD>?蝑偦<E89D91>厰<EFBFBD><E58EB0>?
|
||||
models: ['deepseek-chat', 'qwen-max']
|
||||
}
|
||||
};
|
||||
@@ -470,60 +470,60 @@ const projectData = {
|
||||
|
||||
---
|
||||
|
||||
### 3. 两个模型理由是核心功能
|
||||
**必须在前端显示**,不能省略!
|
||||
### 3. 銝支葵璅∪<EFBFBD><EFBFBD><EFBFBD>眏<EFBFBD>舀瓲敹<EFBFBD><EFBFBD><EFBFBD>?
|
||||
**敹<EFBFBD>◆<EFBFBD>典<EFBFBD>蝡舀遬蝷?*嚗䔶<E59A97><E494B6>賜<EFBFBD><E8B39C>伐<EFBFBD>
|
||||
|
||||
这是用户最重要的需求,帮助他们理解AI的判断逻辑。
|
||||
餈蹱糓<EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>滩<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘙<EFBFBD><EFBFBD>撣桀𨭌隞碶賑<EFBFBD><EFBFBD>圾AI<EFBFBD><EFBFBD>ế<EFBFBD>剝<EFBFBD>餉<EFBFBD><EFBFBD>?
|
||||
|
||||
---
|
||||
|
||||
## <20>㴓 Week 2 <20>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD>
|
||||
|
||||
### 功能完整性
|
||||
- [ ] 用户可以创建项目(包含PICOS和筛选风格选择)
|
||||
### <EFBFBD>蠘<EFBFBD>摰峕㟲<EFBFBD>?
|
||||
- [ ] <EFBFBD>冽<EFBFBD><EFBFBD>臭誑<EFBFBD>𥕦遣憿寧𤌍嚗<EFBFBD><EFBFBD><EFBFBD>促ICOS<EFBFBD>𣬚<EFBFBD><EFBFBD>厰<EFBFBD><EFBFBD>潮<EFBFBD>㗇𥋘嚗?
|
||||
- [ ] <20>冽<EFBFBD><E586BD>臭誑銝𠹺<E98A9D>Excel<65><6C>辣撖澆<E69296><E6BE86><EFBFBD>讃
|
||||
- [ ] 用户可以查看筛选结果列表
|
||||
- [ ] 用户可以查看**两个模型的详细理由** ⭐
|
||||
- [ ] 用户可以识别冲突的文献
|
||||
- [ ] <EFBFBD>冽<EFBFBD><EFBFBD>臭誑<EFBFBD>亦<EFBFBD>蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>𨅯<EFBFBD>銵?
|
||||
- [ ] <EFBFBD>冽<EFBFBD><EFBFBD>臭誑<EFBFBD>亦<EFBFBD>**銝支葵璅∪<E79285><E288AA><EFBFBD>祕蝏<E7A595><E89D8F><EFBFBD>?* 潃?
|
||||
- [ ] <EFBFBD>冽<EFBFBD><EFBFBD>臭誑霂<EFBFBD><EFBFBD><EFBFBD>脩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
|
||||
### <20>屸𢒰韐券<E99F90>
|
||||
- [ ] UI蝚血<E89D9A>Ant Design閫<6E><E996AB>
|
||||
- [ ] 响应式布局(适配不同屏幕)
|
||||
- [ ] 加载状态提示
|
||||
- [ ] <EFBFBD>滚<EFBFBD>撘誩<EFBFBD>撅<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝滚<EFBFBD>撅誩<EFBFBD>嚗?
|
||||
- [ ] <EFBFBD>㰘蝸<EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>蝷?
|
||||
- [ ] <20>躰秤憭<E7A7A4><E686AD><EFBFBD>见末
|
||||
|
||||
### 隞<><E99A9E>韐券<E99F90>
|
||||
- [ ] TypeScript蝐餃<E89D90>摰峕㟲
|
||||
- [ ] 蝏<>辣<EFBFBD>諹提皜<E68F90>苊
|
||||
- [ ] API调用封装好
|
||||
- [ ] API靚<EFBFBD>鍂撠<EFBFBD><EFBFBD>憟?
|
||||
- [ ] 隞<><E99A9E>蝚血<E89D9A>ESLint閫<74><E996AB>
|
||||
|
||||
---
|
||||
|
||||
## 💡 开发建议
|
||||
## <EFBFBD>働 撘<><E69298>穃遣霈?
|
||||
|
||||
### 1. 先做框架,再填内容
|
||||
### 1. <EFBFBD><EFBFBD><EFBFBD>獢<EFBFBD>沲嚗<EFBFBD><EFBFBD>憛怠<EFBFBD>摰?
|
||||
```
|
||||
Day 1: <20>剖遣憿菟𢒰獢<F0A292B0>沲 + 頝舐眏
|
||||
Day 2: 实现表单和列表
|
||||
Day 2: 摰䂿緵銵典<EFBFBD><EFBFBD><EFBFBD><EFBFBD>銵?
|
||||
Day 3-4: <20><>讃撖澆<E69296><E6BE86>蠘<EFBFBD>
|
||||
Day 5: 筛选结果展示(重点)
|
||||
Day 5: 蝑偦<EFBFBD>厩<EFBFBD><EFBFBD>𨅯<EFBFBD>蝷綽<EFBFBD><EFBFBD>滨<EFBFBD>嚗?
|
||||
```
|
||||
|
||||
### 2. 蝏<>辣憭滨鍂
|
||||
```
|
||||
- ProjectForm.tsx(创建/编辑项目表单)
|
||||
- ProjectForm.tsx嚗<EFBFBD><EFBFBD>撱?蝻𤥁<E89DBB>憿寧𤌍銵典<E98AB5>嚗?
|
||||
- LiteratureTable.tsx嚗<78><E59A97><EFBFBD>桀<EFBFBD>銵刻”<E588BB>潘<EFBFBD>
|
||||
- ScreeningResultCard.tsx嚗<78><E59A97><EFBFBD>厩<EFBFBD><E58EA9>𨅯㨃<F0A885AF><E3A883><EFBFBD>
|
||||
- ModelComparisonPanel.tsx(模型对比面板)⭐
|
||||
- ModelComparisonPanel.tsx嚗<EFBFBD>芋<EFBFBD>见笆瘥娪𢒰<EFBFBD>選<EFBFBD>潃?
|
||||
```
|
||||
|
||||
### 3. 状态管理
|
||||
### 3. <EFBFBD>嗆<EFBFBD><EFBFBD>恣<EFBFBD>?
|
||||
```typescript
|
||||
// 使用React Query管理服务端状态
|
||||
// 雿輻鍂React Query蝞∠<EFBFBD><EFBFBD>滚𦛚蝡舐𠶖<EFBFBD>?
|
||||
const { data: projects } = useQuery(['projects'], fetchProjects);
|
||||
|
||||
// 使用Zustand管理客户端状态
|
||||
// 雿輻鍂Zustand蝞∠<EFBFBD>摰X<EFBFBD>蝡舐𠶖<EFBFBD>?
|
||||
const useAslStore = create((set) => ({
|
||||
currentProject: null,
|
||||
setCurrentProject: (project) => set({ currentProject: project }),
|
||||
@@ -535,7 +535,7 @@ const useAslStore = create((set) => ({
|
||||
## <20><> <20>𡒊賒霈∪<E99C88>
|
||||
|
||||
### Week 3-4: MVP摰峕<E691B0>
|
||||
- 批量筛选
|
||||
- <EFBFBD>寥<EFBFBD>蝑偦<EFBFBD>?
|
||||
- 蝏𤘪<E89D8F>撖澆枂
|
||||
- 瘚贝<E7989A>銝羓瑪
|
||||
|
||||
@@ -544,7 +544,7 @@ const useAslStore = create((set) => ({
|
||||
- <20>冽<EFBFBD><E586BD>芸<EFBFBD>銋侨ICOS
|
||||
- AI<41><49><EFBFBD>颲寧<E9A2B2><E5AFA7><EFBFBD><EFBFBD>
|
||||
|
||||
**详见**: `docs/03-业务模块/ASL-AI智能文献/02-技术设计/07-智能Prompt生成模块开发计划.md`
|
||||
**霂西<EFBFBD>**: `docs/03-銝𡁜𦛚璅∪<EFBFBD>/ASL-AI<EFBFBD>箄<EFBFBD><EFBFBD><EFBFBD>讃/02-<2D><><EFBFBD>航挽霈?07-<2D>箄<EFBFBD>Prompt<70><74><EFBFBD>璅∪<E79285>撘<EFBFBD><E69298>𤏸恣<F0A48FB8>?md`
|
||||
|
||||
---
|
||||
|
||||
@@ -557,13 +557,13 @@ const useAslStore = create((set) => ({
|
||||
|
||||
---
|
||||
|
||||
## ✅ 交接检查清单
|
||||
## <EFBFBD>?鈭斗𦻖璉<F0A6BB96><E79289>交<EFBFBD><E4BAA4>?
|
||||
|
||||
新AI应该确认理解:
|
||||
<EFBFBD>蚊I摨磰砲蝖株恕<EFBFBD><EFBFBD>圾嚗?
|
||||
- [ ] 憿寧𤌍<E5AFA7>臭<EFBFBD>銋<EFBFBD><E98A8B><EFBFBD>餃郎<E9A483><E9838E>讃AI蝑偦<E89D91>㚁<EFBFBD>
|
||||
- [ ] 敶枏<E695B6><E69E8F>嗆<EFBFBD><E59786><EFBFBD>Week 1摰峕<E691B0>嚗𡦀eek 2敺<32><E695BA>憪页<E686AA>
|
||||
- [ ] 技术栈(React + Ant Design + Fastify + Prisma)
|
||||
- [ ] Week 2任务(3个页面:项目管理、文献导入、结果展示)
|
||||
- [ ] <EFBFBD><EFBFBD><EFBFBD>舀<EFBFBD>嚗㇌eact + Ant Design + Fastify + Prisma嚗?
|
||||
- [ ] Week 2隞餃𦛚嚗?銝芷△<E88AB7>g<EFBFBD>憿寧𤌍蝞∠<E89D9E><E288A0><EFBFBD><EFBFBD><EFBFBD>桀紡<E6A180>乓<EFBFBD><E4B993><EFBFBD><EFBFBD>𨅯<EFBFBD>蝷綽<E89DB7>
|
||||
- [ ] <20>詨<EFBFBD><E8A9A8>蠘<EFBFBD>嚗<EFBFBD><E59A97>璅∪<E79285>蝑偦<E89D91>剹<EFBFBD><E589B9><EFBFBD>蝘漤<E89D98><E6BCA4>潦<EFBFBD><E6BDA6>遬蝷箇<E89DB7><E7AE87>梧<EFBFBD>
|
||||
- [ ] <20>滨<EFBFBD>隞餃𦛚嚗<F0A69B9A>遬蝷箔舅銝芣芋<E88AA3>讠<EFBFBD>摰峕㟲<E5B395><E39FB2>眏嚗争<E59A97>
|
||||
|
||||
@@ -573,8 +573,8 @@ const useAslStore = create((set) => ({
|
||||
|
||||
**<EFBFBD><EFBFBD>﹝<EFBFBD><EFBFBD>𧋦**: v1.0
|
||||
**<EFBFBD>𥕦遣<EFBFBD>交<EFBFBD>**: 2025-11-18
|
||||
**维护人**: Previous AI Assistant
|
||||
**用途**: 新AI快速上手指南
|
||||
**蝏湔擪鈭?*: Previous AI Assistant
|
||||
**<EFBFBD>券<EFBFBD>?*: <20>蚊I敹恍<E695B9>煺<EFBFBD><E785BA>𧢲<EFBFBD><F0A7A2B2>?
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user