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%)
238 lines
5.0 KiB
Markdown
238 lines
5.0 KiB
Markdown
# Node.js å<>Žç«¯ - 镜åƒ<C3A5>ä¿®å¤<C3A5>记录
|
||
|
||
> **ä¿®å¤<C3A5>æ—¶é—´**ï¼?025-12-24
|
||
> **é—®é¢˜åŽŸå› **:Docker镜åƒ<C3A5>ä¸ç¼ºå°‘config目录
|
||
> **解决方案**:é‡<C3A9>新构建镜åƒ<C3A5>v1.1
|
||
|
||
---
|
||
|
||
## ðŸ<C3B0>› 问题æ<CB9C><C3A6>è¿°
|
||
|
||
### 错误信æ<C2A1>¯
|
||
```
|
||
Error: ENOENT: no such file or directory, open '/app/config/agents.yaml'
|
||
```
|
||
|
||
### æ ¹æœ¬åŽŸå›
|
||
- 应用å<C2A8>¯åŠ¨æ—¶éœ€è¦<C3A8>读å<C2BB>?`/app/config/agents.yaml` é…<C3A9>置文件
|
||
- Dockerfile v1.0 ä¸å<C2AD>ªå¤<C3A5>制äº?`dist` å’?`prisma` 目录
|
||
- **é<>—æ¼<C3A6>äº?`config` 目录**
|
||
|
||
---
|
||
|
||
## �解决方案
|
||
|
||
### 1. 修改Dockerfile
|
||
|
||
**修改ä½<C3A4>ç½®1**:构建阶段(ç¬?2行)
|
||
```dockerfile
|
||
# 5. å¤<C3A5>制本地已编译好çš?dist 文件夹(跳过TypeScript编译ï¼?
|
||
COPY dist ./dist
|
||
|
||
# 6. å¤<C3A5>制é…<C3A9>置文件(agents.yamlç‰ï¼‰âœ?新增
|
||
COPY config ./config
|
||
```
|
||
|
||
**修改ä½<C3A4>ç½®2**:è¿<C3A8>行阶段(ç¬?1行)
|
||
```dockerfile
|
||
# 从构建阶段å¤<C3A5>制产ç‰?
|
||
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 �新增
|
||
```
|
||
|
||
### 2. é‡<C3A9>新构建镜åƒ<C3A5>
|
||
|
||
**构建命令**�
|
||
```bash
|
||
docker build -t crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.1 .
|
||
```
|
||
|
||
**构建结果**�
|
||
- âœ?构建æˆ<C3A6>功
|
||
- �耗时�9.4�
|
||
- âœ?镜åƒ<C3A5>大å°<C3A5>:~186MB(压缩å<C2A9>Žï¼?
|
||
|
||
### 3. 推é€<C3A9>到ACR
|
||
|
||
**推é€<C3A9>命ä»?*ï¼?
|
||
```bash
|
||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.1
|
||
```
|
||
|
||
**推é€<C3A9>结æž?*ï¼?
|
||
- âœ?推é€<C3A9>æˆ<C3A6>åŠ?
|
||
- �Digest: `sha256:f309cec92d2ebb7fd40c38916980d7fcc2d589e61d10a8875f2976c267eac890`
|
||
|
||
---
|
||
|
||
## 📦 新版本镜åƒ<C3A5>ä¿¡æ<C2A1>?
|
||
|
||
### 版本对比
|
||
|
||
| 项目 | v1.0(旧版本�| v1.1(新版本�|
|
||
|------|--------------|--------------|
|
||
| **Dockerfile修改** | â<>?缺少config | âœ?包å<E280A6>«config |
|
||
| **镜åƒ<C3A5>大å°<C3A5>** | 838MB | 838MB(基本一致) |
|
||
| **构建时间** | ~5分钟 | ~1分钟(缓å˜ä¼˜åŒ–) |
|
||
| **状æ€?* | â<>?å<>¯åŠ¨å¤±è´¥ | âœ?待验è¯?|
|
||
|
||
### 新版本镜åƒ<C3A5>地å<C2B0>€
|
||
|
||
**公网地å<C2B0>€**(用于本地拉å<E280B0>–)ï¼?
|
||
```
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.1
|
||
```
|
||
|
||
**VPC地å<C2B0>€**(SAE部署使用):
|
||
```
|
||
crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.1
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 ä¸‹ä¸€æ¥æ“<C3A6>ä½?
|
||
|
||
### æ¥éª¤1:登录SAE控制å<C2B6>?
|
||
访问:https://sae.console.aliyun.com/
|
||
|
||
### æ¥éª¤2:更新应用镜åƒ<C3A5>版æœ?
|
||
|
||
1. 找到应用:`nodejs-backend-test`
|
||
2. 点击ã€<C3A3>é…<C3A9>置管ç<C2A1>†ã€‘→ã€<C3A3>部署é…<C3A9>ç½®ã€?
|
||
3. 找到"镜åƒ<C3A5>设置"部分
|
||
4. 修改镜åƒ<C3A5>版本ï¼?
|
||
- 从:`backend-service:v1.0`
|
||
- 改为:`backend-service:v1.1` �
|
||
|
||
### æ¥éª¤3:ä¿<C3A4>å˜å¹¶é‡<C3A9>新部署
|
||
|
||
1. 点击ã€<C3A3>ä¿<C3A4>å˜ã€?
|
||
2. 点击ã€<C3A3>é‡<C3A9>新部署ã€?
|
||
3. ç‰å¾…3-5分钟
|
||
4. 查看实时日志
|
||
|
||
---
|
||
|
||
## �预期结果
|
||
|
||
### æˆ<C3A6>功的日志输å‡?
|
||
|
||
```
|
||
============================================================
|
||
🚀 AIä¸´åºŠç ”ç©¶å¹³å<C2B3>° - å<>Žç«¯æœ<C3A6>务器å<C2A8>¯åЍæˆ<C3A6>功ï¼<C3AF>
|
||
============================================================
|
||
ðŸ“<EFBFBD> æœ<C3A6>务地å<C2B0>€: http://0.0.0.0:3001
|
||
ðŸ”<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] Database connected successfully
|
||
[INFO] Health check endpoint available
|
||
```
|
||
|
||
### 关键验è¯<C3A8>ç‚?
|
||
|
||
- [x] 应用状æ€<C3A6>:è¿<C3A8>行ä¸ï¼ˆç»¿è‰²ï¼?
|
||
- [x] å<>¥åº·æ£€æŸ¥ï¼šé€šè¿‡ï¼ˆç»¿è‰²ï¼‰
|
||
- [x] 日志ä¸å‡ºçŽ°ï¼š`Config loaded: /app/config/agents.yaml` âœ?
|
||
- [x] æ— ENOENT错误
|
||
|
||
---
|
||
|
||
## ðŸ“<C5B8> ä¿®å¤<C3A5>总结
|
||
|
||
**é—®é¢˜æ ¹æº<C3A6>**:Dockerfileä¸<C3A4>完整,é<C592>—æ¼<C3A6>é…<C3A9>置文件
|
||
**ä¿®å¤<C3A5>æ–¹å¼<C3A5>**:添åŠ?行COPY指令
|
||
**å½±å“<C3A5>范围**:仅需é‡<C3A9>æ–°æž„å»ºå’Œéƒ¨ç½²ï¼Œæ— éœ€ä¿®æ”¹ä»£ç <C3A7>
|
||
**ä¿®å¤<C3A5>æ—¶é—´**:约5分钟(构å»?分钟 + 推é€?分钟 + 部署3分钟ï¼?
|
||
|
||
---
|
||
|
||
## ðŸ”<C5B8> 预防措施
|
||
|
||
### 1. Dockerfile检查清å<E280A6>?
|
||
|
||
创建完整的文件å¤<EFBFBD>制清å<EFBFBD>•:
|
||
```dockerfile
|
||
�COPY package*.json ./
|
||
�COPY prisma ./prisma/
|
||
�COPY dist ./dist/
|
||
âœ?COPY config ./config/ # ä¸<C3A4>è¦<C3A8>é<EFBFBD>—æ¼<C3A6>ï¼?
|
||
â<EFBFBD>?COPY public ./public/ # 如果有é<E280B0>™æ€<C3A6>æ–‡ä»?
|
||
â<EFBFBD>?COPY scripts ./scripts/ # 如果有å<E280B0>¯åŠ¨è„šæœ?
|
||
```
|
||
|
||
### 2. 本地测试æµ<C3A6>程
|
||
|
||
在推é€<EFBFBD>镜åƒ<EFBFBD>å‰<EFBFBD>,先在本地测试:
|
||
```bash
|
||
# 1. 构建镜åƒ<C3A5>
|
||
docker build -t backend-test:local .
|
||
|
||
# 2. 本地è¿<C3A8>行测试
|
||
docker run -p 3001:3001 \
|
||
-e DATABASE_URL="..." \
|
||
-e JWT_SECRET="..." \
|
||
backend-test:local
|
||
|
||
# 3. 访问å<C2AE>¥åº·æ£€æŸ?
|
||
curl http://localhost:3001/health
|
||
|
||
# 4. ç¡®è®¤æ— é”™è¯¯å<C2AF>Žå†<C3A5>推é€?
|
||
```
|
||
|
||
### 3. CI/CD集æˆ<C3A6>
|
||
|
||
建议在GitHub Actions䏿·»åŠ ï¼š
|
||
```yaml
|
||
- name: Build Docker Image
|
||
run: docker build -t backend:${{ github.sha }} .
|
||
|
||
- name: Test Docker Image
|
||
run: |
|
||
docker run -d -p 3001:3001 backend:${{ github.sha }}
|
||
sleep 10
|
||
curl http://localhost:3001/health
|
||
```
|
||
|
||
---
|
||
|
||
**文档创建时间**�025-12-24
|
||
**维护人员**:è¿<C3A8>维团é˜?
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|