Files
AIclinicalresearch/docs/03-业务模块/IIT Manager Agent/06-开发记录/IIT Manager Agent 技术方案审查与补丁.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

92 lines
3.7 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.
# **IIT Manager Agent <20><><EFBFBD>舀䲮獢<E4B2AE><EFBFBD><EFBFBD>銵乩<E98AB5> (V1.1)**
## **1\. <20><EFBFBD>靽格迤嚗朞圾<E69C9E>喳龫<E596B3><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銝<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>㟲銝?PDF嚗屸<E59A97>笔漲<E7AC94><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 璉<><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>