Files
AIclinicalresearch/docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-18-Week1完成报告.md
HaHafeng 1b53ab9d52 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%)
2026-01-14 19:15:01 +08:00

315 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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璅<E79285> Week 1 撘<><E69298><EFBFBD><E7A983>鞉𥁒<E99E89>?
**<EFBFBD><EFBFBD>**: 2025-11-18
**撘<><E69298>穃𪂹<E7A983>?*: Week 1 (Day 1-5)
**<EFBFBD><EFBFBD>?*: <20>?<3F><EFBFBD>摰峕<E691B0>
---
## <20><> 隞餃𦛚摰峕<E691B0><E5B395><EFBFBD><EFBFBD>
| 隞餃𦛚 | 霈<E99C88> | 摰鮋<E691B0> | <20><EFBFBD>?| 霂湔<E99C82> |
|------|------|------|------|------|
| Prisma Schema霈曇恣 | Day 1 | Day 1 | <20>?| 4銝芣芋<E88AA3><EFBFBD>174銵䔶誨<E494B6>?|
| <20>唳旿摨栞<E691A8>蝘?| Day 1 | Day 1 | <20>?| 4撘㰘”<E3B098>𥕦遣<F0A595A6>𣂼<EFBFBD> |
| <20>𡒊垢<F0A1928A><EFBFBD>蝏𤘪<E89D8F> | Day 2 | Day 1 | <20>?| 5銝芸<E98A9D><E88AB8><EFBFBD>嚗?銝芣<E98A9D>隞?|
| 頝舐眏瘜典<E7989C> | Day 3 | Day 1 | <20>?| 10銝服PI蝡舐<E89DA1> |
| <20><EFBFBD>API摰䂿緵 | Day 4-5 | Day 1 | <20>?| 憿寧𤌍+<2B><>讃蝞∠<E89D9E> |
| API瘚贝<E7989A> | - | Day 1 | <20>?| 7銝芣<E98A9D>霂訫<E99C82><E8A8AB><EFBFBD><EFBFBD> |
**摰峕<E691B0>摨?*: 6/6 (100%)
**<EFBFBD>𣂼<EFBFBD>摰峕<EFBFBD>**: 4憭?
---
## <20>㴓 摰䂿緵<E482BF><E7B7B5><EFBFBD><EFBFBD>?
### 1. <20>唳旿摨栞挽霈?<3F>?
#### Schema霈曇恣
```prisma
// 4銝芣瓲敹<E793B2><EFBFBD>?
- AslScreeningProject // 蝑偦<E89D91>厰★<E58EB0>?(19摮埈挾)
- AslLiterature // <20><><EFBFBD>∠𤌍 (14摮埈挾 + OSS憸<53><E686B8>)
- AslScreeningResult // 蝑偦<E89D91><EFBFBD><E58EA9>?(40摮埈挾嚗<E68CBE><E59A97><E79285>)
- AslScreeningTask // 蝑偦<E89D91>劐遙<E58A90>?(14摮埈挾)
```
#### <20>唳旿摨栞”
```sql
asl_schema.screening_projects -- 蝑偦<E89D91>厰★<E58EB0>株”
asl_schema.literatures -- <20><><EFBFBD>∠𤌍銵?
asl_schema.screening_results -- 蝑偦<E89D91><EFBFBD><E58EA9>𡏭”
asl_schema.screening_tasks -- 蝑偦<E89D91>劐遙<E58A90>∟”
```
#### <20><EFBFBD>?
- <20>?Schema<6D>𠉛氖 (`asl_schema`)
- <20>?憭㚚睸蝥行<E89DA5> (蝥扯<E89DA5><E689AF>𣳇膄)
- <20>?蝝<E89D9D>隡睃<E99AA1> (12銝芰揣撘?
- <20>?<3F><EFBFBD>蝥行<E89DA5> (projectId + pmid)
- <20>?JSONB摮埈挾 (PICO<43><4F><EFBFBD>)
- <20>?OSS摮埈挾憸<E68CBE><E686B8> (pdfUrl, pdfOssKey)
### 2. <20>𡒊垢API <20>?
#### <20><EFBFBD>蝏𤘪<E89D8F>
```
backend/src/modules/asl/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> controllers/
<EFBFBD>? <20><EFBFBD><E98EBF><EFBFBD> projectController.ts (224銵?
<EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> literatureController.ts (259銵?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> routes/
<EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> index.ts (47銵?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> services/
<EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> llmScreeningService.ts (189銵?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> schemas/
<EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> screening.schema.ts (108銵?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> types/
<20><EFBFBD><E5A999><EFBFBD> index.ts (121銵?
```
#### API蝡舐<E89DA1> (10銝?
```
POST /api/v1/asl/projects - <20>𥕦遣憿寧𤌍
GET /api/v1/asl/projects - <20><EFBFBD>憿寧𤌍<E5AFA7>𡑒”
GET /api/v1/asl/projects/:projectId - <20><EFBFBD>憿寧𤌍霂行<E99C82>
PUT /api/v1/asl/projects/:projectId - <20>湔鰵憿寧𤌍
DELETE /api/v1/asl/projects/:projectId - <20>𣳇膄憿寧𤌍
POST /api/v1/asl/literatures/import - 撖澆<E69296><E6BE86><EFBFBD>讃(JSON)
POST /api/v1/asl/literatures/import-excel - 撖澆<E69296><E6BE86><EFBFBD>讃(Excel)
GET /api/v1/asl/projects/:projectId/literatures - <20><EFBFBD><E79195><EFBFBD><EFBFBD>𡑒”
DELETE /api/v1/asl/literatures/:literatureId - <20>𣳇膄<F0A3B387><E88684>
```
### 3. <20><EFBFBD><E8A9A8>滚𦛚 <20>?
#### LLM蝑偦<E89D91><EFBFBD><E39787>?
```typescript
class LLMScreeningService {
// <20>閙芋<E99699><EFBFBD><E8AEA0>?
async screenWithModel()
// <20>峕芋<E5B395>见僎銵𣬚<E98AB5><F0A3AC9A>?(<28><EFBFBD>)
async dualModelScreening()
// <20><EFBFBD><EFBFBD>瘚?
private detectConflict()
// <20><EFBFBD>蝑偦<E89D91>?
async batchScreening()
}
```
#### JSON Schema撉諹<E69289>
```typescript
// AJV撉諹<E69289><E8ABB9>?
- PicoJudgment Schema
- PicoEvidence Schema
- LLMScreeningOutput Schema
```
#### Prompt<70><74><EFBFBD><EFBFBD>?
```typescript
// <20><><EFBFBD>PICO<43><4F><EFBFBD>蝑偦<E89D91>侨rompt
generateScreeningPrompt(
title, abstract, picoCriteria,
inclusionCriteria, exclusionCriteria
)
```
---
## <20>妒 瘚贝<E7989A>蝏𤘪<E89D8F>
### API瘚贝<E7989A> (7/7<><EFBFBD>)
```bash
<EFBFBD>?1. <20>亙熒璉<E78692><E79289>? GET /health
<EFBFBD>?2. <20>𥕦遣蝑偦<E89D91>厰★<E58EB0>? POST /api/v1/asl/projects
<EFBFBD>?3. <20><EFBFBD>憿寧𤌍<E5AFA7>𡑒” GET /api/v1/asl/projects
<EFBFBD>?4. <20><EFBFBD>憿寧𤌍霂行<E99C82> GET /api/v1/asl/projects/:id
<EFBFBD>?5. 撖澆<E69296><E6BE86><EFBFBD>讃 POST /api/v1/asl/literatures/import
<EFBFBD>?6. <20><EFBFBD><E79195><EFBFBD><EFBFBD>𡑒” GET /api/v1/asl/projects/:id/literatures
<EFBFBD>?7. <20>湔鰵憿寧𤌍 PUT /api/v1/asl/projects/:id
```
### 瘚贝<E7989A><E8B49D>唳旿
- **<2A><EFBFBD>**: asl-test-user-001
- **憿寧𤌍**: 1銝?(SGLT2<54><EFBFBD><E7A983><EFBFBD>頂蝏毺遞餈?
- **<2A><>讃**: 3蝭?(<28><>鉄PMID<49><44>OI<4F><49><EFBFBD><EFBFBD><EFBFBD>靽⊥<E99DBD>)
### <20>唳旿摨㯄<E691A8>霂?
- <20>?銵典<E98AB5>撱箸<E692B1><E7AEB8>?
- <20>?蝝<E89D9D><EFBCB7>𥕦遣<F0A595A6>𣂼<EFBFBD>
- <20>?憭㚚睸蝥行<E89DA5><EFBFBD>
- <20>?<3F>唳旿<E594B3><EFBFBD><EFBFBD>
- <20>?<3F><EFBFBD><E594BE>亥砭甇<E7A0AD>
---
## <20>𣑐 <20><><EFBFBD><EFBFBD>
### <20>𡒊垢獢<E59EA2>
- <20>?Fastify (Web獢<62>沲)
- <20>?Prisma (ORM)
- <20>?TypeScript (蝐餃<E89D90>蝟餌<E89D9F>)
### 靘肽<E99D98><E882BD>?(<28><EFBFBD>)
- <20>?`xlsx` - Excel<65><6C>辣閫<E8BEA3><E996AB>
- <20>?`ajv` - JSON Schema撉諹<E69289>
### 撟喳蝱<E596B3>滚𦛚<E6BB9A><F0A69B9A><EFBFBD>
- <20>?Logger (蝏𤘪<E89D8F><F0A498AA>𡝗𠯫敹?
- <20>?Database Connection Pool
- <20>?LLMFactory (<28>峕芋<E5B395>𧢲𣈲<F0A7A2B2>?
- <20>?StorageFactory (OSS憸<53><E686B8>)
---
## <20><><><E99A9E>蝏蠘恣
| 蝐餃<E89D90> | <20><><EFBFBD>?| 隞<><E99A9E>銵峕㺭 |
|------|--------|----------|
| <20><EFBFBD><E689B9>?| 2 | 483 |
| <20>滚𦛚 | 1 | 189 |
| 頝舐眏 | 1 | 47 |
| 蝐餃<E89D90>摰帋<E691B0> | 1 | 121 |
| Schema | 1 | 108 |
| <20>𡁏𧋦 | 3 | 350 |
| **<EFBFBD>餉恣** | **9** | **~1300** |
---
## <20>綫 霈曇恣鈭桃<E988AD>
### 1. Schema<6D>𠉛氖<F0A0899B><EFBFBD>
```
platform_schema.users <20>? asl_schema.screening_projects
<20>?
asl_schema.literatures
<20>?
asl_schema.screening_results
```
### 2. <20>峕芋<E5B395><EFBFBD><EFBFBD><E99C82><EFBFBD>?
```
Literature <20>?DeepSeek + Qwen (撟嗉<E6929F>)
<20>?
<20><EFBFBD><EFBFBD>瘚?
<20>?
<20><EFBFBD>蝒?<3F>?<3F>芸𢆡<E88AB8><EFBFBD>
<20><EFBFBD>蝒?<3F>?鈭箏極摰⊥瓲
```
### 3. 鈭穃<E988AD><E7A983>蠘挽霈?
```
- <20>删𠶖<E588A0><F0A0B696>PI
- 撟喳蝱<E596B3>滚𦛚<E6BB9A><F0A69B9A><EFBFBD>
- OSS摮睃<E691AE><EFBFBD><E686B8>
- 撘<>郊隞餃𦛚<E9A483><F0A69B9A><EFBFBD>
```
---
## <20><><><E996AB><EFBFBD><EFBFBD>䔮憸?
### 1. Prisma撖澆<E69296><E6BE86>躰秤
**<2A><EFBFBD>**: `getPrisma is not exported`
**閫<><E996AB>**: 靽格㺿銝?`import { prisma } from '...'`
### 2. 靘肽<E99D98><E882BD><EFBFBD>撩憭?
**<2A><EFBFBD>**: `Cannot find package 'xlsx'`
**閫<><E996AB>**: 摰㕑<E691B0> `npm install xlsx ajv`
### 3. 霈方<E99C88><E696B9><EFBFBD>
**<2A><EFBFBD>**: API<50><49><EFBFBD>serId雿<64><E99BBF>JWT銝剝𡢿隞?
**閫<><E996AB>**: 瘛餃<E7989B>瘚贝<E7989A><E79285>嚗屸<E59A97>霈支蝙<E694AF><EFBFBD>霂閧鍂<E996A7>弒D
### 4. <20>唳旿摨栞”<E6A09E><EFBFBD>
**<2A><EFBFBD>**: `prisma db push`<EFBFBD>瘚见<EFBFBD>public schema<6D><EFBFBD>銵?
**閫<><E996AB>**: <20>𥕦遣<F0A595A6>见𢆡SQL<51>𡁏𧋦嚗<F0A78BA6><EFBFBD>𥕦遣ASL銵?
---
## <20><> <20><>﹝鈭批枂
1. <20>?`backend/ASL-API-瘚贝<E7989A><E8B49D><EFBFBD>.md`
2. <20>?`docs/03-銝𡁜𦛚璅<E79285>/ASL-AI<41><EFBFBD><E7AE84><EFBFBD>讃/05-撘<><E69298>𤏸扇敶?2025-11-18-Week1摰峕<E691B0><E5B395><EFBFBD>.md`
3. <20>?`scripts/test-asl-api.ts` (API瘚贝<E7989A><E8B49D>𡁏𧋦)
4. <20>?`scripts/create-asl-tables.ts` (<28>唳旿摨枏<E691A8>撱箄<E692B1><E7AE84>?
5. <20>?`scripts/create-test-user-for-asl.ts` (瘚贝<E7989A><E8B49D><EFBFBD><E586BD>𡁏𧋦)
---
## <20><> 銝衤<E98A9D>甇亥恣<E4BAA5>?(Week 2)
### Day 1-2: 蝑偦<E89D91>劐遙<E58A90>⊥綉<E28AA5>嗅膥
- [ ] <20>𥕦遣 `screeningController.ts`
- [ ] 摰䂿緵 `startScreening` (<28>臬𢆡蝑偦<E89D91>劐遙<E58A90>?
- [ ] 摰䂿緵 `getProgress` (<28><EFBFBD>餈𥕦漲)
- [ ] 摰䂿緵 `getResults` (<28><EFBFBD>蝏𤘪<E89D8F>)
- [ ] <20><><EFBFBD><EFBFBD>郊隞餃𦛚<E9A483><EFBFBD> (JobFactory)
### Day 3-4: LLM蝑偦<E89D91><EFBFBD><E58CA7>?
- [ ] 瘚贝<E7989A><E8B49D>峕芋<E5B395><EFBFBD><E8AEA0><EFBFBD><E39787>?
- [ ] 隡睃<E99AA1>Prompt<70><74><EFBFBD>
- [ ] 摰䂿緵<E482BF><EFBFBD>蝑偦<E89D91>?
- [ ] 瘛餃<E7989B>餈𥕦漲<F0A595A6><EFBFBD>
### Day 5: <20><EFBFBD>摰⊥瓲
- [ ] 摰䂿緵 `reviewConflicts` API
- [ ] <20><EFBFBD>摰⊥瓲<E28AA5><EFBFBD>
- [ ] 摰⊥瓲<E28AA5><E793B2>蟮霈啣<E99C88>
---
## <20>?撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>
### Week 1 <20><EFBFBD> (<28><EFBFBD>摰峕<E691B0>)
- <20>?Prisma Schema霈曇恣摰峕<E691B0>
- <20>?4撘䭾㺭<E4ADBE><EFBFBD>銵典<E98AB5>撱?
- <20>?<3F>𡒊垢<F0A1928A><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𥕦遣
- <20>?10銝服PI蝡舐<E89DA1>摰䂿緵
- <20>?API瘚贝<E7989A><E8B49D><EFBFBD><E588B8><EFBFBD>
- <20>?撟喳蝱<E596B3>滚𦛚<E6BB9A><F0A69B9A><EFBFBD>
### 韐券<E99F90><E588B8><EFBFBD><EFBFBD>
- <20>?隞<><E99A9E>蝚血<E89D9A>TypeScript閫<74><E996AB>
- <20>?雿輻鍂撟喳蝱<E596B3><EFBFBD>霈暹鴌<E69AB9>滚𦛚
- <20>?Schema<6D>𠉛氖<F0A0899B><EFBFBD>
- <20>?鈭穃<E988AD><E7A983>蠘挽霈<E99C88><E288AA>?
- <20>?<3F>躰秤憭<E7A7A4><E686AD><EFBFBD><E691B0>
- <20>?<3F><EFBFBD>霈啣<E99C88>摰峕㟲
---
## <20><> <20><EFBFBD>
ASL璅<EFBFBD>Week 1撘<31><E69298>睲遙<E79DB2>?*<2A><EFBFBD>摰峕<E691B0>**嚗峕<E59A97><E5B395>?憭拙<E686AD><E68B99>𣂼<EFBFBD>摰?憭拍<E686AD><EFBFBD><E69298>𤏸恣<F0A48FB8><EFBFBD>?
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**:
- <20>?摰峕㟲<E5B395><E39FB2><EFBFBD><EFBFBD>霈曇恣<E69B87>諹”蝏𤘪<E89D8F>
- <20>?10銝析ESTful API蝡舐<E89DA1>
- <20>?LLM蝑偦<E89D91><EFBFBD><E39787><EFBFBD><E28AA5>?
- <20>?100%瘚贝<E7989A><E8B49D><EFBFBD><E69C9E>?
- <20>?摰<><E691B0><EFBFBD><EFBFBD><EFBFBD><E8AAA8><EFBFBD>獢?
**<EFBFBD><EFBFBD><EFBFBD>臭漁<EFBFBD>?*:
- Schema<6D>𠉛氖<F0A0899B><EFBFBD>
- <20>峕芋<E5B395><EFBFBD><EFBFBD><E99C82><EFBFBD>?
- 鈭穃<E988AD><E7A983>蠘挽霈?
-<E79285><E288AA>𣇉<EFBFBD><F0A38789>?
銝箏<EFBFBD>蝏胎LM蝑偦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨垢撘<EFBFBD><EFBFBD><EFBFBD>摰帋<EFBFBD><EFBFBD>𡁜<EFBFBD><EFBFBD><EFBFBD>抅蝖<EFBFBD><EFBFBD><EFBFBD><EFBFBD>