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%)
315 lines
7.2 KiB
Markdown
315 lines
7.2 KiB
Markdown
# 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>?蝝W<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>?蝝W<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>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|