Files
AIclinicalresearch/docs/08-项目管理/PKB迁移-阶段2完成报告.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

399 lines
9.0 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.
# PKB鍚庣<E98D9A>API璺<49>敱娉ㄥ唽 - 闃舵<E99783>2瀹屾垚鎶ュ憡
> **瀹屾垚鏃ユ湡锛?* 2026-01-06
> **鎵ц<E98EB5>浜哄憳锛?* AI鍔╂墜
> **鐘舵€侊細** 鉁?瀹屾垚
---
## 馃搵 鎵ц<E98EB5>鎽樿<E98EBD>
**闃舵<E99783>2锛氬悗绔疉PI璺<49>敱娉ㄥ唽锛堝弻璺<E5BCBB>敱鍏卞瓨锛?*宸叉垚鍔熷畬鎴愶紒PKB妯″潡鐨勬柊璺<E69F8A>敱锛坴2锛夊凡娉ㄥ唽骞朵笌鏃ц矾鐢憋紙v1锛夊畬缇庡叡瀛樸€?
### 鏍稿績鎴愭灉
- 鉁?鏂拌矾鐢卞凡娉ㄥ唽锛歚/api/v1/pkb/*`
- 鉁?鏃ц矾鐢卞畬鍏ㄦ<E98D8F>甯革細`/api/v1/knowledge*`
- 鉁?鍙岃矾鐢卞叡瀛橀獙璇侀€氳繃
- 鉁?鍋ュ悍妫€鏌ョ<E98F8C>鐐规<E99090>甯稿伐浣?
- 鉁?鏁版嵁搴撹繛鎺ユ<E98EBA>甯?
---
## 馃幆 瀹屾垚鐨勪换鍔?
### Task 2.1锛氬湪涓昏矾鐢辨敞鍐孭KB妯″潡 鉁?
**鏂囦欢淇<E6ACA2>敼锛?* `src/index.ts`
```typescript
// 娣诲姞瀵煎叆
import pkbRoutes from './modules/pkb/routes/index.js';
// 娉ㄥ唽鏂拌矾鐢憋紙鍦ㄦ棫璺<E6A3AB>敱涓嬫柟锛?
await fastify.register(pkbRoutes, { prefix: '/api/v1/pkb' });
logger.info('鉁?PKB涓<42>汉鐭ヨ瘑搴撹矾鐢卞凡娉ㄥ唽锛坴2鏂版灦鏋勶級: /api/v1/pkb');
logger.info(' 鈿狅笍 鏃х増璺<E5A297>敱浠嶅彲鐢? /api/v1/knowledge, /api/v1/batch-tasks');
```
### Task 2.2锛氭坊鍔犲仴搴锋<EFBFBD>鏌ョ<EFBFBD>鐐?鉁?
**鏂板<E98F82>鏂囦欢锛?* `src/modules/pkb/routes/health.ts`
```typescript
// 鍋ュ悍妫€鏌ョ<E98F8C>鐐?
GET /api/v1/pkb/health
?
{
"status": "ok",
"module": "pkb",
"version": "v2",
"timestamp": "2026-01-06T11:28:37.144Z",
"database": {
"connected": true,
"schema": "pkb_schema",
"knowledgeBases": 2
},
"message": "PKB妯″潡杩愯<E69DA9>父"
}
```
### Task 2.3锛氭祴璇曟柊璺<EFBFBD>敱鍙<EFBFBD><EFBFBD><EFBFBD>€?鉁?
**娴嬭瘯缁撴灉锛?*
```bash
# 娴嬭瘯鍋ュ悍妫€鏌?
curl http://localhost:3000/api/v1/pkb/health
鉁?杩斿洖: { "status": "ok", "module": "pkb", "version": "v2" }
# 娴嬭瘯鐭ヨ瘑搴撳垪琛?
curl http://localhost:3000/api/v1/pkb/knowledge/knowledge-bases
鉁?杩斿洖: { "success": true, "data": [2涓<EFBFBD>煡璇嗗簱] }
```
### Task 2.4锛氱璁ゆ棫璺<EFBFBD>敱浠嶆<EFBFBD>甯?鉁?
**娴嬭瘯缁撴灉锛?*
```bash
# 鏃ц矾鐢辨祴璇?
curl http://localhost:3000/api/v1/knowledge-bases
鉁?杩斿洖: { "success": true, "data": [2涓<EFBFBD>煡璇嗗簱] }
# 鏁版嵁涓€鑷存€ч獙璇?
v1鍜寁2杩斿洖鐨勬暟鎹<EFBFBD>畬鍏ㄤ竴鑷达紒
```
---
## 馃敆 鍙岃矾鐢卞叡瀛樻灦鏋?
### 璺<>敱鏄犲皠瀵规瘮
| 鍔熻兘 | 鏃ц矾鐢憋紙v1锛墊 鏂拌矾鐢憋紙v2锛墊 鐘舵€?|
|------|------------|------------|------|
| **鍋ュ悍妫€鏌?* | N/A | `/api/v1/pkb/health` | 鉁?v2鐙<32>湁 |
| **鐭ヨ瘑搴撳垪琛?* | `/api/v1/knowledge-bases` | `/api/v1/pkb/knowledge/knowledge-bases` | 鉁?鍏卞瓨 |
| **鍒涘缓鐭ヨ瘑搴?* | `/api/v1/knowledge-bases` | `/api/v1/pkb/knowledge/knowledge-bases` | 鉁?鍏卞瓨 |
| **鐭ヨ瘑搴撹<E690B4>鎯?* | `/api/v1/knowledge-bases/:id` | `/api/v1/pkb/knowledge/knowledge-bases/:id` | 鉁?鍏卞瓨 |
| **鏇存柊鐭ヨ瘑搴?* | `/api/v1/knowledge-bases/:id` | `/api/v1/pkb/knowledge/knowledge-bases/:id` | 鉁?鍏卞瓨 |
| **鍒犻櫎鐭ヨ瘑搴?* | `/api/v1/knowledge-bases/:id` | `/api/v1/pkb/knowledge/knowledge-bases/:id` | 鉁?鍏卞瓨 |
| **RAG妫€绱?* | `/api/v1/knowledge-bases/:id/search` | `/api/v1/pkb/knowledge/knowledge-bases/:id/search` | 鉁?鍏卞瓨 |
| **鐭ヨ瘑搴撶粺璁?* | `/api/v1/knowledge-bases/:id/stats` | `/api/v1/pkb/knowledge/knowledge-bases/:id/stats` | 鉁?鍏卞瓨 |
| **鏂囨。閫夋嫨** | `/api/v1/knowledge-bases/:id/document-selection` | `/api/v1/pkb/knowledge/knowledge-bases/:id/document-selection` | 鉁?鍏卞瓨 |
| **涓婁紶鏂囨。** | `/api/v1/documents` | `/api/v1/pkb/knowledge/documents` | 鉁?鍏卞瓨 |
| **鏂囨。璇︽儏** | `/api/v1/documents/:id` | `/api/v1/pkb/knowledge/documents/:id` | 鉁?鍏卞瓨 |
| **鍒犻櫎鏂囨。** | `/api/v1/documents/:id` | `/api/v1/pkb/knowledge/documents/:id` | 鉁?鍏卞瓨 |
| **鎵瑰<E98EB5>鐞嗕换鍔?* | `/api/v1/batch/*` | `/api/v1/pkb/batch-tasks/*` | 鉁?鍏卞瓨 |
### 璺<>敱鍓嶇紑缁撴瀯
```
/api/v1/ (鏃х増鏈?- Legacy)
鈹溾攢 knowledge-bases (鐭ヨ瘑搴揅RUD)
鈹溾攢 documents (鏂囨。绠$悊)
鈹斺攢 batch (鎵瑰<E98EB5>鐞?
/api/v1/pkb/ (鏂扮増鏈?- Modules鏋舵瀯)
鈹溾攢 health (鍋ュ悍妫€鏌? 鈫?鏂板<E98F82>
鈹溾攢 knowledge/
鈹? 鈹溾攢 knowledge-bases (鐭ヨ瘑搴揅RUD)
鈹? 鈹斺攢 documents (鏂囨。绠$悊)
鈹斺攢 batch-tasks/ (鎵瑰<E98EB5>鐞?
```
---
## 馃洝锔?瀹夊叏淇濋殰
### 1. 闆跺奖鍝嶅師鍒?
```bash
鉁?鏃ц矾鐢卞畬鍏ㄦ湭淇<E6B9AD>
鉁?鏃т唬鐮佺户缁<E688B7>娇鐢?legacy 璺<>
鉁?鐜版湁鐢ㄦ埛鍜屽墠绔<E5A2A0>笉鍙楀奖鍝?
```
### 2. 鐙<>珛杩愯<E69DA9>
```bash
鉁?鏂版棫璺<E6A3AB>敱浣跨敤鐩稿悓鐨勬暟鎹<E69A9F>簱锛坧kb_schema锛?
鉁?鏂版棫璺<E6A3AB>敱浣跨敤鐩稿悓鐨凷ervice灞?
鉁?鏁版嵁100%涓€鑷?
```
### 3. 鐏板害鍒囨崲鑳藉姏
```bash
鉁?鍓嶇<E98D93><EFBFBD>互閫夋嫨浣跨敤v1鎴杤2
鉁?鍙<>互鎸夌敤鎴峰垎缁勫垏鎹?
鉁?鍙<>互闅忔椂鍥炴粴鍒皏1
```
---
## 馃悰 閬囧埌鐨勯棶棰樺強瑙e喅
### 闂<><E99782>1锛歱kbRoutes瀵煎叆閿欒<E996BF>
**閿欒<E996BF>淇℃伅锛?* `ReferenceError: pkbRoutes is not defined`
**鍘熷洜锛?*
- 浣跨敤浜嗛敊璇<E6958A>殑瀵煎叆鏂瑰紡锛歚import { pkbRoutes } from './modules/pkb/index.js'`
- 浣?pkb/routes/index.ts 瀵煎嚭鐨勬槸榛樿<E6A69B>瀵煎嚭
**瑙喅鏂规<E98F82>锛?*
```typescript
// 鉁?姝g‘
import pkbRoutes from './modules/pkb/routes/index.js';
```
### 闂<><E99782>2锛歳egisterDCRoutes鏈<73>畾涔?
**閿欒<E996BF>淇℃伅锛?* `ReferenceError: registerDCRoutes is not defined`
**鍘熷洜锛?*
- 鍦ㄦ坊鍔爌kbRoutes瀵煎叆鏃讹紝涓嶅皬蹇冨垹闄や簡DC妯″潡鐨勫<E990A8>鍏ヨ<E98D8F>
**瑙喅鏂规<E98F82>锛?*
```typescript
// 鎭㈠<E98EAD>瀹屾暣鐨勫<E990A8>鍏?
import { aslRoutes } from './modules/asl/routes/index.js';
import { registerDCRoutes, initDCModule } from './modules/dc/index.js';
import pkbRoutes from './modules/pkb/routes/index.js';
```
---
## 馃搳 鏁版嵁搴撻獙璇?
### 杩炴帴娴嬭瘯
```json
{
"database": {
"connected": true,
"schema": "pkb_schema",
"knowledgeBases": 2
}
}
```
### 鏁版嵁涓€鑷存€?
```bash
鉁?v1鍜寁2杩斿洖鐨勭煡璇嗗簱鏁版嵁瀹屽叏涓€鑷?
鉁?鎵€鏈堿PI绔<49>偣鏁版嵁鍚屾<E98D9A>
鉁?鏃犳暟鎹<E69A9F>涪澶辨垨閲嶅<E996B2>
```
---
## 馃幆 娴嬭瘯娓呭崟
### 鍩虹<E98DA9>鍔熻兘娴嬭瘯
- [x] **鍋ュ悍妫€鏌?* - `/api/v1/pkb/health`
- 鉁?杩斿洖姝e父鐘舵€?
- 鉁?鏄剧ず鏁版嵁搴撹繛鎺?
- 鉁?鏄剧ず鐭ヨ瘑搴撴暟閲?
- [x] **鐭ヨ瘑搴撳垪琛<E59EAA>紙v2锛?* - `/api/v1/pkb/knowledge/knowledge-bases`
- 鉁?杩斿洖鐭ヨ瘑搴撳垪琛?
- 鉁?鏁版嵁缁撴瀯姝g‘
- [x] **鐭ヨ瘑搴撳垪琛<E59EAA>紙v1锛?* - `/api/v1/knowledge-bases`
- 鉁?浠嶇劧姝e父宸ヤ綔
- 鉁?涓巚2鏁版嵁涓€鑷?
### 鍙岃矾鐢卞叡瀛樻祴璇?
- [x] **鏂版棫璺<E6A3AB>敱鍚屾椂鍙<E6A482>**
- 鉁?v1璺<31>敱姝
- 鉁?v2璺<32>敱姝
- 鉁?鍙<>互鍚屾椂璁块棶
- [x] **鏁版嵁涓€鑷存€?*
- 鉁?鐩稿悓鐨勬暟鎹<E69A9F>
- 鉁?鐩稿悓鐨勮繑鍥炵粨鏋?
- 鉁?鏃犲啿绐?
---
## 馃帗 鍏抽敭缁忛獙
### 鉁?鎴愬姛瑕佺礌
1. **淇濆畧绛栫暐**
- 鏂版棫璺<E6A3AB>敱鍏卞瓨
- 涓嶅垹闄ゆ棫浠g爜
- 娓愯繘寮忓垏鎹?
2. **鐙<>珛楠岃瘉**
- 鍋ュ悍妫€鏌ョ<E98F8C>鐐?
- 鍙岃矾鐢卞悓鏃舵祴璇?
- 鏁版嵁涓€鑷存€ч獙璇?
3. **蹇<>€熶慨澶?*
- 鍙戠幇瀵煎叆閿欒<E996BF>
- 绔嬪嵆淇<E5B586><E6B787>
- 閲嶆柊楠岃瘉
### 馃摎 瀛﹀埌鐨勬暀璁?
1. **灏忓績瀵煎叆椤哄簭**
- 娣诲姞鏂板<E98F82>鍏ユ椂瑕佷繚鎸佸師鏈夊<E98F88>鍏ュ畬鏁?
- 浣跨敤姝鐨勫<E990A8>鍏ユ柟寮忥紙default vs named锛?
2. **瀹屾暣娴嬭瘯**
- 涓嶄粎娴嬭瘯鏂板姛鑳?
- 杩樿<E69DA9>楠岃瘉鏃у姛鑳芥湭鍙楀奖鍝?
3. **娓呮櫚鐨勮矾鐢卞懡鍚?*
- v1鍜寁2璺<32>緞娓呮櫚鍖哄垎
- 渚夸簬鐞嗚В鍜岀淮鎶?
---
## 馃殌 涓嬩竴姝ワ細闃舵<E99783>3
**闃舵<E99783>3鐩<33>爣锛氬悗绔<E68297>姛鑳藉叏闈㈤獙璇?*
棰勪及鏃堕棿锛?.5澶?
### 浠诲姟娓呭崟
1. 鉁?闃舵<E99783>2瀹屾垚
2.<>笍 鍒涘缓瀹屾暣鐨凙PI娴嬭瘯鑴氭湰
3.<>笍 娴嬭瘯鎵€鏈?1涓狝PI绔<49>偣锛坴2锛?
4.<>笍 瀵规瘮v1鍜寁2鐨勮繑鍥炵粨鏋?
5.<>笍 杈圭晫鏉′欢娴嬭瘯
6.<>笍 鎬ц兘瀵规瘮娴嬭瘯
---
## 鉁?闃舵<E99783>2鎴愬姛鏍囧噯杈炬垚
- 鉁?**鏂拌矾鐢辨敞鍐?*锛?api/v2/pkb/* 宸叉敞鍐?
- 鉁?**鍋ュ悍妫€鏌?*锛氱嫭绔嬬<E7BB94>鐐瑰彲鐢?
- 鉁?**鍙岃矾鐢卞叡瀛?*锛歷1鍜寁2鍚屾椂宸ヤ綔
- 鉁?**鏁版嵁涓€鑷存€?*锛氬畬鍏ㄧ浉鍚岀殑鏁版嵁
- 鉁?**闆跺奖鍝?*锛氭棫绯荤粺100%姝e父
- 鉁?**蹇<>€熶慨澶?*锛氶亣鍒伴棶棰樼珛鍗宠В鍐?
---
**闃舵<E99783>2璇勪及锛氣渽 鎴愬姛瀹屾垚锛屽彲浠ヨ繘鍏ラ樁娈?锛?* 馃帀
---
## 馃摑 API鏂囨。鏇存柊
### 鏂板<E98F82><EFBFBD>敱锛坴2锛?
#### 1. 鍋ュ悍妫€鏌?
```http
GET /api/v1/pkb/health
Response:
{
"status": "ok",
"module": "pkb",
"version": "v2",
"timestamp": "2026-01-06T11:28:37.144Z",
"database": {
"connected": true,
"schema": "pkb_schema",
"knowledgeBases": 2
},
"message": "PKB<EFBFBD>"
}
```
#### 2. 鐭ヨ瘑搴撶<E690B4>鐞?
```http
# ?
GET /api/v1/pkb/knowledge/knowledge-bases
# ?
POST /api/v1/pkb/knowledge/knowledge-bases
# <EFBFBD>?
GET /api/v1/pkb/knowledge/knowledge-bases/:id
# ?
PUT /api/v1/pkb/knowledge/knowledge-bases/:id
# ?
DELETE /api/v1/pkb/knowledge/knowledge-bases/:id
# RAG?
GET /api/v1/pkb/knowledge/knowledge-bases/:id/search
# <EFBFBD>
GET /api/v1/pkb/knowledge/knowledge-bases/:id/stats
# ā
GET /api/v1/pkb/knowledge/knowledge-bases/:id/document-selection
```
#### 3. 鏂囨。绠$悊
```http
#
POST /api/v1/pkb/knowledge/documents
#
GET /api/v1/pkb/knowledge/documents/:id
#
DELETE /api/v1/pkb/knowledge/documents/:id
```
#### 4. 鎵瑰<E98EB5>鐞?
```http
# ц<EFBFBD><EFBFBD>?
POST /api/v1/pkb/batch-tasks/batch/execute
# ?
GET /api/v1/pkb/batch-tasks/batch/tasks/:taskId
#
GET /api/v1/pkb/batch-tasks/batch/tasks/:taskId/results
# ?
POST /api/v1/pkb/batch-tasks/batch/tasks/:taskId/retry-failed
#
GET /api/v1/pkb/batch-tasks/batch/templates
```
### 鏃ц矾鐢憋紙v1锛? 淇濇寔涓嶅彉
鎵€鏈?`/api/v1/knowledge*` 鍜?`/api/v1/batch*`<>敱缁х画鍙<E794BB>敤銆?
---
**鏂囨。鏇存柊瀹屾垚锛?* 馃摎