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,6 +1,6 @@
# Node.js å<>Žç«¯ - 镜åƒ<C3A5>ä¿®å¤<C3A5>记录
> **修复时间**2025-12-24
> **ä¿®å¤<EFBFBD>æ—¶é—´**ï¼?025-12-24
> **问题原因**:Docker镜åƒ<C3A5>中缺å°configç®å½•
> **解决方案**:é‡<C3A9>æ°æž„建镜åƒ<C3A5>v1.1
@@ -14,74 +14,74 @@ Error: ENOENT: no such file or directory, open '/app/config/agents.yaml'
```
### 根本原因
- 应用启动时需要读取 `/app/config/agents.yaml` 配置文件
- Dockerfile v1.0 中只复制了 `dist` `prisma` 目录
- **遗漏了 `config` 目录**
- 应用å<EFBFBD>¯åŠ¨æ—¶éœ€è¦<EFBFBD>读å<EFBFBD>?`/app/config/agents.yaml` é…<EFBFBD>ç½®æ‡ä»¶
- Dockerfile v1.0 中å<EFBFBD>ªå¤<EFBFBD>制äº?`dist` å’?`prisma` 目录
- **é<EFBFBD>—æ¼<EFBFBD>äº?`config` 目录**
---
## ✅ 解决方案
## �解决方案
### 1. 修改Dockerfile
**修改位置1**构建阶段第32行
**修改ä½<EFBFBD>ç½®1**:构建阶段(ç¬?2行)
```dockerfile
# 5. 复制本地已编译好的 dist 文件夹(跳过TypeScript编译)
# 5. å¤<EFBFBD>制本地已ç¼è¯å¥½çš?dist 文件夹(跳过TypeScript编译ï¼?
COPY dist ./dist
# 6. 复制配置文件agents.yaml等✨ 新增
# 6. å¤<EFBFBD>制é…<EFBFBD>ç½®æ‡ä»¶ï¼ˆagents.yaml等)âœ?新增
COPY config ./config
```
**修改位置2**运行阶段第61行
**修改ä½<EFBFBD>ç½®2**:è¿<C3A8>行阶段(ç¬?1行)
```dockerfile
# 从构建阶段复制产物
# 从构建阶段å¤<EFBFBD>制产ç‰?
COPY --from=builder --chown=nodejs:nodejs /app/node_modules ./node_modules
COPY --from=builder --chown=nodejs:nodejs /app/dist ./dist
COPY --from=builder --chown=nodejs:nodejs /app/package*.json ./
COPY --from=builder --chown=nodejs:nodejs /app/prisma ./prisma
COPY --from=builder --chown=nodejs:nodejs /app/config ./config ✨ 新增
COPY --from=builder --chown=nodejs:nodejs /app/config ./config �新增
```
### 2. é‡<C3A9>æ°æž„建镜åƒ<C3A5>
**构建命令**
**构建命令**�
```bash
docker build -t crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.1 .
```
**构建结果**
- ✅ 构建成功
- ✅ 耗时59.4秒
- ✅ 镜像大小:~186MB压缩后
**构建结果**�
- âœ?构建æˆ<C3A6>功
- �耗时�9.4�
- âœ?镜åƒ<C3A5>大å°<C3A5>:~186MB(åŽç¼©å<C2A9>Žï¼?
### 3. 推é€<C3A9>到ACR
**推送命令**
**推é€<EFBFBD>å½ä»?*ï¼?
```bash
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.1
```
**推送结果**
- ✅ 推送成功
- Digest: `sha256:f309cec92d2ebb7fd40c38916980d7fcc2d589e61d10a8875f2976c267eac890`
**推é€<EFBFBD>结æž?*ï¼?
- âœ?推é€<C3A9>æˆ<C3A6>åŠ?
- �Digest: `sha256:f309cec92d2ebb7fd40c38916980d7fcc2d589e61d10a8875f2976c267eac890`
---
## 📦 新版本镜像信息
## 📦 æ°ç‰ˆæœ¬é•œåƒ<C3A5>ä¿¡æ<C2A1>?
### 版本对比
| 项目 | v1.0(旧版本) | v1.1(新版本) |
| 项目 | v1.0(旧版本�| v1.1(新版本�|
|------|--------------|--------------|
| **Dockerfile修改** | ❌ 缺少config | ✅ 包含config |
| **Dockerfile修改** | â<EFBFBD>?缺å°config | âœ?包å<E280A6>«config |
| **镜åƒ<C3A5>大å°<C3A5>** | 838MB | 838MB(基本一致) |
| **构建时间** | ~5åˆ†éŸ | ~1分éŸï¼ˆç¼“存优åŒï¼‰ |
| **状态** | ❌ 启动失败 | ✅ 待验证 |
| **状æ€?* | â<><>¯åŠ¨å¤±è´¥ | âœ?待验è¯?|
### æ°ç‰ˆæœ¬é•œåƒ<C3A5>地å<C2B0>
**公网地址**(用于本地拉取):
**å…¬ç½åœ°å<EFBFBD>€**(用于本地æ‰å<E280B0>)ï¼?
```
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.1
```
@@ -93,54 +93,54 @@ crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backen
---
## 🎯 下一步操作
## 🎯 ä¸ä¸€æ­¥æ“<C3A6>ä½?
### 步骤1登录SAE控制台
### 步骤1:登录SAE控制å<EFBFBD>?
访问:https://sae.console.aliyun.com/
### 步骤2更新应用镜像版本
### 步骤2ï¼šæ´æ°åº”用镜åƒ<EFBFBD>版æœ?
1. 找到应用:`nodejs-backend-test`
2. 点击【配置管理】→【部署配置】
2. ç¹å‡»ã€<EFBFBD>é…<EFBFBD>置管ç<EFBFBD>†ã€â†ã€<EFBFBD>部署é…<EFBFBD>ç½®ã€?
3. 找到"镜åƒ<C3A5>设置"部分
4. 修改镜像版本:
4. 修改镜åƒ<EFBFBD>版本ï¼?
- 从:`backend-service:v1.0`
- 改为:`backend-service:v1.1`
- 改为:`backend-service:v1.1` �
### 步骤3:ä¿<C3A4>存并é‡<C3A9>æ°éƒ¨ç½²
1. 点击【保存】
2. 点击【重新部署】
1. ç¹å‡»ã€<EFBFBD>ä¿<EFBFBD>å­˜ã€?
2. ç¹å‡»ã€<EFBFBD>é‡<EFBFBD>æ°éƒ¨ç½²ã€?
3. 等待3-5分éŸ
4. 查看实时日志
---
## ✅ 预期结果
## �预期结果
### 成功的日志输出
### æˆ<EFBFBD>功的日志输å‡?
```
============================================================
🚀 AI临床研究平å<C2B3>° - å<>Žç«¯æœ<C3A6>务器å<C2A8>¯åЍæˆ<C3A6>功ï¼<C3AF>
============================================================
ðŸ“<EFBFBD> æœ<C3A6>务地å<C2B0>€: http://0.0.0.0:3001
🔍 健康检查: http://0.0.0.0:3001/health
ðŸ”<EFBFBD> å<>¥åº·æ£€æŸ? http://0.0.0.0:3001/health
📡 APIå…¥å<C2A5>£: http://0.0.0.0:3001/api/v1
ðŸŒ<EFBFBD> è¿<C3A8>行环境: production
============================================================
[INFO] Server listening at http://0.0.0.0:3001
[INFO] Config loaded: /app/config/agents.yaml
[INFO] Config loaded: /app/config/agents.yaml �
[INFO] Database connected successfully
[INFO] Health check endpoint available
```
### 关键验证点
### 关键验è¯<EFBFBD>ç?
- [x] 应用状态:运行中(绿色)
- [x] 应用状æ€<EFBFBD>:è¿<EFBFBD>行中(绿色ï¼?
- [x] å<>¥åº·æ£€æŸ¥ï¼šé€šè¿‡ï¼ˆç»¿è‰²ï¼‰
- [x] 日志中出现:`Config loaded: /app/config/agents.yaml`
- [x] 日志中出现:`Config loaded: /app/config/agents.yaml` �
- [x] 无ENOENT错误
---
@@ -148,24 +148,24 @@ crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backen
## ðŸ“<C5B8> ä¿®å¤<C3A5>总结
**问题根æº<C3A6>**:Dockerfileä¸<C3A4>完整,é<C592>—æ¼<C3A6>é…<C3A9>ç½®æ‡ä»¶
**修复方式**添加2行COPY指令
**ä¿®å¤<EFBFBD>æ¹å¼<EFBFBD>**:添åŠ?行COPY指令
**å½±å“<C3A5>范å´**:仅需é‡<C3A9>æ°æž„建åŒéƒ¨ç½²ï¼Œæ— éœ€ä¿®æ”¹ä»£ç <C3A7>
**修复时间**约5分钟构建1分钟 + 推送1分钟 + 部署3分钟
**ä¿®å¤<EFBFBD>æ—¶é—´**:约5分éŸï¼ˆæž„å»?分钟 + 推é€?分钟 + 部署3分éŸï¼?
---
## ðŸ”<C5B8> 预防措施
### 1. Dockerfile检查清单
### 1. Dockerfile检查清å<EFBFBD>?
åˆå»ºå®Œæ•´çš„æ‡ä»¶å¤<EFBFBD>制清å<EFBFBD>•:
```dockerfile
COPY package*.json ./
COPY prisma ./prisma/
COPY dist ./dist/
COPY config ./config/ # 不要遗漏!
COPY public ./public/ # 如果有静态文件
COPY scripts ./scripts/ # 如果有启动脚本
�COPY package*.json ./
�COPY prisma ./prisma/
�COPY dist ./dist/
âœ?COPY config ./config/ # ä¸<EFBFBD>è¦<EFBFBD>é<EFBFBD>—æ¼<EFBFBD>ï¼?
â<EFBFBD>?COPY public ./public/ # 妿žœæœ‰é<EFBFBD>™æ€<EFBFBD>æ‡ä»?
â<EFBFBD>?COPY scripts ./scripts/ # 妿žœæœ‰å<EFBFBD>¯åŠ¨è„šæœ?
```
### 2. 本地æµè¯•æµ<C3A6>ç¨
@@ -181,10 +181,10 @@ docker run -p 3001:3001 \
-e JWT_SECRET="..." \
backend-test:local
# 3. 访问健康检查
# 3. 访问å<EFBFBD>¥åº·æ£€æŸ?
curl http://localhost:3001/health
# 4. 确认无错误后再推送
# 4. 确认无错误å<EFBFBD>Žå†<EFBFBD>推é€?
```
### 3. CI/CD醿ˆ<C3A6>
@@ -203,8 +203,9 @@ curl http://localhost:3001/health
---
**文档创建时间**2025-12-24
**维护人员**:运维团队
**文档创建时间**�025-12-24
**维护人员**:è¿<C3A8>ç»´å¢é˜?