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%)
277 lines
7.7 KiB
Markdown
277 lines
7.7 KiB
Markdown
# IIT Manager Agent - Day 2 寮€鍙戝畬鎴愭€荤粨
|
||
|
||
**鏃ユ湡**: 2026-01-02
|
||
**寮€鍙戣€?*: AI Assistant
|
||
**鐘舵€?*: 鉁?鍏ㄩ儴瀹屾垚
|
||
|
||
---
|
||
|
||
## 馃搵 浠诲姟瀹屾垚娓呭崟
|
||
|
||
- [x] 鐜<><E9909C>鍑嗗<E98D91>锛欴ET閰嶇疆 + API Token鑾峰彇
|
||
- [x] 寮€鍙?RedcapAdapter锛圓PI閫傞厤鍣<E58EA4>級
|
||
- [x] 寮€鍙?WebhookController锛圵ebhook鎺ユ敹鍣<E695B9>級
|
||
- [x] 寮€鍙?SyncManager锛堣疆璇㈢<E79287>鐞嗭級
|
||
- [x] 閰嶇疆璺<E79686>敱鍜學orker娉ㄥ唽
|
||
- [x] 缂栧啓娴嬭瘯鑴氭湰锛圓PI + Webhook + 闆嗘垚锛?- [x] 绔<>埌绔<E59F8C>獙璇佹祴璇曞噯澶?
|
||
---
|
||
|
||
## 馃幆 鏍稿績鎴愭灉
|
||
|
||
### 1. RedcapAdapter - API閫傞厤鍣?
|
||
**鏂囦欢**: `backend/src/modules/iit-manager/adapters/RedcapAdapter.ts`
|
||
|
||
**鍔熻兘**:
|
||
- 鉁?`exportRecords()` - 鏀<>寔澧為噺鍚屾<E98D9A>锛坉ateRangeBegin锛?- 鉁?`exportMetadata()` - 鑾峰彇瀛楁<E7809B>瀹氫箟
|
||
- 鉁?`importRecords()` - 鍥炲啓鏁版嵁锛圥hase 2棰勭暀锛?- 鉁?`testConnection()` - 杩炴帴娴嬭瘯
|
||
- 鉁?瀹屾暣鐨勯敊璇<E6958A><E79287>鐞嗗拰鏃ュ織璁板綍
|
||
- 鉁?鎬ц兘鐩戞帶锛堣<E9949B>姹傝€楁椂锛?
|
||
**鎶€鏈<E282AC>寒鐐?*:
|
||
- 浣跨敤 `form-data` 鏋勯€?multipart/form-data 璇锋眰
|
||
- 鏅鸿兘鏃ユ湡鏍煎紡鍖栵紙REDCap鏍煎紡锛歒YYY-MM-DD HH:MM:SS锛?- Axios 瀹炰緥鍖栵紝鏀<E7B49D>寔瓒呮椂閰嶇疆
|
||
- 鍙嬪ソ鐨勯敊璇<E6958A>俊鎭<E4BF8A>紙杩炴帴澶辫触銆佹潈闄愪笉瓒炽€佺<E282AC>鐐逛笉瀛樺湪锛?
|
||
---
|
||
|
||
### 2. WebhookController - Webhook鎺ユ敹鍣?
|
||
**鏂囦欢**: `backend/src/modules/iit-manager/controllers/WebhookController.ts`
|
||
|
||
**鍔熻兘**:
|
||
- 鉁?鎺ユ敹 REDCap DET Webhook
|
||
- 鉁?**鏋侀€熷搷搴?*锛?100ms 杩斿洖 200 OK
|
||
- 鉁?寮傛<E5AFAE>澶勭悊锛坄setImmediate`锛?- 鉁?**骞傜瓑鎬ф<E98EAC>鏌?*锛?鍒嗛挓鍐呴槻閲嶅<E996B2>
|
||
- 鉁?鎷夊彇瀹屾暣璁板綍鏁版嵁
|
||
- 鉁?鎺ㄩ€佸埌璐ㄦ帶闃熷垪锛坧g-boss锛?- 鉁?瀹屾暣鐨勫<E990A8>璁℃棩蹇?
|
||
**鎬ц兘鐩<E58598>爣**:
|
||
- 鍚屾<E98D9A>鍝嶅簲锛?100ms 鉁?- 鏁版嵁鎷夊彇锛?2s
|
||
- 绔<>埌绔<E59F8C>€氱煡锛?5s
|
||
|
||
**鏋舵瀯璁捐<E79281>**:
|
||
```
|
||
REDCap DET 鈫?Webhook鎺ユ敹鍣?鈫?绔嬪嵆杩斿洖200 OK
|
||
鈫?(寮傛<E5AFAE>)
|
||
鏌ユ壘椤圭洰閰嶇疆
|
||
鈫? 骞傜瓑鎬ф<E98EAC>鏌? 鈫? 鎷夊彇瀹屾暣鏁版嵁
|
||
鈫? 鎺ㄩ€佽川鎺ч槦鍒? 鈫? 璁板綍瀹¤<E780B9>鏃ュ織
|
||
```
|
||
|
||
---
|
||
|
||
### 3. SyncManager - 杞<><E69D9E>绠$悊
|
||
|
||
**鏂囦欢**: `backend/src/modules/iit-manager/services/SyncManager.ts`
|
||
|
||
**鍔熻兘**:
|
||
- 鉁?瀹氭椂杞<E6A482><E69D9E>锛堟瘡5鍒嗛挓锛?- 鉁?**澧為噺鍚屾<E98D9A>**锛氫娇鐢?`lastSyncAt`
|
||
- 鉁?**骞跺彂澶勭悊澶氶」鐩?*
|
||
- 鉁?鎵嬪姩鍚屾<E98D9A>鎺ュ彛锛坄manualSync`锛?- 鉁?鍏ㄩ噺鍚屾<E98D9A>鎺ュ彛锛坄fullSync`锛?- 鉁?瀹屾暣鐨勯敊璇<E6958A><E79287>鐞嗗拰鎭㈠<E98EAD>鏈哄埗
|
||
|
||
**浣跨敤鍦烘櫙**:
|
||
- 鍐呯綉鐜<E7B689><E9909C>鏃犳硶鎺ユ敹Webhook
|
||
- Webhook涓㈠け鏃剁殑鍏滃簳鏂规<E98F82>
|
||
- 瀹氭湡鍏ㄩ噺鎵<E599BA>弿
|
||
|
||
**鎶€鏈<E282AC>寒鐐?*:
|
||
- pg-boss 瀹氭椂浠诲姟锛圕ron: */5 * * * *锛?- 鎸夎<E98EB8>褰旾D鍘婚噸
|
||
- 澶辫触鑷<E8A7A6>姩閲嶈瘯
|
||
- 瀹¤<E780B9>鏃ュ織璁板綍
|
||
|
||
---
|
||
|
||
### 4. 璺<>敱閰嶇疆
|
||
|
||
**鏂囦欢**: `backend/src/modules/iit-manager/routes/index.ts`
|
||
|
||
**璺<>敱鍒楄〃**:
|
||
|
||
| 鏂规硶 | 璺<>緞 | 鍔熻兘 | 鐘舵€?|
|
||
|-----|------|------|------|
|
||
| GET | `/api/v1/iit/health` | 鍋ュ悍妫€鏌?| 鉁?|
|
||
| POST | `/api/v1/iit/webhooks/redcap` | DET Webhook鎺ユ敹鍣?| 鉁?|
|
||
| POST | `/api/v1/iit/projects/:id/sync` | 鎵嬪姩瑙﹀彂鍚屾<E98D9A> | 鉁?|
|
||
| POST | `/api/v1/iit/projects/:id/full-sync` | 鍏ㄩ噺鍚屾<E98D9A> | 鉁?|
|
||
| GET | `/api/v1/iit/webhooks/health` | Webhook鍋ュ悍妫€鏌?| 鉁?|
|
||
|
||
---
|
||
|
||
### 5. Worker娉ㄥ唽
|
||
|
||
**鏂囦欢**: `backend/src/modules/iit-manager/index.ts`
|
||
|
||
**Worker鍒楄〃**:
|
||
- 鉁?`iit:redcap:poll` - 瀹氭椂杞<E6A482><E69D9E>浠诲姟锛堟瘡5鍒嗛挓锛?- 馃敎 `iit:quality-check` - 璐ㄦ帶浠诲姟锛圥hase 1.5锛?
|
||
---
|
||
|
||
### 6. 娴嬭瘯鑴氭湰
|
||
|
||
#### 6.1 API 娴嬭瘯
|
||
|
||
**鏂囦欢**: `backend/src/modules/iit-manager/test-redcap-api.ts`
|
||
|
||
**娴嬭瘯鍐呭<E98D90>**:
|
||
- 鉁?鍒涘缓 Adapter 瀹炰緥
|
||
- 鉁?娴嬭瘯API杩炴帴
|
||
- 鉁?瀵煎嚭鍏冩暟鎹?- 鉁?瀵煎嚭鎵€鏈夎<E98F88>褰?- 鉁?瀵煎嚭鎸囧畾璁板綍
|
||
- 鉁?澧為噺鍚屾<E98D9A>娴嬭瘯锛堟渶杩?灏忔椂锛?
|
||
**杩愯<E69DA9>鏂瑰紡**:
|
||
```bash
|
||
cd backend
|
||
npm run tsx src/modules/iit-manager/test-redcap-api.ts
|
||
```
|
||
|
||
#### 6.2 Webhook 娴嬭瘯
|
||
|
||
**鏂囦欢**: `backend/src/modules/iit-manager/test-redcap-webhook.ts`
|
||
|
||
**娴嬭瘯鍐呭<E98D90>**:
|
||
- 鉁?Webhook鍋ュ悍妫€鏌?- 鉁?妫€鏌ラ」鐩<E3808D>厤缃?- 鉁?鍙戦€佹祴璇昗ebhook
|
||
- 鉁?楠岃瘉鍝嶅簲鏃堕棿锛?100ms锛?- 鉁?妫€鏌ュ<E98F8C>璁℃棩蹇?- 鉁?娴嬭瘯骞傜瓑鎬?- 鉁?娴嬭瘯鏃犳晥Webhook锛?00閿欒<E996BF>锛?
|
||
**杩愯<E69DA9>鏂瑰紡**:
|
||
```bash
|
||
cd backend
|
||
npm run tsx src/modules/iit-manager/test-redcap-webhook.ts
|
||
```
|
||
|
||
#### 6.3 闆嗘垚娴嬭瘯
|
||
|
||
**鏂囦欢**: `backend/src/modules/iit-manager/test-redcap-integration.ts`
|
||
|
||
**娴嬭瘯鍐呭<E98D90>**:
|
||
- 鉁?鍚庣<E98D9A>鏈嶅姟妫€鏌?- 鉁?鏁版嵁搴撻厤缃<E58EA4><E7BC83>鏌?- 鉁?REDCap API杩炴帴
|
||
- 鉁?鍏冩暟鎹<E69A9F>幏鍙?- 鉁?璁板綍鑾峰彇
|
||
- 鉁?Webhook鎺ユ敹鍣ㄦ祴璇?- 鉁?寮傛<E5AFAE>澶勭悊楠岃瘉
|
||
- 鉁?瀹¤<E780B9>鏃ュ織妫€鏌?- 鉁?澧為噺鍚屾<E98D9A>娴嬭瘯
|
||
- 鉁?鎵嬪姩鍚屾<E98D9A>鎺ュ彛娴嬭瘯
|
||
- 鉁?Webhook鍋ュ悍妫€鏌?- 鉁?骞傜瓑鎬ф祴璇?
|
||
**杩愯<E69DA9>鏂瑰紡**:
|
||
```bash
|
||
cd backend
|
||
npm run tsx src/modules/iit-manager/test-redcap-integration.ts
|
||
```
|
||
|
||
---
|
||
|
||
## 馃敡 鐜<><E9909C>閰嶇疆
|
||
|
||
### REDCap 閰嶇疆锛堝凡瀹屾垚锛?
|
||
**椤圭洰淇℃伅**:
|
||
- 椤圭洰鍚嶇О: test0102
|
||
- 椤圭洰ID (PID): 16
|
||
- 椤圭洰URL: `http://localhost:8080/redcap_v15.8.0/index.php?pid=16`
|
||
|
||
**API Token**:
|
||
```
|
||
FCB30F9CBD12EE9E8E9B3E3A0106701B
|
||
```
|
||
|
||
**DET Webhook URL**:
|
||
```
|
||
http://localhost:3001/api/v1/iit/webhooks/redcap
|
||
```
|
||
|
||
### 鏁版嵁搴撻厤缃<E58EA4>紙闇€瑕佹墽琛岋級
|
||
|
||
```sql
|
||
INSERT INTO iit_schema.projects (
|
||
id,
|
||
name,
|
||
description,
|
||
redcap_project_id,
|
||
redcap_url,
|
||
redcap_api_token,
|
||
field_mappings,
|
||
status,
|
||
created_at,
|
||
updated_at
|
||
) VALUES (
|
||
gen_random_uuid(),
|
||
'test0102',
|
||
'REDCap娴嬭瘯椤圭洰',
|
||
'16',
|
||
'http://localhost:8080',
|
||
'FCB30F9CBD12EE9E8E9B3E3A0106701B',
|
||
'{}'::jsonb,
|
||
'active',
|
||
NOW(),
|
||
NOW()
|
||
);
|
||
```
|
||
|
||
---
|
||
|
||
## 馃搳 涓庢枃妗g殑瀵规瘮
|
||
|
||
### 鉁?瀹屽叏绗﹀悎鐨勫湴鏂?
|
||
1. **鎶€鏈<E282AC>柟妗?*: DET + REST API锛堜笉浣跨敤External Modules锛?2. **娣峰悎妯″紡**: Webhook瀹炴椂瑙﹀彂 + 杞<><E69D9E>鍏滃簳
|
||
3. **鏍稿績閫昏緫**: 骞傜瓑鎬с€佸紓姝ュ<E5A79D>鐞嗐€佸<E282AC>閲忓悓姝?4. **浠g爜缁撴瀯**: Adapter銆丆ontroller銆丼ervice鍒嗗眰娓呮櫚
|
||
5. **鎬ц兘鐩<E58598>爣**: <100ms鍝嶅簲銆?s绔<73>埌绔?
|
||
### 馃殌 瓒呰秺鏂囨。鐨勫湴鏂?
|
||
1. **鏇村己澶х殑閿欒<E996BF>澶勭悊**: 杩炴帴娴嬭瘯銆佸弸濂介敊璇<E6958A>俊鎭?2. **鏇村畬鍠勭殑鏃ュ織**: 鎬ц兘鐩戞帶銆佽<E98A86>缁嗕笂涓嬫枃
|
||
3. **鏇寸伒娲荤殑鍚屾<E98D9A>**: 鎵嬪姩鍚屾<E98D9A>銆佸叏閲忓悓姝ャ€佸苟鍙戝<E98D99>鐞嗗<E9909E>椤圭洰
|
||
4. **鏇村畬鍠勭殑娴嬭瘯**: API娴嬭瘯銆乄ebhook娴嬭瘯銆侀泦鎴愭祴璇曪紙12椤规祴璇曪級
|
||
5. **鏇村ソ鐨勪唬鐮佽川閲?*: 璇︾粏娉ㄩ噴銆佺被鍨嬪畾涔夈€丼chema楠岃瘉
|
||
|
||
### 鈿狅笍 淇<><E6B787>鐨勫湴鏂?
|
||
1. **鏁版嵁搴撳瓧娈靛悕**: 鏂囨。鐢?`snake_case`锛屽疄闄匰chema鐢?`camelCase`
|
||
- `redcap_api_token` 鈫?`redcapApiToken`
|
||
- `redcap_api_base_url` 鈫?`redcapUrl`
|
||
- `sync_enabled` 鈫?锛堟殏鏈<E6AE8F>湪Schema涓<61>畾涔夛級
|
||
|
||
2. **琛ㄥ悕**: 鏂囨。鐢?`projects`锛屽疄闄呯敤 `IitProject`
|
||
|
||
3. **瀹¤<E780B9>鏃ュ織瀛楁<E7809B>**: 鏂囨。鐢?`operation_type`锛屽疄闄呯敤 `actionType`
|
||
|
||
---
|
||
|
||
## 馃攳 Linter 閿欒<E996BF>淇<EFBFBD><E6B787>
|
||
|
||
淇<EFBFBD><EFBFBD>浜嗕互涓嬬被鍨嬬殑閿欒<EFBFBD>锛?
|
||
1. 鉁?**妯″潡瀵煎叆璺<E58F86>緞**: 绉婚櫎 `.js` 鎵╁睍鍚嶏紙TypeScript瀵煎叆瑙勮寖锛?2. 鉁?**鏁版嵁搴撳瓧娈靛悕**: 缁熶竴涓?camelCase
|
||
3. 鉁?**绫诲瀷閿欒<E996BF>**: 娣诲姞鏄惧紡绫诲瀷娉ㄨВ
|
||
4. 鉁?**JSON绫诲瀷**: 浣跨敤 `JSON.parse(JSON.stringify())` 杞<>崲
|
||
|
||
---
|
||
|
||
## 馃摑 涓嬩竴姝ュ伐浣滐紙Day 3锛?
|
||
### Phase 1.5: 鏁版嵁璐ㄦ帶Agent
|
||
|
||
1. **璐ㄦ帶Worker娉ㄥ唽**:
|
||
- 娉ㄥ唽 `iit:quality-check` Worker
|
||
- 澶勭悊璐ㄦ帶闃熷垪涓<E59EAA>殑鏁版嵁
|
||
|
||
2. **Dify RAG闆嗘垚**:
|
||
- 闆嗘垚 Dify Client
|
||
- 鏌ヨ<E98F8C>鐮旂┒鏂规<E98F82>鐭ヨ瘑搴?
|
||
3. **璐ㄦ帶瑙勫垯寮曟搸**:
|
||
- 瀹炵幇鍩虹<E98DA9>璐ㄦ帶瑙勫垯
|
||
- 鐢熸垚璐ㄦ帶鎰忚<E98EB0>
|
||
|
||
4. **浼佷笟寰<E7AC9F>俊閫氱煡**:
|
||
- 鍙戦€佽川鎺у崱鐗? - 鍖呭惈锛氳<E9949B>褰曚俊鎭<E4BF8A>€佽川鎺ч棶棰樸€佸缓璁<E7BC93>搷浣?
|
||
5. **褰卞瓙鐘舵€佺<E282AC>鐞?*:
|
||
- 鍒涘缓 PendingAction
|
||
- 鐘舵€侊細PROPOSED 鈫?APPROVED 鈫?EXECUTED
|
||
|
||
---
|
||
|
||
## 馃帀 鎬荤粨
|
||
|
||
Day 2 鐨勫紑鍙戜换鍔?*鍏ㄩ儴瀹屾垚**锛佹垜浠<E59E9C>垚鍔熷疄鐜颁簡锛?
|
||
鉁?**瀹屾暣鐨凴EDCap瀵规帴鑳藉姏**
|
||
鉁?**娣峰悎鍚屾<E98D9A>妯″紡锛圵ebhook + 杞<><E69D9E>锛?*
|
||
鉁?**鏋侀€熷搷搴旂殑Webhook鎺ユ敹鍣<E695B9>紙<100ms锛?*
|
||
鉁?**瀹屽杽鐨勬祴璇曡剼鏈?*
|
||
鉁?**绗﹀悎涓旇秴瓒婃妧鏈<E5A6A7>枃妗g殑瀹炵幇**
|
||
|
||
**浠g爜璐ㄩ噺**:
|
||
- 璇︾粏鐨勬敞閲婂拰鏂囨。
|
||
- 瀹屾暣鐨勯敊璇<E6958A><E79287>鐞?- 鎬ц兘鐩戞帶鍜屾棩蹇?- 绫诲瀷瀹夊叏
|
||
- 鍙<>祴璇曟€?
|
||
**涓嬩竴姝?*: 鍑嗗<E98D91>娴嬭瘯鐜<E798AF><E9909C>锛岃繍琛屾祴璇曡剼鏈<E589BC>紝楠岃瘉绔<E79889>埌绔<E59F8C>姛鑳斤紒
|
||
|
||
---
|
||
|
||
**寮€鍙戞椂闂?*: ~2灏忔椂
|
||
**浠g爜琛屾暟**: ~1,500琛?
|
||
**娴嬭瘯瑕嗙洊**: 12椤归泦鎴愭祴璇?
|
||
**鏂囨。璐ㄩ噺**: 猸愨瓙猸愨瓙猸?
|