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
406 lines
12 KiB
Markdown
406 lines
12 KiB
Markdown
# 🚀 AI临床研究平台 - 部署文档中心
|
||
|
||
> **最后更新**:2025-12-25
|
||
> **部署状态**:✅ 完全成功,所有服务运行正常
|
||
> **公网访问**:http://8.140.53.236/
|
||
|
||
---
|
||
|
||
## 🎯 快速开始(3分钟找到你需要的文档)
|
||
|
||
### 我要做什么?
|
||
|
||
| 你的目标 | 推荐文档 | 预计时间 |
|
||
|---------|---------|---------|
|
||
| 🔥 **日常更新代码(最常用)** | [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分钟 |
|
||
| ❌ **遇到问题排查** | [15-Node.js后端-部署成功总结](./15-Node.js后端-部署成功总结.md) | 按需 |
|
||
| 📖 **不知道看哪个文档** | [18-部署文档使用指南](./18-部署文档使用指南.md) | 5分钟 |
|
||
|
||
---
|
||
|
||
## 🔥 日常更新操作(高频使用)⭐⭐⭐⭐⭐
|
||
|
||
### [19-日常更新快速操作手册.md](./19-日常更新快速操作手册.md)
|
||
|
||
**⚡ 最常用的文档!适合日常功能更新和快速迭代!**
|
||
|
||
**为什么推荐**:
|
||
- ✅ 短小精悍(670行),关键信息密集
|
||
- ✅ 可直接复制执行的命令
|
||
- ✅ 包含一键更新脚本
|
||
- ✅ 适合团队协作和AI助手使用
|
||
|
||
**包含内容**:
|
||
- **更新Node.js后端**(20-25分钟)- 最常用!
|
||
```bash
|
||
编译 → 构建镜像 → 推送ACR → SAE部署 → 验证
|
||
```
|
||
- **更新前端Nginx**(15-20分钟)
|
||
- **更新Python服务**(30分钟)
|
||
- **修改环境变量**(5分钟)- 高频操作!
|
||
- **查看日志**(1分钟)
|
||
- **回滚操作**(7分钟)
|
||
- **一键更新脚本**(自动化)
|
||
|
||
**适合人群**:
|
||
- 🎯 日常开发迭代的开发人员
|
||
- 🎯 需要快速部署更新的运维人员
|
||
- 🎯 团队新成员快速上手
|
||
- 🎯 AI助手执行部署任务
|
||
|
||
**快速示例**:
|
||
```bash
|
||
# 更新Node.js后端到v1.5
|
||
cd backend
|
||
npm run build
|
||
docker build -t backend-service:v1.5 .
|
||
docker push crpi-xxx.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.5
|
||
# 然后在SAE控制台部署新版本
|
||
```
|
||
|
||
---
|
||
|
||
## ⭐ 核心文档(新手必看)
|
||
|
||
### 1️⃣ 完整部署实战手册(强烈推荐)⭐⭐⭐⭐⭐
|
||
|
||
**[17-完整部署实战手册-2025版.md](./17-完整部署实战手册-2025版.md)**
|
||
|
||
**为什么推荐**:
|
||
- ✅ 基于2025-12-25实际部署经历编写
|
||
- ✅ 包含所有遇到的问题及解决方案
|
||
- ✅ 1800行详细步骤,可直接复制命令
|
||
- ✅ 跟着做就能成功!
|
||
|
||
**包含内容**:
|
||
- 完整部署流程(VPC→RDS→Python→Node.js→前端→CLB)
|
||
- 4个关键问题修复(环境变量、config、pino-pretty、ES Module)
|
||
- 关键经验总结(重启vs部署、环境变量命名等)
|
||
- 快速命令参考
|
||
- 完整链路测试
|
||
|
||
**适合人群**:
|
||
- 🎯 要快速部署的人
|
||
- 🎯 重新部署或迁移的人
|
||
- 🎯 想了解实际坑点的人
|
||
|
||
---
|
||
|
||
### 2️⃣ 部署进度总览(日常必备)⭐⭐⭐⭐⭐
|
||
|
||
**[00-部署进度总览.md](./00-部署进度总览.md)**
|
||
|
||
**为什么推荐**:
|
||
- ✅ 所有资源信息的索引中心
|
||
- ✅ 快速查询IP、密码、环境变量
|
||
- ✅ 文档导航指南
|
||
- ✅ 部署状态追踪
|
||
|
||
**包含内容**:
|
||
- SAE应用内网IP地址
|
||
- RDS数据库连接信息
|
||
- OSS AccessKey
|
||
- ACR镜像仓库地址
|
||
- 环境变量配置清单
|
||
- 快速命令参考
|
||
|
||
**适合场景**:
|
||
- 🔍 忘记IP地址
|
||
- 🔍 忘记数据库密码
|
||
- 🔍 需要查询资源配置
|
||
- 🔍 需要找相关文档
|
||
|
||
---
|
||
|
||
### 3️⃣ 部署文档使用指南⭐⭐⭐⭐
|
||
|
||
**[18-部署文档使用指南.md](./18-部署文档使用指南.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个)
|
||
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个)
|
||
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后端-部署成功总结.md](./15-Node.js后端-部署成功总结.md) - ⭐ 完整问题汇总
|
||
4. [16-前端Nginx-部署成功总结.md](./16-前端Nginx-部署成功总结.md) - 前端部署总结
|
||
|
||
---
|
||
|
||
## 🎉 部署成功证明
|
||
|
||
### 当前部署状态(2025-12-25)
|
||
|
||
| 服务 | 状态 | 内网地址 | 公网访问 |
|
||
|------|------|---------|---------|
|
||
| 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/` |
|
||
|
||
### 功能验证
|
||
|
||
- ✅ 前端页面正常访问
|
||
- ✅ 用户登录功能正常
|
||
- ✅ 文献筛查模块正常
|
||
- ✅ 数据清洗工具C的7大功能全部正常
|
||
- ✅ 文件上传功能正常
|
||
- ✅ AI对话功能正常
|
||
- ✅ 数据库连接正常
|
||
- ✅ Python服务调用正常
|
||
- ✅ 响应时间 < 1秒
|
||
|
||
---
|
||
|
||
## ⚠️ 关键经验(必读)
|
||
|
||
### 1. 环境变量名必须精确
|
||
|
||
**❌ 错误配置**:
|
||
```bash
|
||
PYTHON_SERVICE_URL=http://172.17.173.66:8000
|
||
```
|
||
|
||
**✅ 正确配置**:
|
||
```bash
|
||
EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
|
||
```
|
||
|
||
**教训**:代码中使用的是 `EXTRACTION_SERVICE_URL`,环境变量名一个字母都不能错!
|
||
|
||
---
|
||
|
||
### 2. 区分"重启应用"和"部署应用"
|
||
|
||
| 操作 | 用途 | IP是否变 | 何时使用 |
|
||
|------|------|---------|---------|
|
||
| **重启应用** | 重启容器 | ❌ 不会变 | 修改环境变量、调整配置 |
|
||
| **部署应用** | 更新镜像 | ✅ 会变更 | 更新代码、更新镜像版本 |
|
||
|
||
**教训**:只修改环境变量时,用"重启应用",避免IP变更导致其他服务配置失效!
|
||
|
||
---
|
||
|
||
### 3. Dockerfile必须包含config目录
|
||
|
||
**问题**:
|
||
```
|
||
ENOENT: no such file or directory, open '/app/config/agents.yaml'
|
||
```
|
||
|
||
**解决**:
|
||
```dockerfile
|
||
# ✅ 必须添加
|
||
COPY config ./config
|
||
```
|
||
|
||
---
|
||
|
||
### 4. 使用VPC地址拉取镜像(省钱)
|
||
|
||
**SAE拉取镜像时**:
|
||
```bash
|
||
# ✅ 正确(VPC地址,免流量费)
|
||
crpi-xxx-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
|
||
# ❌ 不推荐(公网地址,收流量费)
|
||
crpi-xxx.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 快速命令参考
|
||
|
||
### 登录ACR
|
||
```bash
|
||
docker login --username=gofeng117@163.com \
|
||
--password=fengzhibo117 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
|
||
```
|
||
|
||
### 构建并推送镜像
|
||
```bash
|
||
# Node.js后端
|
||
cd backend
|
||
npm run build
|
||
docker build -t backend-service:v1.3 .
|
||
docker tag backend-service:v1.3 \
|
||
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3
|
||
```
|
||
|
||
### 健康检查
|
||
```bash
|
||
# Python服务
|
||
curl http://172.17.173.66:8000/api/health
|
||
|
||
# Node.js后端
|
||
curl http://172.17.173.73:3001/health
|
||
|
||
# 前端Nginx
|
||
curl http://172.17.173.72:80/health
|
||
|
||
# 公网访问
|
||
curl http://8.140.53.236/
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 部署架构图
|
||
|
||
```
|
||
用户浏览器
|
||
↓ HTTP (公网)
|
||
CLB负载均衡器 (8.140.53.236)
|
||
↓ HTTP (内网)
|
||
前端Nginx (172.17.173.72:80)
|
||
↓ HTTP (内网, /api/v1/)
|
||
Node.js后端 (172.17.173.73:3001)
|
||
↓ HTTP (内网, /api/dc/)
|
||
Python服务 (172.17.173.66:8000)
|
||
↓ SQL (内网)
|
||
RDS PostgreSQL (pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432)
|
||
```
|
||
|
||
---
|
||
|
||
## 🆘 需要帮助?
|
||
|
||
### 常见问题
|
||
|
||
**Q:我是新手,从哪里开始?**
|
||
- A:直接看 [17-完整部署实战手册-2025版](./17-完整部署实战手册-2025版.md)
|
||
|
||
**Q:只想更新代码,不想全部重新部署?**
|
||
- A:看对应服务的操作手册(如 [12-Node.js后端-SAE部署操作手册](./12-Node.js后端-SAE部署操作手册.md))
|
||
|
||
**Q:遇到报错了怎么办?**
|
||
- A:先看 [17-完整部署实战手册-2025版](./17-完整部署实战手册-2025版.md) 第9节
|
||
|
||
**Q:忘记密码或IP地址了?**
|
||
- A:查 [00-部署进度总览](./00-部署进度总览.md)
|
||
|
||
**Q:不知道看哪个文档?**
|
||
- A:看 [18-部署文档使用指南](./18-部署文档使用指南.md)
|
||
|
||
---
|
||
|
||
## 🎯 推荐阅读路径
|
||
|
||
### 路径1:首次完整部署(新手)
|
||
|
||
```
|
||
17-完整部署实战手册-2025版.md(主线)
|
||
↓
|
||
00-部署进度总览.md(查资源信息)
|
||
↓
|
||
15-Node.js后端-部署成功总结.md(遇到问题时)
|
||
```
|
||
|
||
**预计时间**:3.5 - 6小时
|
||
|
||
---
|
||
|
||
### 路径2:更新某个服务(熟练)
|
||
|
||
```
|
||
对应服务的操作手册(如12-Node.js后端-SAE部署操作手册.md)
|
||
↓
|
||
00-部署进度总览.md(查ACR地址)
|
||
```
|
||
|
||
**预计时间**:15 - 30分钟
|
||
|
||
---
|
||
|
||
### 路径3:修改环境变量
|
||
|
||
```
|
||
11-Node.js后端-SAE部署配置清单.md(确认变量名)
|
||
↓
|
||
SAE控制台修改
|
||
↓
|
||
重启应用(不是部署应用!)
|
||
```
|
||
|
||
**预计时间**:5分钟
|
||
|
||
---
|
||
|
||
## 📞 技术支持
|
||
|
||
- **开发团队**:内部文档体系
|
||
- **阿里云工单**:https://workorder.console.aliyun.com/
|
||
- **紧急问题**:先查文档,99%的问题都有解决方案
|
||
|
||
---
|
||
|
||
## 🎉 总结
|
||
|
||
**恭喜您找到了完整的部署文档!**
|
||
|
||
### 3个核心文档记住它们
|
||
|
||
1. **本文档(README)** - 总入口,快速导航
|
||
2. **[17-完整部署实战手册-2025版](./17-完整部署实战手册-2025版.md)** - 部署必看
|
||
3. **[00-部署进度总览](./00-部署进度总览.md)** - 信息速查
|
||
|
||
### 部署成功的3个关键
|
||
|
||
1. ✅ 环境变量名必须精确匹配代码
|
||
2. ✅ 区分"重启应用"和"部署应用"
|
||
3. ✅ 按顺序部署,每步都要验证
|
||
|
||
---
|
||
|
||
> **最后更新**:2025-12-25
|
||
> **部署状态**:✅ 完全成功
|
||
> **公网访问**:http://8.140.53.236/
|
||
> **维护人员**:开发团队
|
||
|
||
🚀 **开始部署吧!祝您顺利!**
|
||
|