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

12 KiB
Raw Blame History

🚀 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部署 → 验证
    
  • 更新前端Nginx15-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 完整部署实战手册(强烈推荐)

17-完整部署实战手册-2025版.md

为什么推荐

  • 基于2025-12-25实际部署经历编写
  • 包含所有遇到的问题及解决方案
  • 1800行详细步骤可直接复制命令
  • 跟着做就能成功!

包含内容

  • 完整部署流程VPC→RDS→Python→Node.js→前端→CLB
  • 4个关键问题修复环境变量、config、pino-pretty、ES Module
  • 关键经验总结重启vs部署、环境变量命名等
  • 快速命令参考
  • 完整链路测试

适合人群

  • 🎯 要快速部署的人
  • 🎯 重新部署或迁移的人
  • 🎯 想了解实际坑点的人

2 部署进度总览(日常必备)

00-部署进度总览.md

为什么推荐

  • 所有资源信息的索引中心
  • 快速查询IP、密码、环境变量
  • 文档导航指南
  • 部署状态追踪

包含内容

  • SAE应用内网IP地址
  • RDS数据库连接信息
  • OSS AccessKey
  • ACR镜像仓库地址
  • 环境变量配置清单
  • 快速命令参考

适合场景

  • 🔍 忘记IP地址
  • 🔍 忘记数据库密码
  • 🔍 需要查询资源配置
  • 🔍 需要找相关文档

3 部署文档使用指南

18-部署文档使用指南.md

为什么推荐

  • 快速导航,找到需要的文档
  • 不同场景的阅读路径
  • 关键信息速查表
  • 最佳实践建议

适合人群

  • 📖 不知道从哪个文档开始看
  • 📖 想快速找到特定信息
  • 📖 想了解文档结构

📁 完整文档列表

🎯 核心指南3个

  1. README.md - 本文档,总入口
  2. 00-部署进度总览.md - 资源速查、文档索引
  3. 18-部署文档使用指南.md - 快速导航

🚀 完整部署2个

  1. 17-完整部署实战手册-2025版.md - 实战版(推荐)
  2. 01-快速部署SOP-零基础版.md - 学习版

🔧 服务部署手册4个

  1. 09-Python微服务-SAE部署操作手册.md
  2. 12-Node.js后端-SAE部署操作手册.md
  3. 07-前端Nginx-SAE部署操作手册.md
  4. 08-PostgreSQL数据库部署操作手册.md

📖 技术详解4个

  1. 04-Python微服务-SAE容器部署指南.md
  2. 05-Node.js后端-SAE容器部署指南.md
  3. 06-前端Nginx-SAE容器部署指南.md
  4. 10-Node.js后端-Docker镜像构建手册.md

📝 配置清单1个

  1. 11-Node.js后端-SAE部署配置清单.md - 21个环境变量详解

🐛 问题修复4个

  1. 13-Node.js后端-镜像修复记录.md - config目录问题
  2. 14-Node.js后端-pino-pretty问题修复.md - 日志配置问题
  3. 15-Node.js后端-部署成功总结.md - 完整问题汇总
  4. 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我是新手从哪里开始

Q只想更新代码不想全部重新部署

Q遇到报错了怎么办

Q忘记密码或IP地址了

Q不知道看哪个文档


🎯 推荐阅读路径

路径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分钟


📞 技术支持


🎉 总结

恭喜您找到了完整的部署文档!

3个核心文档记住它们

  1. 本文档README - 总入口,快速导航
  2. 17-完整部署实战手册-2025版 - 部署必看
  3. 00-部署进度总览 - 信息速查

部署成功的3个关键

  1. 环境变量名必须精确匹配代码
  2. 区分"重启应用"和"部署应用"
  3. 按顺序部署,每步都要验证

最后更新2025-12-25
部署状态 完全成功
公网访问http://8.140.53.236/
维护人员:开发团队

🚀 开始部署吧!祝您顺利!