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%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,8 +1,8 @@
# [璅<E79285><E288AA>滨妍] - API霈曇恣
> **基础路径:** `/api/v1/模块名`
> **端点数量:** X
> **认证要求:** JWT Token
> **<EFBFBD><EFBFBD>頝臬<EFBFBD>嚗?* `/api/v1/<EFBFBD><EFBFBD>
> **蝡舐<EFBFBD><EFBFBD><EFBFBD>嚗?* X銝?
> **霈方<EFBFBD><EFBFBD><EFBFBD>嚗?* JWT Token
> **<2A><><EFBFBD>擧凒<E693A7><EFBFBD>** YYYY-MM-DD
---
@@ -11,11 +11,11 @@
| 蝡舐<E89DA1> | <20><EFBFBD> | 霂湔<E99C82> | 霈方<E99C88> |
|------|------|------|------|
| `/api/v1/xxx/resources` | GET | 获取资源列表 | |
| `/api/v1/xxx/resources/:id` | GET | 获取资源详情 | |
| `/api/v1/xxx/resources` | POST | 创建资源 | |
| `/api/v1/xxx/resources/:id` | PUT | 更新资源 | |
| `/api/v1/xxx/resources/:id` | DELETE | 删除资源 | |
| `/api/v1/xxx/resources` | GET | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡑒” | <EFBFBD>?|
| `/api/v1/xxx/resources/:id` | GET | <EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂行<EFBFBD> | <EFBFBD>?|
| `/api/v1/xxx/resources` | POST | <EFBFBD>𥕦遣韏<EFBFBD><EFBFBD> | <EFBFBD>?|
| `/api/v1/xxx/resources/:id` | PUT | <EFBFBD>湔鰵韏<EFBFBD><EFBFBD> | <EFBFBD>?|
| `/api/v1/xxx/resources/:id` | DELETE | <EFBFBD>𣳇膄韏<EFBFBD><EFBFBD> | <EFBFBD>?|
---
@@ -23,31 +23,31 @@
### 1. <20><EFBFBD><EFBFBD><E99F8F><EFBFBD>𡑒”
**端点:** `GET /api/v1/xxx/resources`
**蝡舐<EFBFBD>嚗?* `GET /api/v1/xxx/resources`
**用途:** 获取当前用户的资源列表(分页)
**<EFBFBD><EFBFBD><EFBFBD>** <20><EFBFBD>敶枏<E695B6><E69E8F><EFBFBD><E586BD><EFBFBD><EFBFBD>皞𣂼<E79A9E>銵剁<E98AB5><E58981><EFBFBD>△嚗?
**请求参数:**
**霂瑟<EFBFBD><EFBFBD><EFBFBD>㺭嚗?*
**Query参数:**
**Query<EFBFBD><EFBFBD>㺭嚗?*
```typescript
{
page?: number; // 页码默认1
pageSize?: number; // 每页数量默认10最大100
status?: string; // 筛选:状态(active/inactive
keyword?: string; // 搜索关键词
sortBy?: string; // 排序字段createdAt/updatedAt
page?: number; // 憿萇<EFBFBD>嚗屸<EFBFBD>霈?
pageSize?: number; // 瘥誯△<EFBFBD><EFBFBD>嚗屸<EFBFBD>霈?0嚗峕<E59A97>憭?00
status?: string; // 蝑偦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>active/inactive嚗?
keyword?: string; // <EFBFBD>𦦵揣<EFBFBD>喲睸霂?
sortBy?: string; // <EFBFBD><EFBFBD>摮埈挾嚗ẾreatedAt/updatedAt嚗?
sortOrder?: 'asc' | 'desc'; // <20><EFBFBD><E98DA6><EFBFBD>嚗屸<E59A97>霈千esc
}
```
**请求示例:**
**霂瑟<EFBFBD>蝷箔<EFBFBD>嚗?*
```bash
GET /api/v1/xxx/resources?page=1&pageSize=10&status=active
Authorization: Bearer <token>
```
**成功响应:** `200 OK`
**<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>嚗?* `200 OK`
```json
{
"success": true,
@@ -74,7 +74,7 @@ Authorization: Bearer <token>
}
```
**错误响应:**
**<EFBFBD>躰秤<EFBFBD><EFBFBD>嚗?*
```json
// 401 Unauthorized
{
@@ -92,7 +92,7 @@ Authorization: Bearer <token>
"code": "INVALID_PARAMS",
"message": "<22><><EFBFBD>躰秤",
"details": [
{ "field": "pageSize", "message": "最大不能超过100" }
{ "field": "pageSize", "message": "<EFBFBD><EFBFBD>憭找<EFBFBD><EFBFBD><EFBFBD>餈?00" }
]
}
}
@@ -102,20 +102,20 @@ Authorization: Bearer <token>
### 2. <20><EFBFBD><EFBFBD><E99F8F>霂行<E99C82>
**端点:** `GET /api/v1/xxx/resources/:id`
**蝡舐<EFBFBD>嚗?* `GET /api/v1/xxx/resources/:id`
**用途:** 获取指定资源的详细信息
**<EFBFBD><EFBFBD><EFBFBD>** <20><EFBFBD><E79195><EFBFBD><EFBFBD><EFBFBD><E99F8F><EFBFBD><EFBFBD>祕蝏<E7A595><EFBFBD>?
**路径参数:**
**頝臬<EFBFBD><EFBFBD><EFBFBD>㺭嚗?*
- `id` (敹<>): 韏<><E99F8F>ID
**请求示例:**
**霂瑟<EFBFBD>蝷箔<EFBFBD>嚗?*
```bash
GET /api/v1/xxx/resources/123
Authorization: Bearer <token>
```
**成功响应:** `200 OK`
**<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>嚗?* `200 OK`
```json
{
"success": true,
@@ -127,24 +127,24 @@ Authorization: Bearer <token>
"status": "active",
"createdAt": "2025-11-06T10:00:00.000Z",
"updatedAt": "2025-11-06T10:00:00.000Z",
// 额外的关联数据
// 憸嘥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>娍㺭<EFBFBD>?
"user": {
"id": 456,
"name": "用户名"
"name": "<EFBFBD><EFBFBD><EFBFBD>?
}
},
"message": "<EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD>"
}
```
**错误响应:**
**<EFBFBD>躰秤<EFBFBD><EFBFBD>嚗?*
```json
// 404 Not Found
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "资源不存在"
"message": "<EFBFBD><EFBFBD>銝滚<EFBFBD><EFBFBD>?
}
}
@@ -153,7 +153,7 @@ Authorization: Bearer <token>
"success": false,
"error": {
"code": "FORBIDDEN",
"message": "无权访问此资源"
"message": "<EFBFBD><EFBFBD><EFBFBD>?
}
}
```
@@ -162,44 +162,44 @@ Authorization: Bearer <token>
### 3. <20>𥕦遣韏<E981A3><E99F8F>
**端点:** `POST /api/v1/xxx/resources`
**蝡舐<EFBFBD>嚗?* `POST /api/v1/xxx/resources`
**用途:** 创建新资源
**<EFBFBD><EFBFBD><EFBFBD>** <20>𥕦遣<F0A595A6><EFBFBD>皞?
**霂瑟<E99C82>雿橒<E99BBF>**
```json
{
"fieldName": "资源名称", // 必填长度2-200
"description": "描述", // 可选最大5000
"fieldName": "<EFBFBD><EFBFBD><EFBFBD>滨妍", // <EFBFBD>嚗屸鵭摨?-200
"description": "<EFBFBD>讛膩", // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憭?000摮?
"status": "active" // <20><EFBFBD><EFBFBD>暺䁅恕active
}
```
**验证规则:**
- `fieldName`: 必填2-200字符不能包含特殊字符
- `description`: 可选最大5000字符
**撉諹<EFBFBD><EFBFBD><EFBFBD>嚗?*
- `fieldName`: <EFBFBD>嚗?-200摮㛖泵嚗䔶<E59A97><E494B6><EFBFBD><E8B3A2>怎鸌畾𠰴<E795BE>蝚?
- `description`: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憭?000摮㛖泵
- `status`: <20><EFBFBD><EFBFBD><E39A81><EFBFBD><E39787><EFBFBD>active, inactive
**请求示例:**
**霂瑟<EFBFBD>蝷箔<EFBFBD>嚗?*
```bash
POST /api/v1/xxx/resources
Authorization: Bearer <token>
Content-Type: application/json
{
"fieldName": "新资源",
"fieldName": "<EFBFBD><EFBFBD>皞?,
"description": "餈蹱糓銝<EFBFBD>銝芣鰵韏<EFBFBD><EFBFBD>"
}
```
**成功响应:** `201 Created`
**<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>嚗?* `201 Created`
```json
{
"success": true,
"data": {
"id": 124,
"userId": 456,
"fieldName": "新资源",
"fieldName": "<EFBFBD><EFBFBD>皞?,
"description": "<EFBFBD><EFBFBD><EFBFBD>",
"status": "active",
"createdAt": "2025-11-06T10:00:00.000Z",
@@ -209,7 +209,7 @@ Content-Type: application/json
}
```
**错误响应:**
**<EFBFBD>躰秤<EFBFBD><EFBFBD>嚗?*
```json
// 422 Unprocessable Entity
{
@@ -219,7 +219,7 @@ Content-Type: application/json
"message": "<22><>㺭撉諹<E69289>憭梯揖",
"details": [
{ "field": "fieldName", "message": "摮埈挾<E59F88>滨妍銝滩<E98A9D>銝箇征" },
{ "field": "fieldName", "message": "字段名称长度必须在2-200之间" }
{ "field": "fieldName", "message": "摮埈挾<EFBFBD>滨妍<EFBFBD>踹漲敹<EFBFBD><EFBFBD>?-200銋钅𡢿" }
]
}
}
@@ -238,11 +238,11 @@ Content-Type: application/json
### 4. <20>湔鰵韏<E9B0B5><E99F8F>
**端点:** `PUT /api/v1/xxx/resources/:id`
**蝡舐<EFBFBD>嚗?* `PUT /api/v1/xxx/resources/:id`
**<EFBFBD><EFBFBD><EFBFBD>** <20>湔鰵<E6B994><E9B0B5><EFBFBD><EFBFBD><E99F8F><EFBFBD><E59A97><EFBFBD>湔凒<E6B994><EFBFBD>
**路径参数:**
**頝臬<EFBFBD><EFBFBD><EFBFBD>㺭嚗?*
- `id` (敹<>): 韏<><E99F8F>ID
**霂瑟<E99C82>雿橒<E99BBF>**
@@ -254,7 +254,7 @@ Content-Type: application/json
}
```
**请求示例:**
**霂瑟<EFBFBD>蝷箔<EFBFBD>嚗?*
```bash
PUT /api/v1/xxx/resources/123
Authorization: Bearer <token>
@@ -266,7 +266,7 @@ Content-Type: application/json
}
```
**成功响应:** `200 OK`
**<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>嚗?* `200 OK`
```json
{
"success": true,
@@ -280,14 +280,14 @@ Content-Type: application/json
}
```
**错误响应:**
**<EFBFBD>躰秤<EFBFBD><EFBFBD>嚗?*
```json
// 404 Not Found
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "资源不存在"
"message": "<EFBFBD><EFBFBD>銝滚<EFBFBD><EFBFBD>?
}
}
@@ -296,7 +296,7 @@ Content-Type: application/json
"success": false,
"error": {
"code": "FORBIDDEN",
"message": "无权修改此资源"
"message": "<EFBFBD><EFBFBD>㺿<EFBFBD>?
}
}
```
@@ -305,20 +305,20 @@ Content-Type: application/json
### 5. <20>𣳇膄韏<E88684><E99F8F>
**端点:** `DELETE /api/v1/xxx/resources/:id`
**蝡舐<EFBFBD>嚗?* `DELETE /api/v1/xxx/resources/:id`
**用途:** 删除指定资源(软删除)
**<EFBFBD><EFBFBD><EFBFBD>** <20>𣳇膄<F0A3B387><E88684><EFBFBD><EFBFBD><E99F8F><EFBFBD><EFBFBD>𣳇膄嚗?
**路径参数:**
**頝臬<EFBFBD><EFBFBD><EFBFBD>㺭嚗?*
- `id` (敹<>): 韏<><E99F8F>ID
**请求示例:**
**霂瑟<EFBFBD>蝷箔<EFBFBD>嚗?*
```bash
DELETE /api/v1/xxx/resources/123
Authorization: Bearer <token>
```
**成功响应:** `200 OK`
**<EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD>嚗?* `200 OK`
```json
{
"success": true,
@@ -327,14 +327,14 @@ Authorization: Bearer <token>
}
```
**错误响应:**
**<EFBFBD>躰秤<EFBFBD><EFBFBD>嚗?*
```json
// 404 Not Found
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "资源不存在"
"message": "<EFBFBD><EFBFBD>銝滚<EFBFBD><EFBFBD>?
}
}
@@ -343,7 +343,7 @@ Authorization: Bearer <token>
"success": false,
"error": {
"code": "FORBIDDEN",
"message": "无权删除此资源"
"message": "<EFBFBD><EFBFBD><EFBFBD>𣳇<EFBFBD>?
}
}
@@ -352,37 +352,37 @@ Authorization: Bearer <token>
"success": false,
"error": {
"code": "CANNOT_DELETE",
"message": "该资源有关联数据,无法删除"
"message": "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
}
}
```
---
## 🔐 认证与权限
## <EFBFBD><EFBFBD> 霈方<E99C88>銝擧<E98A9D><E693A7>?
### 霈方<E99C88><E696B9><EFBFBD>
所有API都需要JWT Token认证:
<EFBFBD><EFBFBD><EFBFBD>𡅅PI<EFBFBD><EFBFBD><EFBFBD>WT Token霈方<EFBFBD>嚗?
```
Authorization: Bearer <token>
```
### 权限检查
- 用户只能访问自己的资源
- ADMIN角色可以访问所有资源
### <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>霈輸䔮<EFBFBD>芸楛<EFBFBD><EFBFBD><EFBFBD>皞?
- ADMIN閫坿𠧧<EFBFBD>臭誑霈輸䔮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>皞?
---
## 📊 错误码汇总
## <EFBFBD><EFBFBD> <20>躰秤<E8BAB0><E7A7A4><EFBFBD><EFBFBD>?
| 错误码 | HTTP状态 | 说明 |
| <EFBFBD>躰秤<EFBFBD>?| HTTP<EFBFBD><EFBFBD>?| 霂湔<E99C82> |
|--------|---------|------|
| UNAUTHORIZED | 401 | 未授权 |
| FORBIDDEN | 403 | 无权限 |
| NOT_FOUND | 404 | 资源不存在 |
| UNAUTHORIZED | 401 | <EFBFBD><EFBFBD><EFBFBD>?|
| FORBIDDEN | 403 | <EFBFBD><EFBFBD><EFBFBD>?|
| NOT_FOUND | 404 | <EFBFBD><EFBFBD>銝滚<EFBFBD><EFBFBD>?|
| VALIDATION_ERROR | 422 | <20><>㺭撉諹<E69289>憭梯揖 |
| ALREADY_EXISTS | 409 | 资源已存在 |
| INTERNAL_ERROR | 500 | 服务器错误 |
| ALREADY_EXISTS | 409 | <EFBFBD><EFBFBD>撌脣<EFBFBD><EFBFBD>?|
| INTERNAL_ERROR | 500 | <EFBFBD>滚𦛚<EFBFBD><EFBFBD>霂?|
---
@@ -406,7 +406,7 @@ const response = await fetch('/api/v1/xxx/resources', {
'Content-Type': 'application/json',
},
body: JSON.stringify({
fieldName: '新资源',
fieldName: '<EFBFBD><EFBFBD>皞?,
description: '<EFBFBD>',
}),
});
@@ -422,38 +422,38 @@ curl -X GET "http://localhost:3001/api/v1/xxx/resources?page=1&pageSize=10" \
curl -X POST "http://localhost:3001/api/v1/xxx/resources" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"fieldName":"新资源","description":"描述"}'
-d '{"fieldName":"<EFBFBD><EFBFBD>皞?,"description":"<EFBFBD>讛膩"}'
```
---
## <20>𩤃<EFBFBD> 瘜冽<E7989C>鈭钅★
**性能优化:**
- 列表接口必须支持分页默认pageSize=10最大100
**<EFBFBD><EFBFBD>隡睃<EFBFBD>嚗?*
- <EFBFBD>𡑒”<EFBFBD>亙藁敹<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>△嚗屸<EFBFBD>霈小ageSize=10嚗峕<EFBFBD>憭?00
- <20><EFBFBD>餈𥪜<E9A488><EFBFBD><E9A488><EFBFBD><EFBFBD><E594BE>唳旿嚗峕<E59A97><E5B395><EFBFBD><EFBFBD>㰘蝸
- 憭折<E686AD><E68A98>唳旿撖澆枂雿輻鍂撘<E98D82>郊隞餃𦛚
**摰匧<E691B0><E58CA7><EFBFBD>**
- <20><><EFBFBD>㗇𦻖<E39787><F0A6BB96><EFBFBD>憿駁<E686BF><EFBFBD>WT Token
-<>◆璉<E29786><E79289><EFBFBD>皞𣂼<E79A9E>撅痹<E69285><E797B9><EFBFBD><E586BD><EFBFBD><E88ABE><EFBFBD><E6BBA2>芸楛<E88AB8><E6A59B><EFBFBD>皞琜<E79A9E>
- 敏感字段不要返回(如密码)
- <EFBFBD>𤩺<EFBFBD>摮埈挾銝滩<EFBFBD>餈𥪜<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
**向后兼容:**
- API变更使用版本号(/api/v2
**<EFBFBD><EFBFBD><EFBFBD>澆捆嚗?*
- API<EFBFBD>䀹凒雿輻鍂<EFBFBD><EFBFBD>𧋦<EFBFBD><EFBFBD>/api/v2嚗?
- 銝滩<E98A9D><E6BBA9>𣳇膄撌脫<E6928C>摮埈挾嚗<E68CBE><EFBFBD><EFBFBD>霈唬蛹deprecated
- 新增字段必须有默认值
- <EFBFBD><EFBFBD>摮埈挾敹<EFBFBD><EFBFBD><EFBFBD>霈文<EFBFBD>?
---
## <20><> <20><EFBFBD><E8A9A8><EFBFBD>
**规范:**
- [API设计规范](../../04-开发规范/02-API设计规范.md)
- [API路由总览](../../04-开发规范/04-API路由总览.md)
**<EFBFBD><EFBFBD>嚗?*
- [API霈曇恣閫<EFBFBD><EFBFBD>](../../04-<EFBFBD><EFBFBD>𤏸<EFBFBD><EFBFBD>?02-API霈曇恣閫<E681A3><E996AB>.md)
- [API頝舐眏<EFBFBD><EFBFBD>](../../04-<EFBFBD><EFBFBD>𤏸<EFBFBD><EFBFBD>?04-API頝舐眏<E88890><EFBFBD>.md)
**<EFBFBD>唳旿摨橒<EFBFBD>**
- [本模块数据库设计](./01-数据库设计.md)
- [<EFBFBD>祆芋<EFBFBD>埈㺭<EFBFBD><EFBFBD>霈曇恣](./01-<EFBFBD>唳旿摨栞挽霈?md)
---