Files
AIclinicalresearch/docs/03-业务模块/IIT Manager Agent/02-技术设计/文档 B:EDC 适配器 (REDCap) 技术详细设计 (V1.0).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

80 lines
4.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.
# **<2A><>﹝ B嚗鍃DC <20><><EFBFBD><EFBFBD>?(REDCap) <20><><EFBFBD>航祕蝏<E7A595>挽霈?(V1.0)**
## **1\. <20><><EFBFBD><E79899><EFBFBD><E692A0>PRD V3 撖?REDCap <20><EFBFBD><E8B3A2><EFBFBD><EFBFBD>瘙?*
<EFBFBD><EFBFBD> IIT Manager Agent V3 <20><><EFBFBD><EFBFBD><EFBFBD>銋㚁<E98A8B><E39A81><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憿餅𣈲<E9A485><F0A388B2>誑銝?REDCap <20><EFBFBD><E8A9A8><EFBFBD><E8B3A2>?
### **1.1 <20>毺䰻<E6AFBA><EFBFBD> (Read & Monitor)**
* **摰墧𧒄<E5A2A7>穃𨯬 (Real-time Hook)**嚗𡁜笆摨婙<E691A8>𨀣㺭<F0A880A3>株捶<E6A0AA>?Agent<6E><EFBFBD><E88588><EFBFBD> CRC 敶訫<E695B6><E8A8AB>唳旿<E594B3><EFBFBD>REDCap 敹<><EFBFBD>賭蜓<E8B3AD><EFBFBD>𨀣綫<F0A880A3>嘥枂鈭衤辣<E8A1A4>?
* **<2A>唳旿<E594B3><EFBFBD>/憓鮋<E68693>撖澆枂 (Data Export)**嚗𡁜笆摨婙<E691A8>𣈯★<F0A388AF>桃恣<E6A183>?Agent<6E><EFBFBD><E88588><EFBFBD><EFBFBD><E996AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡝗<EFBFBD><F0A19D97>㕑扇敶𤏪<E695B6>餈𥡝<E9A488><F0A5A19D><EFBFBD><E4BAA6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B8A1><EFBFBD><EFBFBD><E99C88><E288AA><EFBFBD>?
* **<2A><><EFBFBD><EFBFBD>銋㕑繮<E39591>?(Metadata Export)**嚗𡁜笆摨婙<E691A8>𨀣䲮獢<E4B2AE>㺭摮堒<E691AE><E5A092><EFBFBD><E88588><EFBFBD><EFBFBD><EFBFBD>㚚★<E39A9A><EFBFBD>銵典<E98AB5>蝏𤘪<E89D8F><F0A498AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8AAA9><EFBFBD><EFBFBD>畾萇掩<E89087><EFBFBD>銝𧢲<E98A9D>獢?<3F><>𧋦獢<F0A78BA6><E78DA2>嚗𣬚鍂鈭?AI <20>芸𢆡<E88AB8><F0A286A1><EFBFBD><EFBFBD><EFBFBD><E683A9>?
### **1.2 <20><EFBFBD><E689AF><EFBFBD> (Write & Query)**
* **霈啣<E99C88>瘜典<E7989C>銝擧凒<E693A7>?(Record Import)**嚗𡁜笆摨婙<E691A8>𨀣㺭<F0A880A3>格惣<E6A0BC><EFBFBD><E8B3A1>?Agent<6E><EFBFBD><E88588>I 霂<><E99C82><EFBFBD><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𡝗㺭<F0A19D97><EFBFBD><E6A185><EFBFBD><E59D94><EFBFBD><EFBFBD>摮埈挾<E59F88>?
* **韐函<E99F90>蝞∠<E89D9E> (Query/Data Resolution)**嚗𡁜笆摨婙<E691A8>𡏭捶<F0A18FAD>?Agent<6E><EFBFBD><E88588>I <20>𤑳緵<F0A491B3><EFBFBD><E6A185>𠬍<EFBFBD><F0A0AC8D><EFBFBD><EFBFBD><EFBFBD><E69C9E>亙藁<E4BA99>?REDCap 銝剖<E98A9D>撱算<E692B1>𡏭捶<F0A18FAD>?(Query)<29><EFBFBD>?
* **<2A><EFBFBD>霈方<E99C88><E696B9><EFBFBD> (Auth API)**嚗𡁶&靽?Agent <20><EFBFBD><E6BBA2><EFBFBD><EFBFBD><E686AD>瘜閧<E7989C> User Token 摰∟恣<E2889F>?
## **2\. <20><><EFBFBD><EFBFBD><E887AC><EFBFBD>External Module (EM) 銝?REST API 瘛瑕<E7989B><E79195><EFBFBD>**
銝箔<EFBFBD>摰䂿緵瘛勗漲<EFBFBD><EFBFBD>銝𥪯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗峕<EFBFBD>隞祇<EFBFBD><EFBFBD>?**<2A>諪M 靘扳<E99D98><E689B3>雴辣 \+ Node.js <20><><EFBFBD><EFBFBD><EFBFBD>?* <20><><EFBFBD><E6AFBD>䲮獢<E4B2AE><E78DA2>?
### **2.1 External Module (EM) <20><EFBFBD><E8A9A8>諹提嚗帋蜓<E5B88B>券偬摮?*
<EFBFBD><EFBFBD><EFBFBD>睲賑<EFBFBD><EFBFBD> REDCap 皞鞟<E79A9E>嚗峕<E59A97>隞砍<E99A9E><EFBFBD><E69298><EFBFBD>銝芸<E98A9D>銝?ai\_research\_assistant <20>?EM<45>?
* **<2A>唳旿靽嘥<E99DBD><E598A5><EFBFBD> (redcap\_save\_record)**嚗?
* **<2A><EFBFBD>**嚗𡁏<E59A97>敶栞扇敶蓥<E695B6>摮矋<E691AE>EM <20>閗繮敶枏<E695B6> project\_id <20>?record\_id<69>?
* **<2A><EFBFBD>**嚗𡁻<E59A97><EFBFBD> HTTP POST <20><EFBFBD>?Webhook 蝏?Node.js <20>𡒊垢<F0A1928A>?
* **隞瑕<E99A9E>?*嚗𡁜<E59A97><F0A1819C><EFBFBD>𡏭捶<F0A18FAD>?Agent<6E><EFBFBD>鈭𡁶<E988AD>蝥批<E89DA5>摨𢛵<E691A8>?
* **憿菟𢒰瘜典<E7989C><E585B8><EFBFBD> (redcap\_every\_page\_top)**嚗?
* **<2A><EFBFBD>**嚗𡁜銁<F0A1819C>唳旿敶訫<E695B6>憿菟𢒰瘜典<E7989C><E585B8><EFBFBD>銋?JS (ai\_assistant.js)<29>?
* **<2A><EFBFBD>**嚗𡁜銁敶訫<E695B6><EFBFBD><E78DA2><EFBFBD>曄內 AI 颲<>𨭌<EFBFBD>厰僼<E58EB0><EFBFBD>鈭株<E988AD><E6A0AA><EFBFBD><E6A0BC><EFBFBD>?
* **隞瑕<E99A9E>?*嚗𡁜<E59A97><F0A1819C><EFBFBD><E595A3>仿𧫴畾萇<E795BE><E89087>𨀣㺭摮堒𨭌<E5A092>𦥑<EFBFBD><EFBFBD><E598A5><EFBFBD><EFBFBD>?
### **2.2 Node.js EDC Adapter <20><EFBFBD><E8A9A8>諹提嚗朞◤<E69C9E>刻挪<E588BB>?*
<EFBFBD><EFBFBD>蝡臬<EFBFBD>鋆?RedcapAdapter 蝐鳴<E89D90><EFBFBD><E686AD><EFBFBD><EFBFBD><EFBFBD>劐蜓<E58A90><EFBFBD><E586BD>碶遙<E7A2B6><EFBFBD>?
* **API 靚<>鍂撠<E98D82><E692A0>**嚗?
* exportRecords: <20><EFBFBD>銝游<E98A9D><E6B8B8>唳旿<E594B3>?
* importRecords: <20>𧼮<EFBFBD>敶勗<E695B6><E58B97><EFBFBD><E59786>霈文<E99C88><E69687><EFBFBD><EFBFBD><EFBFBD>?
* exportMetadata: <20><EFBFBD>銵典<E98AB5><E585B8><EFBFBD><EFBFBD><E79A9C><EFBFBD>?
* importQueries: (<28><EFBFBD> EM <20><>䌊摰帋<E691B0>憿菟𢒰) 摰䂿緵 AI <20>芸𢆡<E88AB8>𥕦遣韐函<E99F90><E587BD>?
## **3\. <20>喲睸<E596B2>亙藁皜<E89781><E79A9C>銝𤾸<E98A9D><F0A4BEB8><EFBFBD><E59581>?*
### **3.1 <20><EFBFBD>撖寞𦻖<E5AF9E>亙藁銵?*
| 撖寞𦻖<E5AF9E><EFBFBD> | REDCap <20><EFBFBD> API / EM Hook | 撖孵<E69296><E5ADB5>?Agent <20><EFBFBD> |
| :---- | :---- | :---- |
| **摰墧𧒄<E5A2A7><EFBFBD><E4BAA6>𡁶䰻** | redcap\_save\_record (Hook) | 閫血<E996AB>韐冽綉璉<E7B689><E79289><EFBFBD><E4B993><EFBFBD>唳𠯫<E594B3>?|
| **<EFBFBD><EFBFBD><EFBFBD>唳旿<EFBFBD>峕郊** | exportRecords (API) | <20><><EFBFBD><EFBFBD>冽𥁒頞见飵<E8A781><EFBFBD><E695B4><EFBFBD><EFBFBD><EFBFBD><E8B3A2>?|
| **AI <20>芸𢆡敶訫<E695B6>** | importRecords (API) | <20><><EFBFBD> Agent <20><EFBFBD><E59D94>唳旿嚗<E697BF>蔣摮鞟霈文<E99C88>嚗?|
| **<EFBFBD>唳旿撘<EFBFBD>虜憸<EFBFBD>郎** | importQueries (<28><EFBFBD>銋? | 韐冽綉 Agent <20>𥕦遣韐函<E99F90><E587BD>∠𤌍 |
| **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>** | exportMetadata (API) | <20><EFBFBD><E79195><EFBFBD><EFBFBD><E79A9C>餈𥡝<E9A488> AI 霂凋<E99C82><E5878B><EFBFBD> |
### **3.2 敶勗<E695B6><E58B97><EFBFBD>?(Shadow State) <20><><EFBFBD><EFBFBD>䠷曎頝?*
餈蹱糓<EFBFBD>賜铜銋衣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>啗楝敺<EFBFBD><EFBFBD>銝页<EFBFBD>
1. **撱箄悅<E7AE84><E68285><EFBFBD>**嚗鋫gent 蝏𤘪<E89D8F>摮睃<E691AE><E79D83>睲賑<E79DB2>?pending\_actions 銵具<E98AB5>?
2. **鈭箇掩摰⊥瓲**嚗鋴RC <20>?Workbench <20>孵稬<E5ADB5>𦦵霈手<E99C88><EFBFBD>?
3. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?*嚗鐭ode.js <20>𣂼<EFBFBD>霂交辺<E4BAA4><EFBFBD> edc\_api\_token嚗𣬚<E59A97><EFBFBD><E98B86><EFBFBD><EFBFBD><EFBFBD> REDCap importRecords JSON <20><EFBFBD><E4BAA4>?
4. **<EFBFBD>𧼮<EFBFBD><EFBFBD><EFBFBD>**嚗?
// REDCap <20><EFBFBD><E4BA99><EFBFBD><EFBFBD>格聢撘讐內靘?
\[
{"record\_id": "P001", "redcap\_repeat\_instance": 1, "field\_name": "ai\_qc\_status", "value": "2"}
\]
5. **摰∟恣<E2889F>剔㴓**嚗𡁜<E59A97><F0A1819C><EFBFBD><E8B9B1><EFBFBD>嚗峕凒<E5B395>?pending\_actions.status \= 'EXECUTED'<27>?
## **4\. <20>祉鸌<E7A589><E9B88C><EFBFBD>臭漁<E887AD><EFBFBD>External Module 撖孵<E69296><E5ADB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
<EFBFBD>拍鍂 REDCap <20>?EM <20><EFBFBD>嚗峕<E59A97>隞砍虾隞亙<E99A9E><E4BA99><EFBFBD><E594B3><EFBFBD>?API <20>湔楛<E6B994><EFBFBD><E4BAA6><EFBFBD>嚗?
1. <20><EFBFBD>銋㕑<E98A8B><E39591>閖曎<E99696>?(links)嚗?
<20>?REDCap 撌虫儒撖潸⏛<E6BDB8>讐凒<E8AE90><EFBFBD><E4BA99>?<3F>𨅯ㄨ霂<E384A8>儐 AI <20><EFBFBD>銝剖<E98A9D><E58996>?<3F>?H5 <20>暹𦻖嚗諹悟<E8ABB9><EFBFBD>銝滚枂 EDC 撠梯<E692A0>雿輻鍂<E8BCBB>睲賑<E79DB2><E8B391><EFBFBD><EFBFBD><EFBFBD>?
2. 摰𡁏𧒄隞餃𦛚蝞∠<E89D9E> (crons)嚗?
<20>?REDCap 靘批⏚<E689B9>?Cron 閫血<E996AB>摰𡁏<E691B0><F0A1818F><EFBFBD><EFBFBD><EFBFBD>摨瑟<E691A8><E7919F><EFBFBD><E4BC90>讛蝠<E8AE9B>睲賑銝餌頂蝏毺<E89D8F>頧株砭<E6A0AA><EFBFBD><E8A781>?
3. 摮埈挾蝥折<E89DA5><E68A98><EFBFBD>鈭殷<E988AD>
<20><EFBFBD> EM 靽格㺿敶訫<E695B6>憿菟𢒰<E88F9F>?DOM嚗<4D><E59A97> Agent <20>𤑳緵<F0A491B3>厰䔮憸条<E686B8>摮埈挾<E59F88><E68CBE>扇銝粹<E98A9D><E7B2B9><EFBFBD>𠧧<EFBCBA>?
## **5\. 摰匧<E691B0>銝舘恕霂<E68195>挽霈?(Security)**
* **<2A><EFBFBD> Token <20><EFBFBD>**嚗?
* **蝟餌<E89D9F>蝥?*嚗鍃M 霈輸䔮 Node.js <20><EFBFBD>Headers <20>箏蒂 X-Signature嚗𠃍MAC-SHA256 <20><EFBFBD>嚗剹<E59A97>?
* **<2A><EFBFBD>蝥?*嚗鐭ode.js 霈輸䔮 REDCap <20><EFBFBD>雿輻鍂<E8BCBB><EFBFBD>摮睃<E691AE><E79D83>?Personal API Token<65>?
* API <20><EFBFBD> (Rate Limiting)嚗?
<20><>笆憭找葉敹<E89189><EFBFBD><EFBFBD><E6AEB7><EFBFBD><EFBFBD><EFBFBD>刻䌊<E588BB>典笆 API 霂瑟<E99C82>餈𥡝<E9A488><F0A5A19D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E7989A><EFBFBD>脫迫 REDCap <20>滚𦛚<E6BB9A><EFBFBD>擃㗛<E69383> AI 韐冽綉<E586BD><E7B689>援皞<E68FB4><E79A9E>?
**蝏湔擪<E6B994>?*嚗𡁏沲<F0A1818F><E6B2B2><EFBFBD> & REDCap 銝枏振 | **<EFBFBD><EFBFBD>?*嚗朞祕蝏<E7A595>挽霈<E99C88><E288AA>