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%)
92 lines
3.7 KiB
Markdown
92 lines
3.7 KiB
Markdown
# **IIT Manager Agent <20><><EFBFBD>舀䲮獢<E4B2AE>恣<EFBFBD>乩<EFBFBD>銵乩<E98AB5> (V1.1)**
|
||
|
||
## **1\. <20>嗆<EFBFBD>靽格迤嚗朞圾<E69C9E>喳龫<E596B3>W<EFBFBD>蝵𤏸<E89DB5><F0A48FB8>𡁏<EFBFBD>?*
|
||
|
||
<EFBFBD><EFBFBD>笆 **憌𡡞埯銝<E59FAF> (蝵𤑳<E89DB5>餈鮋<E9A488>𡁏<EFBFBD>?**嚗<>遣霈桀銁 3.1 REDCap <20><><EFBFBD> 銝剖<E98A9D><E58996>?**"瘛瑕<E7989B><E79195>峕郊璅∪<E79285>"**<2A>?
|
||
### **<2A>啣<EFBFBD>璅∪<E79285>嚗锭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
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
**靽格㺿撱箄悅**嚗?
|
||
* <20>?MVP <20>嗆挾嚗?*<EFBFBD>∪<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>?
|
||
### **<2A>啣<EFBFBD> API嚗𡁜<E59A97><F0A1819C>讛捶<E8AE9B>扯圻<E689AF>?*
|
||
|
||
**Endpoint**: POST /api/v1/iit/projects/:id/scan-all
|
||
|
||
**<EFBFBD>餉<EFBFBD>摰䂿緵 (憭滨鍂<E6BBA8>唳<EFBFBD> ASL/DC 璅∪<E79285><E288AA><EFBFBD>鸌憭<E9B88C><E686AD>蝏誯<E89D8F>)**嚗?
|
||
1. 靚<>鍂 REDCap API 隞<><E99A9E>頧賣<E9A0A7><E8B3A3>?record\_id (頧駁<E9A0A7>蝥?<3F>?
|
||
2. 撠?ID <20>𡑒”<F0A19192><E2809D><EFBFBD> (Chunk)嚗峕<E59A97><E5B395>?50 銝?ID<49>?
|
||
3. <20>拍鍂 pg-boss <20>券<EFBFBD>?iit:quality-check:batch 隞餃𦛚<E9A483>?
|
||
4. 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>?
|
||
* **<2A><>眏**嚗?
|
||
1. <20>臭誑霈拙<E99C88>蝡臬𣪧<E887AC>笔<EFBFBD><E7AC94>?React <20>亥<EFBFBD>嚗𠃍ooks, Components嚗剹<E59A97>?
|
||
2. <20>臭誑憭滨鍂 shared/components 銝剔<E98A9D><E58994>典<EFBFBD><E585B8>餉<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>唳旿<E594B3>澆<EFBFBD><E6BE86>吔<EFBFBD><E59094>?
|
||
3. Taro <20>舀<EFBFBD>銝<EFBFBD><E98A9D>桃<EFBFBD>霂睲蛹 敺桐縑撠讐<E692A0>摨?\+ H5 (<28>其<EFBFBD>隡<EFBFBD>凝靘扯器<E689AF>?嚗?*銝<>敼潔舅<E6BD94>?*<2A>?
|
||
## **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>?
|
||
* **憌𡡞埯**嚗𡁏<E59A97>甈∟捶<E2889F>折<EFBFBD>霈?Dify <20>齿鰵璉<E9B0B5>蝝X㟲銝?PDF嚗屸<E59A97>笔漲<E7AC94>V<EFBFBD> Token 瘨<><E798A8>堒之<E5A092>?
|
||
* **隡睃<E99AA1>**嚗𡁜銁 ProtocolService 銝剖<E98A9D><E58996>?**"<22>喲睸閫<E79DB8><E996AB>蝻枏<E89DBB>"**<2A>?
|
||
* <20>其<EFBFBD>隡?Protocol <20>𠬍<EFBFBD>霈?Agent 憸<><E686B8><EFBFBD>𣂼<EFBFBD><F0A382BC>?"<22>交<EFBFBD><E4BAA4><EFBFBD><EFBFBD>" (Inclusion/Exclusion Criteria) 撟嗅<E6929F><E59785>?PostgreSQL JSONB 摮埈挾<E59F88>?
|
||
* <20>典<EFBFBD><E585B8>箇<EFBFBD>韐冽綉<E586BD>塚<EFBFBD>隡睃<E99AA1><E79D83>寥<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>?
|
||
**撘<><E69298>睲<EFBFBD><E79DB2><EFBFBD>漣靚<E6BCA3>㟲撱箄悅**嚗?
|
||
1. **Day 1**: <20>唳旿摨?& <20>箇<EFBFBD><E7AE87>嗆<EFBFBD> (銝滚<E98A9D>)
|
||
2. **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>?
|
||
3. **Day 3**: Webhook 銵亙<E98AB5>摰䂿緵 (雿靝蛹<E99D9D>單𧒄<E596AE>批<EFBFBD>撘?<3F> |