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

7.2 KiB
Raw Blame History

ASL璅<EFBFBD> Week 1 撘<><E69298><EFBFBD><E7A983>鞉𥁒<E99E89>?

<EFBFBD><EFBFBD>: 2025-11-18
**撘<><E69298>穃𪂹<E7A983>?: Week 1 (Day 1-5)
**<2A><EFBFBD>?
: <20>?<3F><EFBFBD>摰峕<E691B0>


<EFBFBD><EFBFBD> 隞餃𦛚摰峕<E691B0><E5B395><EFBFBD><EFBFBD>

隞餃𦛚 <EFBFBD> 摰鮋<EFBFBD> <EFBFBD><EFBFBD>? 霂湔<EFBFBD>
Prisma Schema霈曇恣 Day 1 Day 1 <EFBFBD>? 4銝芣芋<EFBFBD><EFBFBD>174銵䔶誨<EFBFBD>?
<EFBFBD>唳旿摨栞<EFBFBD>蝘? Day 1 Day 1 <EFBFBD>? 4撘㰘”<EFBFBD>𥕦遣<EFBFBD>𣂼<EFBFBD>
<EFBFBD>𡒊垢<EFBFBD><EFBFBD>蝏𤘪<EFBFBD> Day 2 Day 1 <EFBFBD>? 5銝芸<EFBFBD><EFBFBD><EFBFBD>嚗?銝芣<E98A9D>隞?
頝舐眏瘜典<EFBFBD> Day 3 Day 1 <EFBFBD>? 10銝服PI蝡舐<EFBFBD>
<EFBFBD><EFBFBD>API摰䂿緵 Day 4-5 Day 1 <EFBFBD>? 憿寧𤌍+<2B><>讃蝞∠<E89D9E>
API瘚贝<EFBFBD> - Day 1 <EFBFBD>? 7銝芣<EFBFBD>霂訫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

**摰峕<E691B0>摨?*: 6/6 (100%)
<EFBFBD>𣂼<EFBFBD>摰峕<EFBFBD>: 4憭?


<EFBFBD>㴓 摰䂿緵<E482BF><E7B7B5><EFBFBD><EFBFBD>?

1. <20>唳旿摨栞挽霈?<3F>?

Schema霈曇恣

// 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摮埈挾)

<EFBFBD>唳旿摨栞”

asl_schema.screening_projects  -- 蝑偦<E89D91>厰★<E58EB0>株”
asl_schema.literatures          -- <20><><EFBFBD>∠𤌍銵?
asl_schema.screening_results    -- 蝑偦<E89D91><EFBFBD><E58EA9>𡏭”
asl_schema.screening_tasks      -- 蝑偦<E89D91>劐遙<E58A90>∟”

