feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1): - Database: Add user_modules table for fine-grained module permissions - Database: Add 4 user permissions (view/create/edit/delete) to role_permissions - Backend: UserService (780 lines) - CRUD with tenant isolation - Backend: UserController + UserRoutes (648 lines) - 13 API endpoints - Backend: Batch import users from Excel - Frontend: UserListPage (412 lines) - list/filter/search/pagination - Frontend: UserFormPage (341 lines) - create/edit with module config - Frontend: UserDetailPage (393 lines) - details/tenant/module management - Frontend: 3 modal components (592 lines) - import/assign/configure - API: GET/POST/PUT/DELETE /api/admin/users/* endpoints Architecture Upgrade - Module Permission System: - Backend: Add getUserModules() method in auth.service - Backend: Login API returns modules array in user object - Frontend: AuthContext adds hasModule() method - Frontend: Navigation filters modules based on user.modules - Frontend: RouteGuard checks requiredModule instead of requiredVersion - Frontend: Remove deprecated version-based permission system - UX: Only show accessible modules in navigation (clean UI) - UX: Smart redirect after login (avoid 403 for regular users) Fixes: - Fix UTF-8 encoding corruption in ~100 docs files - Fix pageSize type conversion in userService (String to Number) - Fix authUser undefined error in TopNavigation - Fix login redirect logic with role-based access check - Update Git commit guidelines v1.2 with UTF-8 safety rules Database Changes: - CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled) - ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code) - INSERT 4 permissions + role assignments - UPDATE PUBLIC tenant with 8 module subscriptions Technical: - Backend: 5 new files (~2400 lines) - Frontend: 10 new files (~2500 lines) - Docs: 1 development record + 2 status updates + 1 guideline update - Total: ~4900 lines of code Status: User management 100% complete, module permission system operational
This commit is contained in:
@@ -1,44 +1,61 @@
|
||||
# 🚀 AI临床研究平台 - 部署文档中心
|
||||
|
||||
> **鏈€鍚庢洿鏂?*锛?025-12-25
|
||||
> **閮ㄧ讲鐘舵€?*锛氣渽 瀹屽叏鎴愬姛锛屾墍鏈夋湇鍔¤繍琛屾<E7909B>甯?
|
||||
> **最后更新**:2025-12-25
|
||||
> **部署状态**:✅ 完全成功,所有服务运行正常
|
||||
> **公网访问**:http://8.140.53.236/
|
||||
|
||||
---
|
||||
|
||||
## 馃幆 蹇<>€熷紑濮嬶紙3鍒嗛挓鎵惧埌浣犻渶瑕佺殑鏂囨。锛?
|
||||
## 🎯 快速开始(3分钟找到你需要的文档)
|
||||
|
||||
### 我要做什么?
|
||||
|
||||
| 你的目标 | 推荐文档 | 预计时间 |
|
||||
|---------|---------|---------|
|
||||
| 馃敟 **鏃ュ父鏇存柊浠g爜锛堟渶甯哥敤锛?* | [19-鏃ュ父鏇存柊蹇<E69F8A>€熸搷浣滄墜鍐宂(./19-鏃ュ父鏇存柊蹇<E69F8A>€熸搷浣滄墜鍐?md) 猸愨瓙猸愨瓙猸?| 20-25鍒嗛挓 |
|
||||
| 馃殌 **瀹屾暣閮ㄧ讲绯荤粺** | [17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗圿(./17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md) | 3.5-6灏忔椂 |
|
||||
| 馃攳 **鏌ヨ<E98F8C>IP/瀵嗙爜绛変俊鎭?* | [00-閮ㄧ讲杩涘害鎬昏<EFBFBD>](./00-閮ㄧ讲杩涘害鎬昏<E98EAC>.md) | 1鍒嗛挓 |
|
||||
| 馃摎 **瀛︿範閮ㄧ讲鍘熺悊** | [01-蹇<EFBFBD>€熼儴缃睸OP-闆跺熀纭€鐗圿(./01-蹇<>€熼儴缃睸OP-闆跺熀纭€鐗?md) | 4灏忔椂 |
|
||||
| 馃悕 **閮ㄧ讲Python鏈嶅姟** | [09-Python寰<EFBFBD>湇鍔?SAE閮ㄧ讲鎿嶄綔鎵嬪唽](./09-Python寰<6E>湇鍔?SAE閮ㄧ讲鎿嶄綔鎵嬪唽.md) | 35鍒嗛挓 |
|
||||
| 🔥 **日常更新代码(最常用)** | [19-日常更新快速操作手册](./19-日常更新快速操作手册.md) ⭐⭐⭐⭐⭐ | 20-25分钟 |
|
||||
| 🚀 **完整部署系统** | [17-完整部署实战手册-2025版](./17-完整部署实战手册-2025版.md) | 3.5-6小时 |
|
||||
| 🔍 **查询IP/密码等信息** | [00-部署进度总览](./00-部署进度总览.md) | 1分钟 |
|
||||
| 📚 **学习部署原理** | [01-快速部署SOP-零基础版](./01-快速部署SOP-零基础版.md) | 4小时 |
|
||||
| 🐍 **部署Python服务** | [09-Python微服务-SAE部署操作手册](./09-Python微服务-SAE部署操作手册.md) | 35分钟 |
|
||||
| 🟢 **部署Node.js后端** | [12-Node.js后端-SAE部署操作手册](./12-Node.js后端-SAE部署操作手册.md) | 50分钟 |
|
||||
| 🎨 **部署前端Nginx** | [07-前端Nginx-SAE部署操作手册](./07-前端Nginx-SAE部署操作手册.md) | 30分钟 |
|
||||
| 鉂?**閬囧埌闂<E59F8C><E99782>鎺掓煡** | [15-Node.js鍚庣<EFBFBD>-閮ㄧ讲鎴愬姛鎬荤粨](./15-Node.js鍚庣<EFBFBD>-閮ㄧ讲鎴愬姛鎬荤粨.md) | 鎸夐渶 |
|
||||
| ❌ **遇到问题排查** | [15-Node.js后端-部署成功总结](./15-Node.js后端-部署成功总结.md) | 按需 |
|
||||
| 📖 **不知道看哪个文档** | [18-部署文档使用指南](./18-部署文档使用指南.md) | 5分钟 |
|
||||
|
||||
---
|
||||
|
||||
## 馃敟 鏃ュ父鏇存柊鎿嶄綔锛堥珮棰戜娇鐢<E5A887>級猸愨瓙猸愨瓙猸?
|
||||
### [19-鏃ュ父鏇存柊蹇<E69F8A>€熸搷浣滄墜鍐?md](./19-鏃ュ父鏇存柊蹇<E69F8A>€熸搷浣滄墜鍐?md)
|
||||
## 🔥 日常更新操作(高频使用)⭐⭐⭐⭐⭐
|
||||
|
||||
**鈿?鏈€甯哥敤鐨勬枃妗o紒閫傚悎鏃ュ父鍔熻兘鏇存柊鍜屽揩閫熻凯浠o紒**
|
||||
### [19-日常更新快速操作手册.md](./19-日常更新快速操作手册.md)
|
||||
|
||||
**涓轰粈涔堟帹鑽?*锛?- 鉁?鐭<>皬绮炬倣锛?70琛岋級锛屽叧閿<E58FA7>俊鎭<E4BF8A>瘑闆?- 鉁?鍙<>洿鎺ュ<E98EBA>鍒舵墽琛岀殑鍛戒护
|
||||
- 鉁?鍖呭惈涓€閿<E282AC>洿鏂拌剼鏈?- 鉁?閫傚悎鍥㈤槦鍗忎綔鍜孉I鍔╂墜浣跨敤
|
||||
**⚡ 最常用的文档!适合日常功能更新和快速迭代!**
|
||||
|
||||
**鍖呭惈鍐呭<EFBFBD>**锛?- **鏇存柊Node.js鍚庣<E98D9A>**锛?0-25鍒嗛挓锛? 鏈€甯哥敤锛? ```bash
|
||||
缂栬瘧 鈫?鏋勫缓闀滃儚 鈫?鎺ㄩ€丄CR 鈫?SAE閮ㄧ讲 鈫?楠岃瘉
|
||||
**为什么推荐**:
|
||||
- ✅ 短小精悍(670行),关键信息密集
|
||||
- ✅ 可直接复制执行的命令
|
||||
- ✅ 包含一键更新脚本
|
||||
- ✅ 适合团队协作和AI助手使用
|
||||
|
||||
**包含内容**:
|
||||
- **更新Node.js后端**(20-25分钟)- 最常用!
|
||||
```bash
|
||||
编译 → 构建镜像 → 推送ACR → SAE部署 → 验证
|
||||
```
|
||||
- **鏇存柊鍓嶇<EFBFBD>Nginx**锛?5-20鍒嗛挓锛?- **鏇存柊Python鏈嶅姟**锛?0鍒嗛挓锛?- **淇<>敼鐜<E695BC><E9909C>鍙橀噺**锛?鍒嗛挓锛? 楂橀<E6A582>鎿嶄綔锛?- **鏌ョ湅鏃ュ織**锛?鍒嗛挓锛?- **鍥炴粴鎿嶄綔**锛?鍒嗛挓锛?- **涓€閿<E282AC>洿鏂拌剼鏈?*锛堣嚜鍔ㄥ寲锛?
|
||||
**閫傚悎浜虹兢**锛?- 馃幆 鏃ュ父寮€鍙戣凯浠g殑寮€鍙戜汉鍛?- 馃幆 闇€瑕佸揩閫熼儴缃叉洿鏂扮殑杩愮淮浜哄憳
|
||||
- 馃幆 鍥㈤槦鏂版垚鍛樺揩閫熶笂鎵?- 馃幆 AI鍔╂墜鎵ц<E98EB5>閮ㄧ讲浠诲姟
|
||||
- **更新前端Nginx**(15-20分钟)
|
||||
- **更新Python服务**(30分钟)
|
||||
- **修改环境变量**(5分钟)- 高频操作!
|
||||
- **查看日志**(1分钟)
|
||||
- **回滚操作**(7分钟)
|
||||
- **一键更新脚本**(自动化)
|
||||
|
||||
**蹇<EFBFBD>€熺ず渚?*锛?```bash
|
||||
**适合人群**:
|
||||
- 🎯 日常开发迭代的开发人员
|
||||
- 🎯 需要快速部署更新的运维人员
|
||||
- 🎯 团队新成员快速上手
|
||||
- 🎯 AI助手执行部署任务
|
||||
|
||||
**快速示例**:
|
||||
```bash
|
||||
# 更新Node.js后端到v1.5
|
||||
cd backend
|
||||
npm run build
|
||||
@@ -49,32 +66,55 @@ docker push crpi-xxx.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-ser
|
||||
|
||||
---
|
||||
|
||||
## 猸?鏍稿績鏂囨。锛堟柊鎵嬪繀鐪嬶級
|
||||
## ⭐ 核心文档(新手必看)
|
||||
|
||||
### 1锔忊儯 瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽锛堝己鐑堟帹鑽愶級猸愨瓙猸愨瓙猸?
|
||||
**[17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md](./17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md)**
|
||||
### 1️⃣ 完整部署实战手册(强烈推荐)⭐⭐⭐⭐⭐
|
||||
|
||||
**涓轰粈涔堟帹鑽?*锛?- 鉁?鍩轰簬2025-12-25瀹為檯閮ㄧ讲缁忓巻缂栧啓
|
||||
- 鉁?鍖呭惈鎵€鏈夐亣鍒扮殑闂<E6AE91><E99782>鍙婅В鍐虫柟妗?- 鉁?1800琛岃<E7909B>缁嗘<E7BC81>楠わ紝鍙<E7B49D>洿鎺ュ<E98EBA>鍒跺懡浠?- 鉁?璺熺潃鍋氬氨鑳芥垚鍔燂紒
|
||||
**[17-完整部署实战手册-2025版.md](./17-完整部署实战手册-2025版.md)**
|
||||
|
||||
**鍖呭惈鍐呭<EFBFBD>**锛?- 瀹屾暣閮ㄧ讲娴佺▼锛圴PC鈫扲DS鈫扨ython鈫扤ode.js鈫掑墠绔<E5A2A0>啋CLB锛?- 4涓<34>叧閿<E58FA7>棶棰樹慨澶嶏紙鐜<E7B499><E9909C>鍙橀噺銆乧onfig銆乸ino-pretty銆丒S Module锛?- 鍏抽敭缁忛獙鎬荤粨锛堥噸鍚痸s閮ㄧ讲銆佺幆澧冨彉閲忓懡鍚嶇瓑锛?- 蹇<>€熷懡浠ゅ弬鑰?- 瀹屾暣閾捐矾娴嬭瘯
|
||||
**为什么推荐**:
|
||||
- ✅ 基于2025-12-25实际部署经历编写
|
||||
- ✅ 包含所有遇到的问题及解决方案
|
||||
- ✅ 1800行详细步骤,可直接复制命令
|
||||
- ✅ 跟着做就能成功!
|
||||
|
||||
**包含内容**:
|
||||
- 完整部署流程(VPC→RDS→Python→Node.js→前端→CLB)
|
||||
- 4个关键问题修复(环境变量、config、pino-pretty、ES Module)
|
||||
- 关键经验总结(重启vs部署、环境变量命名等)
|
||||
- 快速命令参考
|
||||
- 完整链路测试
|
||||
|
||||
**适合人群**:
|
||||
- 🎯 要快速部署的人
|
||||
- 🎯 重新部署或迁移的人
|
||||
- 🎯 想了解实际坑点的人
|
||||
|
||||
**閫傚悎浜虹兢**锛?- 馃幆 瑕佸揩閫熼儴缃茬殑浜?- 馃幆 閲嶆柊閮ㄧ讲鎴栬縼绉荤殑浜?- 馃幆 鎯充簡瑙e疄闄呭潙鐐圭殑浜?
|
||||
---
|
||||
|
||||
### 2锔忊儯 閮ㄧ讲杩涘害鎬昏<E98EAC>锛堟棩甯稿繀澶囷級猸愨瓙猸愨瓙猸?
|
||||
### 2️⃣ 部署进度总览(日常必备)⭐⭐⭐⭐⭐
|
||||
|
||||
**[00-部署进度总览.md](./00-部署进度总览.md)**
|
||||
|
||||
**涓轰粈涔堟帹鑽?*锛?- 鉁?鎵€鏈夎祫婧愪俊鎭<E4BF8A>殑绱㈠紩涓<E7B4A9>績
|
||||
- 鉁?蹇<>€熸煡璇<E785A1>P銆佸瘑鐮併€佺幆澧冨彉閲?- 鉁?鏂囨。瀵艰埅鎸囧崡
|
||||
- 鉁?閮ㄧ讲鐘舵€佽拷韪?
|
||||
**鍖呭惈鍐呭<E98D90>**锛?- SAE搴旂敤鍐呯綉IP鍦板潃
|
||||
- RDS鏁版嵁搴撹繛鎺ヤ俊鎭?- OSS AccessKey
|
||||
**为什么推荐**:
|
||||
- ✅ 所有资源信息的索引中心
|
||||
- ✅ 快速查询IP、密码、环境变量
|
||||
- ✅ 文档导航指南
|
||||
- ✅ 部署状态追踪
|
||||
|
||||
**包含内容**:
|
||||
- SAE应用内网IP地址
|
||||
- RDS数据库连接信息
|
||||
- OSS AccessKey
|
||||
- ACR镜像仓库地址
|
||||
- 环境变量配置清单
|
||||
- 蹇<EFBFBD>€熷懡浠ゅ弬鑰?
|
||||
**閫傚悎鍦烘櫙**锛?- 馃攳 蹇樿<E8B987>IP鍦板潃
|
||||
- 馃攳 蹇樿<E8B987>鏁版嵁搴撳瘑鐮?- 馃攳 闇€瑕佹煡璇㈣祫婧愰厤缃?- 馃攳 闇€瑕佹壘鐩稿叧鏂囨。
|
||||
- 快速命令参考
|
||||
|
||||
**适合场景**:
|
||||
- 🔍 忘记IP地址
|
||||
- 🔍 忘记数据库密码
|
||||
- 🔍 需要查询资源配置
|
||||
- 🔍 需要找相关文档
|
||||
|
||||
---
|
||||
|
||||
@@ -82,69 +122,90 @@ docker push crpi-xxx.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-ser
|
||||
|
||||
**[18-部署文档使用指南.md](./18-部署文档使用指南.md)**
|
||||
|
||||
**涓轰粈涔堟帹鑽?*锛?- 鉁?蹇<>€熷<E282AC>鑸<EFBFBD>紝鎵惧埌闇€瑕佺殑鏂囨。
|
||||
- 鉁?涓嶅悓鍦烘櫙鐨勯槄璇昏矾寰?- 鉁?鍏抽敭淇℃伅閫熸煡琛?- 鉁?鏈€浣冲疄璺靛缓璁?
|
||||
**閫傚悎浜虹兢**锛?- 馃摉 涓嶇煡閬撲粠鍝<E7B2A0>釜鏂囨。寮€濮嬬湅
|
||||
- 馃摉 鎯冲揩閫熸壘鍒扮壒瀹氫俊鎭?- 馃摉 鎯充簡瑙f枃妗g粨鏋?
|
||||
**为什么推荐**:
|
||||
- ✅ 快速导航,找到需要的文档
|
||||
- ✅ 不同场景的阅读路径
|
||||
- ✅ 关键信息速查表
|
||||
- ✅ 最佳实践建议
|
||||
|
||||
**适合人群**:
|
||||
- 📖 不知道从哪个文档开始看
|
||||
- 📖 想快速找到特定信息
|
||||
- 📖 想了解文档结构
|
||||
|
||||
---
|
||||
|
||||
## 📁 完整文档列表
|
||||
|
||||
### 馃幆 鏍稿績鎸囧崡锛?涓<>級
|
||||
1. [README.md](./README.md) - 鏈<EFBFBD>枃妗o紝鎬诲叆鍙?2. [00-閮ㄧ讲杩涘害鎬昏<E98EAC>.md](./00-閮ㄧ讲杩涘害鎬昏<E98EAC>.md) - 璧勬簮閫熸煡銆佹枃妗g储寮?3. [18-閮ㄧ讲鏂囨。浣跨敤鎸囧崡.md](./18-閮ㄧ讲鏂囨。浣跨敤鎸囧崡.md) - 蹇<>€熷<E282AC>鑸?
|
||||
### 馃殌 瀹屾暣閮ㄧ讲锛?涓<>級
|
||||
1. [17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md](./17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md) - 猸?瀹炴垬鐗堬紙鎺ㄨ崘锛?2. [01-蹇<>€熼儴缃睸OP-闆跺熀纭€鐗?md](./01-蹇<>€熼儴缃睸OP-闆跺熀纭€鐗?md) - 瀛︿範鐗?
|
||||
### 馃敡 鏈嶅姟閮ㄧ讲鎵嬪唽锛?涓<>級
|
||||
1. [09-Python寰<6E>湇鍔?SAE閮ㄧ讲鎿嶄綔鎵嬪唽.md](./09-Python寰<6E>湇鍔?SAE閮ㄧ讲鎿嶄綔鎵嬪唽.md)
|
||||
### 🎯 核心指南(3个)
|
||||
1. [README.md](./README.md) - 本文档,总入口
|
||||
2. [00-部署进度总览.md](./00-部署进度总览.md) - 资源速查、文档索引
|
||||
3. [18-部署文档使用指南.md](./18-部署文档使用指南.md) - 快速导航
|
||||
|
||||
### 🚀 完整部署(2个)
|
||||
1. [17-完整部署实战手册-2025版.md](./17-完整部署实战手册-2025版.md) - ⭐ 实战版(推荐)
|
||||
2. [01-快速部署SOP-零基础版.md](./01-快速部署SOP-零基础版.md) - 学习版
|
||||
|
||||
### 🔧 服务部署手册(4个)
|
||||
1. [09-Python微服务-SAE部署操作手册.md](./09-Python微服务-SAE部署操作手册.md)
|
||||
2. [12-Node.js后端-SAE部署操作手册.md](./12-Node.js后端-SAE部署操作手册.md)
|
||||
3. [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md)
|
||||
4. [08-PostgreSQL鏁版嵁搴撻儴缃叉搷浣滄墜鍐?md](./08-PostgreSQL鏁版嵁搴撻儴缃叉搷浣滄墜鍐?md)
|
||||
4. [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md)
|
||||
|
||||
### 📖 技术详解(4个)
|
||||
1. [04-Python寰<EFBFBD>湇鍔?SAE瀹瑰櫒閮ㄧ讲鎸囧崡.md](./04-Python寰<6E>湇鍔?SAE瀹瑰櫒閮ㄧ讲鎸囧崡.md)
|
||||
1. [04-Python微服务-SAE容器部署指南.md](./04-Python微服务-SAE容器部署指南.md)
|
||||
2. [05-Node.js后端-SAE容器部署指南.md](./05-Node.js后端-SAE容器部署指南.md)
|
||||
3. [06-前端Nginx-SAE容器部署指南.md](./06-前端Nginx-SAE容器部署指南.md)
|
||||
4. [10-Node.js后端-Docker镜像构建手册.md](./10-Node.js后端-Docker镜像构建手册.md)
|
||||
|
||||
### 馃摑 閰嶇疆娓呭崟锛?涓<>級
|
||||
1. [11-Node.js鍚庣<EFBFBD>-SAE閮ㄧ讲閰嶇疆娓呭崟.md](./11-Node.js鍚庣<EFBFBD>-SAE閮ㄧ讲閰嶇疆娓呭崟.md) - 21涓<31>幆澧冨彉閲忚<E996B2>瑙?
|
||||
### 馃悰 闂<><E99782>淇<EFBFBD><E6B787>锛?涓<>級
|
||||
### 📝 配置清单(1个)
|
||||
1. [11-Node.js后端-SAE部署配置清单.md](./11-Node.js后端-SAE部署配置清单.md) - 21个环境变量详解
|
||||
|
||||
### 🐛 问题修复(4个)
|
||||
1. [13-Node.js后端-镜像修复记录.md](./13-Node.js后端-镜像修复记录.md) - config目录问题
|
||||
2. [14-Node.js后端-pino-pretty问题修复.md](./14-Node.js后端-pino-pretty问题修复.md) - 日志配置问题
|
||||
3. [15-Node.js鍚庣<EFBFBD>-閮ㄧ讲鎴愬姛鎬荤粨.md](./15-Node.js鍚庣<EFBFBD>-閮ㄧ讲鎴愬姛鎬荤粨.md) - 猸?瀹屾暣闂<E69AA3><E99782>姹囨€?4. [16-鍓嶇<E98D93>Nginx-閮ㄧ讲鎴愬姛鎬荤粨.md](./16-鍓嶇<E98D93>Nginx-閮ㄧ讲鎴愬姛鎬荤粨.md) - 鍓嶇<E98D93>閮ㄧ讲鎬荤粨
|
||||
3. [15-Node.js后端-部署成功总结.md](./15-Node.js后端-部署成功总结.md) - ⭐ 完整问题汇总
|
||||
4. [16-前端Nginx-部署成功总结.md](./16-前端Nginx-部署成功总结.md) - 前端部署总结
|
||||
|
||||
---
|
||||
|
||||
## 🎉 部署成功证明
|
||||
|
||||
### 褰撳墠閮ㄧ讲鐘舵€侊紙2025-12-25锛?
|
||||
| 鏈嶅姟 | 鐘舵€?| 鍐呯綉鍦板潃 | 鍏<>綉璁块棶 |
|
||||
### 当前部署状态(2025-12-25)
|
||||
|
||||
| 服务 | 状态 | 内网地址 | 公网访问 |
|
||||
|------|------|---------|---------|
|
||||
| RDS PostgreSQL | 鉁?杩愯<E69DA9>涓?| `pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432` | 鉂?|
|
||||
| Python寰<EFBFBD>湇鍔?| 鉁?杩愯<E69DA9>涓?| `172.17.173.66:8000` | 鉂?|
|
||||
| Node.js鍚庣<EFBFBD> | 鉁?杩愯<E69DA9>涓?| `172.17.173.73:3001` | 鉂?|
|
||||
| 鍓嶇<EFBFBD>Nginx | 鉁?杩愯<E69DA9>涓?| `172.17.173.72:80` | 鉁?|
|
||||
| CLB璐熻浇鍧囪 | 鉁?杩愯<E69DA9>涓?| - | `http://8.140.53.236/` |
|
||||
| RDS PostgreSQL | ✅ 运行中 | `pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432` | ❌ |
|
||||
| Python微服务 | ✅ 运行中 | `172.17.173.66:8000` | ❌ |
|
||||
| Node.js后端 | ✅ 运行中 | `172.17.173.73:3001` | ❌ |
|
||||
| 前端Nginx | ✅ 运行中 | `172.17.173.72:80` | ✅ |
|
||||
| CLB负载均衡 | ✅ 运行中 | - | `http://8.140.53.236/` |
|
||||
|
||||
### 功能验证
|
||||
|
||||
- 鉁?鍓嶇<E98D93>椤甸潰姝e父璁块棶
|
||||
- 鉁?鐢ㄦ埛鐧诲綍鍔熻兘姝e父
|
||||
- 鉁?鏂囩尞绛涙煡妯″潡姝e父
|
||||
- 鉁?鏁版嵁娓呮礂宸ュ叿C鐨?澶у姛鑳藉叏閮ㄦ<E996AE>甯?- 鉁?鏂囦欢涓婁紶鍔熻兘姝e父
|
||||
- 鉁?AI瀵硅瘽鍔熻兘姝e父
|
||||
- 鉁?鏁版嵁搴撹繛鎺ユ<E98EBA>甯?- 鉁?Python鏈嶅姟璋冪敤姝e父
|
||||
- 鉁?鍝嶅簲鏃堕棿 < 1绉?
|
||||
- ✅ 前端页面正常访问
|
||||
- ✅ 用户登录功能正常
|
||||
- ✅ 文献筛查模块正常
|
||||
- ✅ 数据清洗工具C的7大功能全部正常
|
||||
- ✅ 文件上传功能正常
|
||||
- ✅ AI对话功能正常
|
||||
- ✅ 数据库连接正常
|
||||
- ✅ Python服务调用正常
|
||||
- ✅ 响应时间 < 1秒
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 关键经验(必读)
|
||||
|
||||
### 1. 鐜<EFBFBD><EFBFBD>鍙橀噺鍚嶅繀椤荤簿纭?
|
||||
**鉂?閿欒<E996BF>閰嶇疆**锛?```bash
|
||||
### 1. 环境变量名必须精确
|
||||
|
||||
**❌ 错误配置**:
|
||||
```bash
|
||||
PYTHON_SERVICE_URL=http://172.17.173.66:8000
|
||||
```
|
||||
|
||||
**鉁?姝g‘閰嶇疆**锛?```bash
|
||||
**✅ 正确配置**:
|
||||
```bash
|
||||
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
|
||||
```
|
||||
|
||||
@@ -152,24 +213,27 @@ EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
|
||||
|
||||
---
|
||||
|
||||
### 2. 鍖哄垎"閲嶅惎搴旂敤"鍜?閮ㄧ讲搴旂敤"
|
||||
### 2. 区分"重启应用"和"部署应用"
|
||||
|
||||
| 鎿嶄綔 | 鐢ㄩ€?| IP鏄<50>惁鍙?| 浣曟椂浣跨敤 |
|
||||
| 操作 | 用途 | IP是否变 | 何时使用 |
|
||||
|------|------|---------|---------|
|
||||
| **閲嶅惎搴旂敤** | 閲嶅惎瀹瑰櫒 | 鉂?涓嶄細鍙?| 淇<>敼鐜<E695BC><E9909C>鍙橀噺銆佽皟鏁撮厤缃?|
|
||||
| **閮ㄧ讲搴旂敤** | 鏇存柊闀滃儚 | 鉁?浼氬彉鏇?| 鏇存柊浠g爜銆佹洿鏂伴暅鍍忕増鏈?|
|
||||
| **重启应用** | 重启容器 | ❌ 不会变 | 修改环境变量、调整配置 |
|
||||
| **部署应用** | 更新镜像 | ✅ 会变更 | 更新代码、更新镜像版本 |
|
||||
|
||||
**教训**:只修改环境变量时,用"重启应用",避免IP变更导致其他服务配置失效!
|
||||
|
||||
**鏁欒<E98F81>**锛氬彧淇<E5BDA7>敼鐜<E695BC><E9909C>鍙橀噺鏃讹紝鐢?閲嶅惎搴旂敤"锛岄伩鍏岻P鍙樻洿瀵艰嚧鍏朵粬鏈嶅姟閰嶇疆澶辨晥锛?
|
||||
---
|
||||
|
||||
### 3. Dockerfile必须包含config目录
|
||||
|
||||
**闂<EFBFBD><EFBFBD>**锛?```
|
||||
**问题**:
|
||||
```
|
||||
ENOENT: no such file or directory, open '/app/config/agents.yaml'
|
||||
```
|
||||
|
||||
**瑙e喅**锛?```dockerfile
|
||||
# 鉁?蹇呴』娣诲姞
|
||||
**解决**:
|
||||
```dockerfile
|
||||
# ✅ 必须添加
|
||||
COPY config ./config
|
||||
```
|
||||
|
||||
@@ -177,17 +241,19 @@ COPY config ./config
|
||||
|
||||
### 4. 使用VPC地址拉取镜像(省钱)
|
||||
|
||||
**SAE鎷夊彇闀滃儚鏃?*锛?```bash
|
||||
# 鉁?姝g‘锛圴PC鍦板潃锛屽厤娴侀噺璐癸級
|
||||
**SAE拉取镜像时**:
|
||||
```bash
|
||||
# ✅ 正确(VPC地址,免流量费)
|
||||
crpi-xxx-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||||
|
||||
# 鉂?涓嶆帹鑽愶紙鍏<E7B499>綉鍦板潃锛屾敹娴侀噺璐癸級
|
||||
# ❌ 不推荐(公网地址,收流量费)
|
||||
crpi-xxx.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 馃挕 蹇<>€熷懡浠ゅ弬鑰?
|
||||
## 💡 快速命令参考
|
||||
|
||||
### 登录ACR
|
||||
```bash
|
||||
docker login --username=gofeng117@163.com \
|
||||
@@ -195,7 +261,8 @@ docker login --username=gofeng117@163.com \
|
||||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
|
||||
```
|
||||
|
||||
### 鏋勫缓骞舵帹閫侀暅鍍?```bash
|
||||
### 构建并推送镜像
|
||||
```bash
|
||||
# Node.js后端
|
||||
cd backend
|
||||
npm run build
|
||||
@@ -205,7 +272,8 @@ docker tag backend-service:v1.3 \
|
||||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||||
```
|
||||
|
||||
### 鍋ュ悍妫€鏌?```bash
|
||||
### 健康检查
|
||||
```bash
|
||||
# Python服务
|
||||
curl http://172.17.173.66:8000/api/health
|
||||
|
||||
@@ -221,17 +289,19 @@ curl http://8.140.53.236/
|
||||
|
||||
---
|
||||
|
||||
## 馃搳 閮ㄧ讲鏋舵瀯鍥?
|
||||
## 📊 部署架构图
|
||||
|
||||
```
|
||||
鐢ㄦ埛娴忚<EFBFBD>鍣? 鈫?HTTP (鍏<>綉)
|
||||
CLB璐熻浇鍧囪 鍣?(8.140.53.236)
|
||||
鈫?HTTP (鍐呯綉)
|
||||
用户浏览器
|
||||
↓ HTTP (公网)
|
||||
CLB负载均衡器 (8.140.53.236)
|
||||
↓ HTTP (内网)
|
||||
前端Nginx (172.17.173.72:80)
|
||||
鈫?HTTP (鍐呯綉, /api/v1/)
|
||||
↓ HTTP (内网, /api/v1/)
|
||||
Node.js后端 (172.17.173.73:3001)
|
||||
鈫?HTTP (鍐呯綉, /api/dc/)
|
||||
↓ HTTP (内网, /api/dc/)
|
||||
Python服务 (172.17.173.66:8000)
|
||||
鈫?SQL (鍐呯綉)
|
||||
↓ SQL (内网)
|
||||
RDS PostgreSQL (pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432)
|
||||
```
|
||||
|
||||
@@ -242,12 +312,14 @@ RDS PostgreSQL (pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432)
|
||||
### 常见问题
|
||||
|
||||
**Q:我是新手,从哪里开始?**
|
||||
- A锛氱洿鎺ョ湅 [17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗圿(./17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md)
|
||||
- A:直接看 [17-完整部署实战手册-2025版](./17-完整部署实战手册-2025版.md)
|
||||
|
||||
**Q:只想更新代码,不想全部重新部署?**
|
||||
- A:看对应服务的操作手册(如 [12-Node.js后端-SAE部署操作手册](./12-Node.js后端-SAE部署操作手册.md))
|
||||
|
||||
**Q锛氬彧鎯虫洿鏂颁唬鐮侊紝涓嶆兂鍏ㄩ儴閲嶆柊閮ㄧ讲锛?*
|
||||
- A锛氱湅瀵瑰簲鏈嶅姟鐨勬搷浣滄墜鍐岋紙濡?[12-Node.js鍚庣<E98D9A>-SAE閮ㄧ讲鎿嶄綔鎵嬪唽](./12-Node.js鍚庣<E98D9A>-SAE閮ㄧ讲鎿嶄綔鎵嬪唽.md)锛?
|
||||
**Q:遇到报错了怎么办?**
|
||||
- A锛氬厛鐪?[17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗圿(./17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md) 绗?鑺?
|
||||
- A:先看 [17-完整部署实战手册-2025版](./17-完整部署实战手册-2025版.md) 第9节
|
||||
|
||||
**Q:忘记密码或IP地址了?**
|
||||
- A:查 [00-部署进度总览](./00-部署进度总览.md)
|
||||
|
||||
@@ -258,53 +330,76 @@ RDS PostgreSQL (pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432)
|
||||
|
||||
## 🎯 推荐阅读路径
|
||||
|
||||
### 璺<EFBFBD>緞1锛氶<EFBFBD>娆″畬鏁撮儴缃诧紙鏂版墜锛?
|
||||
```
|
||||
17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md锛堜富绾匡級
|
||||
鈫?00-閮ㄧ讲杩涘害鎬昏<E98EAC>.md锛堟煡璧勬簮淇℃伅锛? 鈫?15-Node.js鍚庣<E98D9A>-閮ㄧ讲鎴愬姛鎬荤粨.md锛堥亣鍒伴棶棰樻椂锛?```
|
||||
### 路径1:首次完整部署(新手)
|
||||
|
||||
**棰勮<E6A3B0>鏃堕棿**锛?.5 - 6灏忔椂
|
||||
```
|
||||
17-完整部署实战手册-2025版.md(主线)
|
||||
↓
|
||||
00-部署进度总览.md(查资源信息)
|
||||
↓
|
||||
15-Node.js后端-部署成功总结.md(遇到问题时)
|
||||
```
|
||||
|
||||
**预计时间**:3.5 - 6小时
|
||||
|
||||
---
|
||||
|
||||
### 璺<EFBFBD>緞2锛氭洿鏂版煇涓<EFBFBD>湇鍔★紙鐔熺粌锛?
|
||||
```
|
||||
瀵瑰簲鏈嶅姟鐨勬搷浣滄墜鍐岋紙濡?2-Node.js鍚庣<E98D9A>-SAE閮ㄧ讲鎿嶄綔鎵嬪唽.md锛? 鈫?00-閮ㄧ讲杩涘害鎬昏<E98EAC>.md锛堟煡ACR鍦板潃锛?```
|
||||
### 路径2:更新某个服务(熟练)
|
||||
|
||||
**棰勮<E6A3B0>鏃堕棿**锛?5 - 30鍒嗛挓
|
||||
```
|
||||
对应服务的操作手册(如12-Node.js后端-SAE部署操作手册.md)
|
||||
↓
|
||||
00-部署进度总览.md(查ACR地址)
|
||||
```
|
||||
|
||||
**预计时间**:15 - 30分钟
|
||||
|
||||
---
|
||||
|
||||
### 璺<EFBFBD>緞3锛氫慨鏀圭幆澧冨彉閲?
|
||||
```
|
||||
11-Node.js鍚庣<E98D9A>-SAE閮ㄧ讲閰嶇疆娓呭崟.md锛堢‘璁ゅ彉閲忓悕锛? 鈫?SAE鎺у埗鍙颁慨鏀? 鈫?閲嶅惎搴旂敤锛堜笉鏄<E7AC89>儴缃插簲鐢<E7B0B2>紒锛?```
|
||||
### 路径3:修改环境变量
|
||||
|
||||
**棰勮<E6A3B0>鏃堕棿**锛?鍒嗛挓
|
||||
```
|
||||
11-Node.js后端-SAE部署配置清单.md(确认变量名)
|
||||
↓
|
||||
SAE控制台修改
|
||||
↓
|
||||
重启应用(不是部署应用!)
|
||||
```
|
||||
|
||||
**预计时间**:5分钟
|
||||
|
||||
---
|
||||
|
||||
## 馃摓 鎶€鏈<E282AC>敮鎸?
|
||||
- **寮€鍙戝洟闃?*锛氬唴閮ㄦ枃妗d綋绯?- **闃块噷浜戝伐鍗?*锛歨ttps://workorder.console.aliyun.com/
|
||||
- **绱ф€ラ棶棰?*锛氬厛鏌ユ枃妗o紝99%鐨勯棶棰橀兘鏈夎В鍐虫柟妗?
|
||||
## 📞 技术支持
|
||||
|
||||
- **开发团队**:内部文档体系
|
||||
- **阿里云工单**:https://workorder.console.aliyun.com/
|
||||
- **紧急问题**:先查文档,99%的问题都有解决方案
|
||||
|
||||
---
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
**恭喜您找到了完整的部署文档!**
|
||||
|
||||
### 3涓<EFBFBD>牳蹇冩枃妗h<EFBFBD>浣忓畠浠?
|
||||
1. **鏈<>枃妗o紙README锛?* - 鎬诲叆鍙o紝蹇<E7B49D>€熷<E282AC>鑸?2. **[17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗圿(./17-瀹屾暣閮ㄧ讲瀹炴垬鎵嬪唽-2025鐗?md)** - 閮ㄧ讲蹇呯湅
|
||||
### 3个核心文档记住它们
|
||||
|
||||
1. **本文档(README)** - 总入口,快速导航
|
||||
2. **[17-完整部署实战手册-2025版](./17-完整部署实战手册-2025版.md)** - 部署必看
|
||||
3. **[00-部署进度总览](./00-部署进度总览.md)** - 信息速查
|
||||
|
||||
### 閮ㄧ讲鎴愬姛鐨?涓<>叧閿?
|
||||
1. 鉁?鐜<><E9909C>鍙橀噺鍚嶅繀椤荤簿纭<E7B0BF>尮閰嶄唬鐮?2. 鉁?鍖哄垎"閲嶅惎搴旂敤"鍜?閮ㄧ讲搴旂敤"
|
||||
3. 鉁?鎸夐『搴忛儴缃诧紝姣忔<E5A7A3>閮借<E996AE>楠岃瘉
|
||||
### 部署成功的3个关键
|
||||
|
||||
1. ✅ 环境变量名必须精确匹配代码
|
||||
2. ✅ 区分"重启应用"和"部署应用"
|
||||
3. ✅ 按顺序部署,每步都要验证
|
||||
|
||||
---
|
||||
|
||||
> **鏈€鍚庢洿鏂?*锛?025-12-25
|
||||
> **閮ㄧ讲鐘舵€?*锛氣渽 瀹屽叏鎴愬姛
|
||||
> **最后更新**:2025-12-25
|
||||
> **部署状态**:✅ 完全成功
|
||||
> **公网访问**:http://8.140.53.236/
|
||||
> **缁存姢浜哄憳**锛氬紑鍙戝洟闃?
|
||||
> **维护人员**:开发团队
|
||||
|
||||
🚀 **开始部署吧!祝您顺利!**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user