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%)
3.7 KiB
IIT Manager Agent <20><><EFBFBD>舀䲮獢<E4B2AE>恣<EFBFBD>乩<EFBFBD>銵乩<E98AB5> (V1.1)
*1. <20>嗆<EFBFBD>靽格迤嚗朞圾<E69C9E>喳龫<E596B3>W<EFBFBD>蝵𤏸<E89DB5><F0A48FB8>𡁏<EFBFBD>?
<EFBFBD><EFBFBD>笆 憌𡡞埯銝<EFBFBD> (蝵𤑳<E89DB5>餈鮋<E9A488>𡁏<EFBFBD>?嚗<EFBFBD>遣霈桀銁 3.1 REDCap <20><><EFBFBD> 銝剖<E98A9D><E58996>?"瘛瑕<E7989B><E79195>峕郊璅∪<E79285>"<EFBFBD>?
<EFBFBD>啣<EFBFBD>璅∪<EFBFBD>嚗锭yncManager (<28>峕郊蝞∠<E89D9E><E288A0>?
// backend/src/modules/iit-manager/services/SyncManager.ts
export class SyncManager {
/**
* 瘛瑕<E7989B><E79195>峕郊蝑𣇉裦
* 1. 隡睃<E99AA1><E79D83>穃𨯬 Webhook (摰墧𧒄)
* 2. 摰𡁏𧒄頧株砭 (<28>𨅯<EFBFBD>嚗諹圾<E8ABB9>喳<EFBFBD>蝵睲<E89DB5><E79DB2>𡁏<EFBFBD>Webhook銝W仃<EFBCB7>桅<EFBFBD>)
*/
async schedulePolling(projectId: string, intervalMinutes: number = 10) {
await jobQueue.schedule('iit:redcap:poll', { projectId }, {
every: `${intervalMinutes} minutes`
});
}
/**
* 頧株砭隞餃𦛚憭<F0A69B9A><E686AD><EFBFBD>?
*/
async handlePoll(projectId: string) {
// 1. <20>瑕<EFBFBD>銝𦠜活<F0A6A09C>峕郊<E5B395>園𡢿
const lastSync = await this.getLastSyncTime(projectId);
// 2\. 靚<>鍂 REDCap API <20>瑕<EFBFBD><E79195>冽迨銋见<E98A8B>靽格㺿<E6A0BC><E3BABF>扇敶?
// API: 'export', content: 'record', dateRangeBegin: lastSync
const records \= await this.redcapAdapter.fetchModifiedRecords(projectId, lastSync);
// 3\. 閫血<E996AB>韐冽綉 (憭滨鍂 Webhook <20><><EFBFBD>餉<EFBFBD>)
for (const record of records) {
await jobQueue.push('iit:quality-check', {
projectId,
recordId: record.record\_id,
data: record
});
}
}
}
靽格㺿撱箄悅嚗?
- <EFBFBD>?MVP <20>嗆挾嚗?*<2A>∪<EFBFBD>摰䂿緵頧株砭 (Polling)**<2A><><EFBFBD>閬<EFBFBD><E996AC><EFBFBD>駁堺<E9A781><E5A0BA><EFBFBD>蝏𦦵㴓憓<E3B493><E68693>?
*2. <20>蠘<EFBFBD>銵亙<E98AB5>嚗𡁜<E59A97><F0A1819C>脫㺭<E884AB>桀<EFBFBD><E6A180>𤩺醌<F0A4A9BA>?
<EFBFBD><EFBFBD>笆 **憌𡡞埯鈭?(摮㗛<E691AE><E3979B>唳旿)**嚗<>遣霈桀⏚<E6A180>函緵<E587BD>厩<EFBFBD> CheckpointService 摰䂿緵<E482BF>券<EFBFBD><E588B8>急<EFBFBD><E680A5>?
*<EFBFBD>啣<EFBFBD> API嚗𡁜<E59A97><F0A1819C>讛捶<E8AE9B>扯圻<E689AF>?
Endpoint: POST /api/v1/iit/projects/:id/scan-all
**<2A>餉<EFBFBD>摰䂿緵 (憭滨鍂<E6BBA8>唳<EFBFBD> ASL/DC 璅∪<E79285><E288AA><EFBFBD>鸌憭<E9B88C><E686AD>蝏誯<E89D8F>)**嚗?
- 靚<EFBFBD>鍂 REDCap API 隞<><E99A9E>頧賣<E9A0A7><E8B3A3>?record_id (頧駁<E9A0A7>蝥?<3F>?
- 撠?ID <20>𡑒”<F0A19192><E2809D><EFBFBD> (Chunk)嚗峕<E59A97><E5B395>?50 銝?ID<49>?
- <EFBFBD>拍鍂 pg-boss <20>券<EFBFBD>?iit:quality-check:batch 隞餃𦛚<E9A483>?
- Worker <20>𣂷葵<F0A382B7>匧<EFBFBD>摰峕㟲<E5B395>唳旿撟嗉<E6929F>銵?Agent<6E>?
3. <20>滨垢<E6BBA8><E59EA2><EFBFBD>舀<EFBFBD><E88880>𡒊&
<EFBFBD>寞<EFBFBD>銝剜<EFBFBD><EFBFBD>唬<EFBFBD> "敺桐縑撠讐<E692A0>摨?嚗䔶<E59A97><E494B6>芣<EFBFBD>蝖格<E89D96><E6A0BC>舀<EFBFBD><E88880><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>唬<EFBFBD>隞祉緵<E7A589>厩<EFBFBD> React <20>箏<EFBFBD>嚗?
- **<2A>刻<EFBFBD><E588BB>寞<EFBFBD>**嚗帋蝙<E5B88B>?Taro (React 霂剜<E99C82>) 撘<><E69298>穃<EFBFBD>蝔见<E89D94><E8A781>?
- <EFBFBD><EFBFBD>眏嚗?
- <EFBFBD>臭誑霈拙<EFBFBD>蝡臬𣪧<EFBFBD>笔<EFBFBD><EFBFBD>?React <20>亥<EFBFBD>嚗𠃍ooks, Components嚗剹<E59A97>?
- <EFBFBD>臭誑憭滨鍂 shared/components 銝剔<E98A9D><E58994>典<EFBFBD><E585B8>餉<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>唳旿<E594B3>澆<EFBFBD><E6BE86>吔<EFBFBD><E59094>?
- Taro <20>舀<EFBFBD>銝<EFBFBD><E98A9D>桃<EFBFBD>霂睲蛹 敺桐縑撠讐<E692A0>摨?+ H5 (<28>其<EFBFBD>隡<EFBFBD>凝靘扯器<E689AF>?嚗?銝<EFBFBD>敼潔舅<EFBFBD>?<EFBFBD>?
4. <20>唳旿摨?Schema 敺株<E695BA>
<EFBFBD>?IitUserMapping 銵其葉嚗<E89189>遣霈桀<E99C88><E6A180>?Token 摮埈挾嚗𣬚鍂鈭𤾸<E988AD>蝔见<E89D94> Session 蝏湔擪<E6B994>?
model IitUserMapping {
// ... <20>唳<EFBFBD>摮埈挾
// <20>啣<EFBFBD>嚗𡁜<E59A97>蝔见<E89D94>隡朞<E99AA1>撖<EFBFBD>𤨎 (<28>其<EFBFBD><E585B6>⊿<EFBFBD> wx.login)
miniProgramOpenId String? @unique
sessionKey String? // 敺桐縑 session_key
@@index([miniProgramOpenId])
}
5. Dify RAG <20>扯<EFBFBD>隡睃<E99AA1> (憸<><E686B8>頧?
PRD <20>𣂼<EFBFBD> "Protocol 敺<>敺<EFBFBD>敺<EFBFBD>鵭"<22>?
- 憌𡡞埯嚗𡁏<EFBFBD>甈∟捶<EFBFBD>折<EFBFBD>霈?Dify <20>齿鰵璉<E9B0B5>蝝X㟲銝?PDF嚗屸<E59A97>笔漲<E7AC94>V<EFBFBD> Token 瘨<><E798A8>堒之<E5A092>?
- 隡睃<EFBFBD>嚗𡁜銁 ProtocolService 銝剖<E98A9D><E58996>?"<22>喲睸閫<E79DB8><E996AB>蝻枏<E89DBB>"<EFBFBD>?
- <EFBFBD>其<EFBFBD>隡?Protocol <20>𠬍<EFBFBD>霈?Agent 憸<><E686B8><EFBFBD>𣂼<EFBFBD><F0A382BC>?"<22>交<EFBFBD><E4BAA4><EFBFBD><EFBFBD>" (Inclusion/Exclusion Criteria) 撟嗅<E6929F><E59785>?PostgreSQL JSONB 摮埈挾<E59F88>?
- <EFBFBD>典<EFBFBD><EFBFBD>箇<EFBFBD>韐冽綉<EFBFBD>塚<EFBFBD>隡睃<EFBFBD><EFBFBD>寥<EFBFBD> DB <20>𣬚<EFBFBD>閫<EFBFBD><E996AB>嚗<EFBFBD>龪<EFBFBD>滢<EFBFBD><E6BBA2>啣<EFBFBD><E595A3>?Agent <20>?RAG 璉<>蝝U<E89D9D>?
蝏栞捏
甇斗䲮獢?V1.0 <20>臭誑<E887AD>朞<EFBFBD>霂<EFBFBD>恣嚗䔶<E59A97>敹<EFBFBD>◆銵亙<E98AB5>銝𡃏膩 "Plan B" (頧株砭<E6A0AA>箏<EFBFBD>)<EFBFBD>? 撘<EFBFBD><EFBFBD>睲<EFBFBD><EFBFBD><EFBFBD>漣靚<EFBFBD>㟲撱箄悅嚗?
- Day 1: <20>唳旿摨?& <20>箇<EFBFBD><E7AE87>嗆<EFBFBD> (銝滚<E98A9D>)
- Day 2: **隡睃<E99AA1>摰䂿緵 REDCap API Adapter (<28>匧<EFBFBD><E58CA7>賢<EFBFBD>)**嚗諹<E59A97>䔶<EFBFBD><E494B6>?Webhook (<28>券<EFBFBD><E588B8><EFBFBD><EFBFBD>?<3F><><EFBFBD>銝?API <20>匧<EFBFBD><E58CA7>游虾<E6B8B8>改<EFBFBD>銝磰<E98A9D>閫<EFBFBD><E996AB><EFBFBD><EFBFBD>蟮<EFBFBD>唳旿<E594B3>桅<EFBFBD><E6A185>?
- Day 3: Webhook 銵亙<E98AB5>摰䂿緵 (雿靝蛹<E99D9D>單𧒄<E596AE>批<EFBFBD>撘?<3F>