Files
AIclinicalresearch/docs/05-部署文档/README.md
HaHafeng 66255368b7 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
2026-01-16 13:42:10 +08:00

406 lines
12 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 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/
> **维护人员**:开发团队
🚀 **开始部署吧!祝您顺利!**