<EFBFBD><EFBFBD>?

  • <EFBFBD>?Schema<6D>𠉛氖 (asl_schema)
  • <EFBFBD>?憭㚚睸蝥行<E89DA5> (蝥扯<E89DA5><E689AF>𣳇膄)
  • <EFBFBD>?蝝<E89D9D>隡睃<E99AA1> (12銝芰揣撘?
  • <EFBFBD>?<3F><EFBFBD>蝥行<E89DA5> (projectId + pmid)
  • <EFBFBD>?JSONB摮埈挾 (PICO<43><4F><EFBFBD>)
  • <EFBFBD>?OSS摮埈挾憸<E68CBE><E686B8> (pdfUrl, pdfOssKey)

2. <20>𡒊垢API <20>?

<EFBFBD><EFBFBD>蝏𤘪<EFBFBD>

backend/src/modules/asl/
<0A><EFBFBD><E98EBF><EFBFBD> controllers/
<0A>?  <20><EFBFBD><E98EBF><EFBFBD> projectController.ts      (224銵?
<0A>?  <20><EFBFBD><E5A999><EFBFBD> literatureController.ts   (259銵?
<0A><EFBFBD><E98EBF><EFBFBD> routes/
<0A>?  <20><EFBFBD><E5A999><EFBFBD> index.ts                  (47銵?
<0A><EFBFBD><E98EBF><EFBFBD> services/
<0A>?  <20><EFBFBD><E5A999><EFBFBD> llmScreeningService.ts    (189銵?
<0A><EFBFBD><E98EBF><EFBFBD> schemas/
<0A>?  <20><EFBFBD><E5A999><EFBFBD> screening.schema.ts       (108銵?
<0A><EFBFBD><E5A999><EFBFBD> types/
    <20><EFBFBD><E5A999><EFBFBD> index.ts                  (121銵?

API蝡舐<EFBFBD> (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蝑偦<EFBFBD><EFBFBD><EFBFBD>?

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>

// AJV撉諹<E69289><E8ABB9>?
- PicoJudgment Schema
- PicoEvidence Schema
- LLMScreeningOutput Schema

Prompt<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?

// <20><><EFBFBD>PICO<43><4F><EFBFBD>蝑偦<E89D91>侨rompt
generateScreeningPrompt(
  title, abstract, picoCriteria,
  inclusionCriteria, exclusionCriteria
)

<EFBFBD>妒 瘚贝<E7989A>蝏𤘪<E89D8F>

API瘚贝<EFBFBD> (7/7<><EFBFBD>)

<EFBFBD>?1. <20>亙熒璉<E78692><E79289>?       GET  /health
<0A>?2. <20>𥕦遣蝑偦<E89D91>厰★<E58EB0>?    POST /api/v1/asl/projects
<0A>?3. <20><EFBFBD>憿寧𤌍<E5AFA7>𡑒”     GET  /api/v1/asl/projects
<0A>?4. <20><EFBFBD>憿寧𤌍霂行<E99C82>     GET  /api/v1/asl/projects/:id
<0A>?5. 撖澆<E69296><E6BE86><EFBFBD>讃        POST /api/v1/asl/literatures/import
<0A>?6. <20><EFBFBD><E79195><EFBFBD><EFBFBD>𡑒”     GET  /api/v1/asl/projects/:id/literatures
<0A>?7. <20>湔鰵憿寧𤌍        PUT  /api/v1/asl/projects/:id

瘚贝<EFBFBD><EFBFBD>唳旿

  • <EFBFBD><EFBFBD>: asl-test-user-001
  • 憿寧𤌍: 1銝?(SGLT2<54><EFBFBD><E7A983><EFBFBD>頂蝏毺遞餈?
  • <EFBFBD><EFBFBD>: 3蝭?(<28><>鉄PMID<49><44>OI<4F><49><EFBFBD><EFBFBD><EFBFBD>靽⊥<E99DBD>)

<EFBFBD>唳旿摨㯄<EFBFBD>霂?

  • <EFBFBD>?銵典<E98AB5>撱箸<E692B1><E7AEB8>?
  • <EFBFBD>?蝝<E89D9D><EFBCB7>𥕦遣<F0A595A6>𣂼<EFBFBD>
  • <EFBFBD>?憭㚚睸蝥行<E89DA5><EFBFBD>
  • <EFBFBD>?<3F>唳旿<E594B3><EFBFBD><EFBFBD>
  • <EFBFBD>?<3F><EFBFBD><E594BE>亥砭甇<E7A0AD>

<EFBFBD>𣑐 <20><><EFBFBD><EFBFBD>

<EFBFBD>𡒊垢獢<EFBFBD>

  • <EFBFBD>?Fastify (Web獢<62>沲)
  • <EFBFBD>?Prisma (ORM)
  • <EFBFBD>?TypeScript (蝐餃<E89D90>蝟餌<E89D9F>)

靘肽<EFBFBD><EFBFBD>?(<28><EFBFBD>)

  • <EFBFBD>?xlsx - Excel<65><6C>辣閫<E8BEA3><E996AB>
  • <EFBFBD>?ajv - JSON Schema撉諹<E69289>

撟喳蝱<EFBFBD>滚𦛚<EFBFBD><EFBFBD><EFBFBD>

  • <EFBFBD>?Logger (蝏𤘪<E89D8F><F0A498AA>𡝗𠯫敹?
  • <EFBFBD>?Database Connection Pool
  • <EFBFBD>?LLMFactory (<28>峕芋<E5B395>𧢲𣈲<F0A7A2B2>?
  • <EFBFBD>?StorageFactory (OSS憸<53><E686B8>)

<EFBFBD><EFBFBD><><E99A9E>蝏蠘恣

蝐餃<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>? <EFBFBD><EFBFBD>銵峕㺭
<EFBFBD><EFBFBD><EFBFBD>? 2 483
<EFBFBD>滚𦛚 1 189
頝舐眏 1 47
蝐餃<EFBFBD>摰帋<EFBFBD> 1 121
Schema 1 108
<EFBFBD>𡁏𧋦 3 350
<EFBFBD>餉恣 9 ~1300

<EFBFBD>綫 霈曇恣鈭桃<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>

<EFBFBD><EFBFBD><><E996AB><EFBFBD><EFBFBD>䔮憸?

1. Prisma撖澆<E69296><E6BE86>躰秤

<EFBFBD><EFBFBD>: getPrisma is not exported
<EFBFBD><EFBFBD>: 靽格㺿銝?import { prisma } from '...'

2. 靘肽<E99D98><E882BD><EFBFBD>撩憭?

<EFBFBD><EFBFBD>: Cannot find package 'xlsx'
<EFBFBD><EFBFBD>: 摰㕑<E691B0> npm install xlsx ajv

3. 霈方<E99C88><E696B9><EFBFBD>

<EFBFBD><EFBFBD>: API<50><49><EFBFBD>serId雿<64><E99BBF>JWT銝剝𡢿隞? <EFBFBD><EFBFBD>: 瘛餃<E7989B>瘚贝<E7989A><E79285>嚗屸<E59A97>霈支蝙<E694AF><EFBFBD>霂閧鍂<E996A7>弒D

4. <20>唳旿摨栞”<E6A09E><EFBFBD>

<EFBFBD><EFBFBD>: prisma db push<EFBFBD>瘚见<EFBFBD>public schema<6D><EFBFBD>銵? <EFBFBD><EFBFBD>: <20>𥕦遣<F0A595A6>见𢆡SQL<51>𡁏𧋦嚗<F0A78BA6><EFBFBD>𥕦遣ASL銵?


<EFBFBD><EFBFBD> <20><>﹝鈭批枂

  1. <EFBFBD>?backend/ASL-API-瘚贝<E7989A><E8B49D><EFBFBD>.md
  2. <EFBFBD>?docs/03-銝𡁜𦛚璅<E79285>/ASL-AI<41><EFBFBD><E7AE84><EFBFBD>讃/05-撘<><E69298>𤏸扇敶?2025-11-18-Week1摰峕<E691B0><E5B395><EFBFBD>.md
  3. <EFBFBD>?scripts/test-asl-api.ts (API瘚贝<E7989A><E8B49D>𡁏𧋦)
  4. <EFBFBD>?scripts/create-asl-tables.ts (<28>唳旿摨枏<E691A8>撱箄<E692B1><E7AE84>?
  5. <EFBFBD>?scripts/create-test-user-for-asl.ts (瘚贝<E7989A><E8B49D><EFBFBD><E586BD>𡁏𧋦)

<EFBFBD><EFBFBD> 銝衤<E98A9D>甇亥恣<E4BAA5>?(Week 2)

Day 1-2: 蝑偦<E89D91>劐遙<E58A90>⊥綉<E28AA5>嗅膥

  • <EFBFBD>𥕦遣 screeningController.ts
  • 摰䂿緵 startScreening (<28>臬𢆡蝑偦<E89D91>劐遙<E58A90>?
  • 摰䂿緵 getProgress (<28><EFBFBD>餈𥕦漲)
  • 摰䂿緵 getResults (<28><EFBFBD>蝏𤘪<E89D8F>)
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD>郊隞餃𦛚<EFBFBD><EFBFBD> (JobFactory)

Day 3-4: LLM蝑偦<E89D91><EFBFBD><E58CA7>?

  • 瘚贝<EFBFBD><EFBFBD>峕芋<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
  • 隡睃<EFBFBD>Prompt<EFBFBD><EFBFBD><EFBFBD>
  • 摰䂿緵<EFBFBD><EFBFBD>蝑偦<EFBFBD>?
  • 瘛餃<EFBFBD>餈𥕦漲<EFBFBD><EFBFBD>

Day 5: <20><EFBFBD>摰⊥瓲

  • 摰䂿緵 reviewConflicts API
  • <EFBFBD><EFBFBD>摰⊥瓲<EFBFBD><EFBFBD>
  • 摰⊥瓲<EFBFBD><EFBFBD>蟮霈啣<EFBFBD>

<EFBFBD>?撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>

Week 1 <20><EFBFBD> (<28><EFBFBD>摰峕<E691B0>)

  • <EFBFBD>?Prisma Schema霈曇恣摰峕<E691B0>
  • <EFBFBD>?4撘䭾㺭<E4ADBE><EFBFBD>銵典<E98AB5>撱?
  • <EFBFBD>?<3F>𡒊垢<F0A1928A><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𥕦遣
  • <EFBFBD>?10銝服PI蝡舐<E89DA1>摰䂿緵
  • <EFBFBD>?API瘚贝<E7989A><E8B49D><EFBFBD><E588B8><EFBFBD>
  • <EFBFBD>?撟喳蝱<E596B3>滚𦛚<E6BB9A><F0A69B9A><EFBFBD>

韐券<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

  • <EFBFBD>?隞<><E99A9E>蝚血<E89D9A>TypeScript閫<74><E996AB>
  • <EFBFBD>?雿輻鍂撟喳蝱<E596B3><EFBFBD>霈暹鴌<E69AB9>滚𦛚
  • <EFBFBD>?Schema<6D>𠉛氖<F0A0899B><EFBFBD>
  • <EFBFBD>?鈭穃<E988AD><E7A983>蠘挽霈<E99C88><E288AA>?
  • <EFBFBD>?<3F>躰秤憭<E7A7A4><E686AD><EFBFBD><E691B0>
  • <EFBFBD>?<3F><EFBFBD>霈啣<E99C88>摰峕㟲

<EFBFBD><EFBFBD> <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>:

  • <EFBFBD>?摰峕㟲<E5B395><E39FB2><EFBFBD><EFBFBD>霈曇恣<E69B87>諹”蝏𤘪<E89D8F>
  • <EFBFBD>?10銝析ESTful API蝡舐<E89DA1>
  • <EFBFBD>?LLM蝑偦<E89D91><EFBFBD><E39787><EFBFBD><E28AA5>?
  • <EFBFBD>?100%瘚贝<E7989A><E8B49D><EFBFBD><E69C9E>?
  • <EFBFBD>?摰<><E691B0><EFBFBD><EFBFBD><EFBFBD><E8AAA8><EFBFBD>獢?

**<2A><><EFBFBD>臭漁<E887AD>?*:

  • Schema<EFBFBD>𠉛氖<EFBFBD><EFBFBD>
  • <EFBFBD>峕芋<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
  • 鈭穃<EFBFBD><EFBFBD>蠘挽霈?
  • <EFBFBD><EFBFBD>𣇉<EFBFBD><EFBFBD>?

銝箏<EFBFBD>蝏胎LM蝑偦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滨垢撘<EFBFBD><EFBFBD><EFBFBD>摰帋<EFBFBD><EFBFBD>𡁜<EFBFBD><EFBFBD><EFBFBD>抅蝖<EFBFBD><EFBFBD><EFBFBD><EFBFBD>