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
12 KiB
12 KiB
🚀 AI临床研究平台 - 部署文档中心
最后更新:2025-12-25
部署状态:✅ 完全成功,所有服务运行正常
公网访问:http://8.140.53.236/
🎯 快速开始(3分钟找到你需要的文档)
我要做什么?
| 你的目标 | 推荐文档 | 预计时间 |
|---|---|---|
| 🔥 日常更新代码(最常用) | 19-日常更新快速操作手册 ⭐⭐⭐⭐⭐ | 20-25分钟 |
| 🚀 完整部署系统 | 17-完整部署实战手册-2025版 | 3.5-6小时 |
| 🔍 查询IP/密码等信息 | 00-部署进度总览 | 1分钟 |
| 📚 学习部署原理 | 01-快速部署SOP-零基础版 | 4小时 |
| 🐍 部署Python服务 | 09-Python微服务-SAE部署操作手册 | 35分钟 |
| 🟢 部署Node.js后端 | 12-Node.js后端-SAE部署操作手册 | 50分钟 |
| 🎨 部署前端Nginx | 07-前端Nginx-SAE部署操作手册 | 30分钟 |
| ❌ 遇到问题排查 | 15-Node.js后端-部署成功总结 | 按需 |
| 📖 不知道看哪个文档 | 18-部署文档使用指南 | 5分钟 |
🔥 日常更新操作(高频使用)⭐⭐⭐⭐⭐
19-日常更新快速操作手册.md
⚡ 最常用的文档!适合日常功能更新和快速迭代!
为什么推荐:
- ✅ 短小精悍(670行),关键信息密集
- ✅ 可直接复制执行的命令
- ✅ 包含一键更新脚本
- ✅ 适合团队协作和AI助手使用
包含内容:
- 更新Node.js后端(20-25分钟)- 最常用!
编译 → 构建镜像 → 推送ACR → SAE部署 → 验证 - 更新前端Nginx(15-20分钟)
- 更新Python服务(30分钟)
- 修改环境变量(5分钟)- 高频操作!
- 查看日志(1分钟)
- 回滚操作(7分钟)
- 一键更新脚本(自动化)
适合人群:
- 🎯 日常开发迭代的开发人员
- 🎯 需要快速部署更新的运维人员
- 🎯 团队新成员快速上手
- 🎯 AI助手执行部署任务
快速示例:
# 更新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️⃣ 完整部署实战手册(强烈推荐)⭐⭐⭐⭐⭐
为什么推荐:
- ✅ 基于2025-12-25实际部署经历编写
- ✅ 包含所有遇到的问题及解决方案
- ✅ 1800行详细步骤,可直接复制命令
- ✅ 跟着做就能成功!
包含内容:
- 完整部署流程(VPC→RDS→Python→Node.js→前端→CLB)
- 4个关键问题修复(环境变量、config、pino-pretty、ES Module)
- 关键经验总结(重启vs部署、环境变量命名等)
- 快速命令参考
- 完整链路测试
适合人群:
- 🎯 要快速部署的人
- 🎯 重新部署或迁移的人
- 🎯 想了解实际坑点的人
2️⃣ 部署进度总览(日常必备)⭐⭐⭐⭐⭐
为什么推荐:
- ✅ 所有资源信息的索引中心
- ✅ 快速查询IP、密码、环境变量
- ✅ 文档导航指南
- ✅ 部署状态追踪
包含内容:
- SAE应用内网IP地址
- RDS数据库连接信息
- OSS AccessKey
- ACR镜像仓库地址
- 环境变量配置清单
- 快速命令参考
适合场景:
- 🔍 忘记IP地址
- 🔍 忘记数据库密码
- 🔍 需要查询资源配置
- 🔍 需要找相关文档
3️⃣ 部署文档使用指南⭐⭐⭐⭐
为什么推荐:
- ✅ 快速导航,找到需要的文档
- ✅ 不同场景的阅读路径
- ✅ 关键信息速查表
- ✅ 最佳实践建议
适合人群:
- 📖 不知道从哪个文档开始看
- 📖 想快速找到特定信息
- 📖 想了解文档结构
📁 完整文档列表
🎯 核心指南(3个)
- README.md - 本文档,总入口
- 00-部署进度总览.md - 资源速查、文档索引
- 18-部署文档使用指南.md - 快速导航
🚀 完整部署(2个)
- 17-完整部署实战手册-2025版.md - ⭐ 实战版(推荐)
- 01-快速部署SOP-零基础版.md - 学习版
🔧 服务部署手册(4个)
- 09-Python微服务-SAE部署操作手册.md
- 12-Node.js后端-SAE部署操作手册.md
- 07-前端Nginx-SAE部署操作手册.md
- 08-PostgreSQL数据库部署操作手册.md
📖 技术详解(4个)
- 04-Python微服务-SAE容器部署指南.md
- 05-Node.js后端-SAE容器部署指南.md
- 06-前端Nginx-SAE容器部署指南.md
- 10-Node.js后端-Docker镜像构建手册.md
📝 配置清单(1个)
- 11-Node.js后端-SAE部署配置清单.md - 21个环境变量详解
🐛 问题修复(4个)
- 13-Node.js后端-镜像修复记录.md - config目录问题
- 14-Node.js后端-pino-pretty问题修复.md - 日志配置问题
- 15-Node.js后端-部署成功总结.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. 环境变量名必须精确
❌ 错误配置:
PYTHON_SERVICE_URL=http://172.17.173.66:8000
✅ 正确配置:
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'
解决:
# ✅ 必须添加
COPY config ./config
4. 使用VPC地址拉取镜像(省钱)
SAE拉取镜像时:
# ✅ 正确(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
docker login --username=gofeng117@163.com \
--password=fengzhibo117 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
构建并推送镜像
# 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
健康检查
# 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版
Q:只想更新代码,不想全部重新部署?
- A:看对应服务的操作手册(如 12-Node.js后端-SAE部署操作手册)
Q:遇到报错了怎么办?
- A:先看 17-完整部署实战手册-2025版 第9节
Q:忘记密码或IP地址了?
- A:查 00-部署进度总览
Q:不知道看哪个文档?
- A:看 18-部署文档使用指南
🎯 推荐阅读路径
路径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个核心文档记住它们
- 本文档(README) - 总入口,快速导航
- 17-完整部署实战手册-2025版 - 部署必看
- 00-部署进度总览 - 信息速查
部署成功的3个关键
- ✅ 环境变量名必须精确匹配代码
- ✅ 区分"重启应用"和"部署应用"
- ✅ 按顺序部署,每步都要验证
最后更新:2025-12-25
部署状态:✅ 完全成功
公网访问:http://8.140.53.236/
维护人员:开发团队
🚀 开始部署吧!祝您顺利!