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,75 +1,75 @@
|
||||
# REDCap模块文档导航
|
||||
|
||||
**最后更新:** 2026-01-02
|
||||
**妯″潡绫诲瀷锛?* 绗<>笁鏂圭郴缁熼泦鎴愪笌浜屾<E6B59C>寮€鍙?
|
||||
**模块类型:** 第三方系统集成与二次开发
|
||||
**当前状态:** 本地Docker环境已部署,API Adapter开发中
|
||||
|
||||
---
|
||||
|
||||
## 📚 文档体系说明
|
||||
|
||||
REDCap鏄<EFBFBD>竴涓<EFBFBD>垚鐔熺殑绗<EFBFBD>笁鏂笶DC锛堢數瀛愭暟鎹<EFBFBD>噰闆嗭級绯荤粺锛屾湰妯″潡鐨勫伐浣滈噸鐐规槸锛?
|
||||
1. **閮ㄧ讲涓庨厤缃?*锛氬湪涓嶅悓鐜<E68293><E9909C>锛堝紑鍙?鐢熶骇/鍖婚櫌锛夐儴缃睷EDCap
|
||||
REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块的工作重点是:
|
||||
1. **部署与配置**:在不同环境(开发/生产/医院)部署REDCap
|
||||
2. **API对接**:通过REDCap API与IIT Manager Agent集成
|
||||
3. **杩愮淮绠$悊**锛氭棩甯哥淮鎶ゃ€佸<E282AC>浠姐€佸崌绾?
|
||||
3. **运维管理**:日常维护、备份、升级
|
||||
|
||||
鍥犳<EFBFBD>锛屾枃妗f灦鏋勪笌鑷<EFBFBD>爺妯″潡锛圓SL銆丏C锛変笉鍚岋紝鏇翠晶閲嶉儴缃蹭笌闆嗘垚銆?
|
||||
因此,文档架构与自研模块(ASL、DC)不同,更侧重部署与集成。
|
||||
|
||||
---
|
||||
|
||||
## 📖 文档目录
|
||||
|
||||
### 1锔忊儯 **绯荤粺姒傝<E5A792>涓庡喅绛?*
|
||||
### 1️⃣ **系统概览与决策**
|
||||
|
||||
#### [01-REDCap系统介绍与选型说明.md](./01-REDCap系统介绍与选型说明.md)
|
||||
- REDCap是什么?
|
||||
- 涓轰粈涔堥€夋嫨REDCap锛?
|
||||
- REDCap鐨勬牳蹇冨姛鑳?
|
||||
- 为什么选择REDCap?
|
||||
- REDCap的核心功能
|
||||
- REDCap在IIT Manager中的角色
|
||||
|
||||
#### [02-REDCap瀵规帴鎬讳綋鏂规<EFBFBD>.md](./02-REDCap瀵规帴鎬讳綋鏂规<EFBFBD>.md) 鉁?
|
||||
- 鎶€鏈<EFBFBD>灦鏋勮<EFBFBD>璁?
|
||||
#### [02-REDCap对接总体方案.md](./02-REDCap对接总体方案.md) ✅
|
||||
- 技术架构设计
|
||||
- API对接方案
|
||||
- 数据流转方案
|
||||
- 瀹夊叏鎬ц<EFBFBD>璁?
|
||||
- 安全性设计
|
||||
|
||||
#### [03-REDCap瀵规帴椋庨櫓璇勪及涓庢妧鏈<EFBFBD>寫鎴樺垎鏋?md](./03-REDCap瀵规帴椋庨櫓璇勪及涓庢妧鏈<E5A6A7>寫鎴樺垎鏋?md) 鉁?
|
||||
- 鎶€鏈<EFBFBD><EFBFBD>闄╄瘎浼?
|
||||
#### [03-REDCap对接风险评估与技术挑战分析.md](./03-REDCap对接风险评估与技术挑战分析.md) ✅
|
||||
- 技术风险评估
|
||||
- 实施难度分析
|
||||
- 替代方案对比
|
||||
- 鏈€缁堝喅绛栧缓璁?
|
||||
- 最终决策建议
|
||||
|
||||
#### [04-鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲鍐崇瓥鎶ュ憡_ECS_vs_SAE.md](./04-鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲鍐崇瓥鎶ュ憡_ECS_vs_SAE.md) 鉁?
|
||||
#### [04-生产环境部署决策报告_ECS_vs_SAE.md](./04-生产环境部署决策报告_ECS_vs_SAE.md) ✅
|
||||
- ECS vs SAE深度对比
|
||||
- 成本分析
|
||||
- 鎶€鏈<EFBFBD>彲琛屾€?
|
||||
- 技术可行性
|
||||
- 最终选型:ECS
|
||||
|
||||
---
|
||||
|
||||
### 2锔忊儯 **閮ㄧ讲涓庨厤缃?*
|
||||
### 2️⃣ **部署与配置**
|
||||
|
||||
#### [10-鏈<EFBFBD>湴寮€鍙戠幆澧冮儴缃插畬鍏ㄦ寚鍗?md](./10-鏈<>湴寮€鍙戠幆澧冮儴缃插畬鍏ㄦ寚鍗?md) 猸?
|
||||
- **蹇<EFBFBD>€熷紑濮?*锛堥€傚悎棣栨<E6A3A3>閮ㄧ讲锛?
|
||||
#### [10-本地开发环境部署完全指南.md](./10-本地开发环境部署完全指南.md) ⭐
|
||||
- **快速开始**(适合首次部署)
|
||||
- Docker环境准备
|
||||
- 涓€閿<EFBFBD>儴缃茶剼鏈<EFBFBD>娇鐢?
|
||||
- 鍒濆<EFBFBD>鍖栭厤缃?
|
||||
- 一键部署脚本使用
|
||||
- 初始化配置
|
||||
- 验证测试
|
||||
- **关键参考文档!**
|
||||
|
||||
#### [11-鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲瀹屽叏鎸囧崡_闃块噷浜慐CS.md](./11-鐢熶骇鐜<E9AA87><E9909C>閮ㄧ讲瀹屽叏鎸囧崡_闃块噷浜慐CS.md) 猸?
|
||||
- **ECS鏈嶅姟鍣ㄩ厤缃?*
|
||||
- Docker闀滃儚鏋勫缓涓庢帹閫?
|
||||
#### [11-生产环境部署完全指南_阿里云ECS.md](./11-生产环境部署完全指南_阿里云ECS.md) ⭐
|
||||
- **ECS服务器配置**
|
||||
- Docker镜像构建与推送
|
||||
- RDS MySQL配置
|
||||
- 域名与SSL证书
|
||||
- 瀹夊叏缁勪笌闃茬伀澧?
|
||||
- 鐢熶骇鐜<EFBFBD><EFBFBD>妫€鏌ユ竻鍗?
|
||||
- **鐢熶骇閮ㄧ讲蹇呰<EFBFBD>锛?*
|
||||
- 安全组与防火墙
|
||||
- 生产环境检查清单
|
||||
- **生产部署必读!**
|
||||
|
||||
#### [12-鍖婚櫌绉佹湁鍖栭儴缃叉寚鍗?md](./12-鍖婚櫌绉佹湁鍖栭儴缃叉寚鍗?md) 馃彞
|
||||
- 鍖婚櫌鏈嶅姟鍣ㄧ幆澧冭<EFBFBD>姹?
|
||||
#### [12-医院私有化部署指南.md](./12-医院私有化部署指南.md) 🏥
|
||||
- 医院服务器环境要求
|
||||
- 内网部署方案
|
||||
- 鏁版嵁瀹夊叏涓庡悎瑙?
|
||||
- 数据安全与合规
|
||||
- 技术支持与培训
|
||||
|
||||
#### [13-部署问题排查手册.md](./13-部署问题排查手册.md) 🔧
|
||||
@@ -80,31 +80,31 @@ REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块
|
||||
|
||||
---
|
||||
|
||||
### 3锔忊儯 **閰嶇疆涓庣<E6B693>鐞?*
|
||||
### 3️⃣ **配置与管理**
|
||||
|
||||
#### [20-REDCap系统配置手册.md](./20-REDCap系统配置手册.md)
|
||||
- 鍩虹<EFBFBD>閰嶇疆锛圔ase URL銆侀偖浠舵湇鍔$瓑锛?
|
||||
- 鐢ㄦ埛涓庢潈闄愮<EFBFBD>鐞?
|
||||
- 椤圭洰鍒涘缓涓庨厤缃?
|
||||
- 基础配置(Base URL、邮件服务等)
|
||||
- 用户与权限管理
|
||||
- 项目创建与配置
|
||||
- 数据字典设计
|
||||
- 表单设计
|
||||
|
||||
#### [21-REDCap日常运维手册.md](./21-REDCap日常运维手册.md)
|
||||
- 日常维护任务
|
||||
- 澶囦唤涓庢仮澶?
|
||||
- 备份与恢复
|
||||
- 性能监控
|
||||
- 日志管理
|
||||
- 故障处理流程
|
||||
|
||||
#### [22-REDCap升级指南.md](./22-REDCap升级指南.md)
|
||||
- 版本升级流程
|
||||
- 鏁版嵁搴撹縼绉?
|
||||
- 鍏煎<EFBFBD>鎬ф祴璇?
|
||||
- 数据库迁移
|
||||
- 兼容性测试
|
||||
- 回滚方案
|
||||
|
||||
---
|
||||
|
||||
### 4锔忊儯 **API瀵规帴涓庡紑鍙?*
|
||||
### 4️⃣ **API对接与开发**
|
||||
|
||||
#### [30-REDCap_API使用指南.md](./30-REDCap_API使用指南.md)
|
||||
- REDCap API概述
|
||||
@@ -118,21 +118,21 @@ REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块
|
||||
- 接口设计
|
||||
- 错误处理
|
||||
|
||||
#### [32-REDCap_API_Adapter寮€鍙戞寚鍗?md](./32-REDCap_API_Adapter寮€鍙戞寚鍗?md)
|
||||
#### [32-REDCap_API_Adapter开发指南.md](./32-REDCap_API_Adapter开发指南.md)
|
||||
- Adapter架构设计
|
||||
- 代码结构
|
||||
- 寮€鍙戣<EFBFBD>鑼?
|
||||
- 开发规范
|
||||
- 测试方案
|
||||
|
||||
#### [33-REDCap浜屾<EFBFBD>寮€鍙戞繁搴︽寚鍗?md](./33-REDCap浜屾<EFBFBD>寮€鍙戞繁搴︽寚鍗?md) 鉁?
|
||||
- External Modules寮€鍙?
|
||||
#### [33-REDCap二次开发深度指南.md](./33-REDCap二次开发深度指南.md) ✅
|
||||
- External Modules开发
|
||||
- Hooks机制
|
||||
- 鎻掍欢寮€鍙?
|
||||
- 鏈€浣冲疄璺?
|
||||
- 插件开发
|
||||
- 最佳实践
|
||||
|
||||
---
|
||||
|
||||
### 5锔忊儯 **鍙傝€冭祫鏂?*
|
||||
### 5️⃣ **参考资料**
|
||||
|
||||
#### [40-REDCap官方资源索引.md](./40-REDCap官方资源索引.md)
|
||||
- 官方文档链接
|
||||
@@ -148,46 +148,46 @@ REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块
|
||||
|
||||
---
|
||||
|
||||
## 馃幆 蹇<>€熷叆鍙?
|
||||
## 🎯 快速入口
|
||||
|
||||
### 我想部署REDCap
|
||||
- **鏈<EFBFBD>湴寮€鍙戞祴璇?* 鈫?[10-鏈<>湴寮€鍙戠幆澧冮儴缃插畬鍏ㄦ寚鍗?md](./10-鏈<>湴寮€鍙戠幆澧冮儴缃插畬鍏ㄦ寚鍗?md)
|
||||
- **闃块噷浜戠敓浜х幆澧?* 鈫?[11-鐢熶骇鐜<E9AA87><E9909C>閮ㄧ讲瀹屽叏鎸囧崡_闃块噷浜慐CS.md](./11-鐢熶骇鐜<E9AA87><E9909C>閮ㄧ讲瀹屽叏鎸囧崡_闃块噷浜慐CS.md)
|
||||
- **鍖婚櫌绉佹湁鍖?* 鈫?[12-鍖婚櫌绉佹湁鍖栭儴缃叉寚鍗?md](./12-鍖婚櫌绉佹湁鍖栭儴缃叉寚鍗?md)
|
||||
- **本地开发测试** → [10-本地开发环境部署完全指南.md](./10-本地开发环境部署完全指南.md)
|
||||
- **阿里云生产环境** → [11-生产环境部署完全指南_阿里云ECS.md](./11-生产环境部署完全指南_阿里云ECS.md)
|
||||
- **医院私有化** → [12-医院私有化部署指南.md](./12-医院私有化部署指南.md)
|
||||
|
||||
### 鎴戦亣鍒伴儴缃查棶棰?
|
||||
- **闂<EFBFBD><EFBFBD>鎺掓煡** 鈫?[13-閮ㄧ讲闂<EFBFBD><EFBFBD>鎺掓煡鎵嬪唽.md](./13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md)
|
||||
- **鍘嗗彶闂<EFBFBD><EFBFBD>璁板綍** 鈫?[13-閮ㄧ讲闂<EFBFBD><EFBFBD>鎺掓煡鎵嬪唽.md](./13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md)
|
||||
### 我遇到部署问题
|
||||
- **问题排查** → [13-部署问题排查手册.md](./13-部署问题排查手册.md)
|
||||
- **历史问题记录** → [13-部署问题排查手册.md](./13-部署问题排查手册.md)
|
||||
|
||||
### 鎴戣<EFBFBD>杩涜<EFBFBD>API寮€鍙?
|
||||
- **浜嗚ВAPI** 鈫?[30-REDCap_API浣跨敤鎸囧崡.md](./30-REDCap_API浣跨敤鎸囧崡.md)
|
||||
- **瀵规帴璁捐<EFBFBD>** 鈫?[31-IIT_Manager涓嶳EDCap瀵规帴璁捐<EFBFBD>.md](./31-IIT_Manager涓嶳EDCap瀵规帴璁捐<EFBFBD>.md)
|
||||
- **寮€鍙慉dapter** 鈫?[32-REDCap_API_Adapter寮€鍙戞寚鍗?md](./32-REDCap_API_Adapter寮€鍙戞寚鍗?md)
|
||||
### 我要进行API开发
|
||||
- **了解API** → [30-REDCap_API使用指南.md](./30-REDCap_API使用指南.md)
|
||||
- **对接设计** → [31-IIT_Manager与REDCap对接设计.md](./31-IIT_Manager与REDCap对接设计.md)
|
||||
- **开发Adapter** → [32-REDCap_API_Adapter开发指南.md](./32-REDCap_API_Adapter开发指南.md)
|
||||
|
||||
### 我要日常运维
|
||||
- **绯荤粺閰嶇疆** 鈫?[20-REDCap绯荤粺閰嶇疆鎵嬪唽.md](./20-REDCap绯荤粺閰嶇疆鎵嬪唽.md)
|
||||
- **鏃ュ父缁存姢** 鈫?[21-REDCap鏃ュ父杩愮淮鎵嬪唽.md](./21-REDCap鏃ュ父杩愮淮鎵嬪唽.md)
|
||||
- **鐗堟湰鍗囩骇** 鈫?[22-REDCap鍗囩骇鎸囧崡.md](./22-REDCap鍗囩骇鎸囧崡.md)
|
||||
- **系统配置** → [20-REDCap系统配置手册.md](./20-REDCap系统配置手册.md)
|
||||
- **日常维护** → [21-REDCap日常运维手册.md](./21-REDCap日常运维手册.md)
|
||||
- **版本升级** → [22-REDCap升级指南.md](./22-REDCap升级指南.md)
|
||||
|
||||
---
|
||||
|
||||
## 馃搳 妯″潡褰撳墠鐘舵€?
|
||||
## 📊 模块当前状态
|
||||
|
||||
| 闃舵<EFBFBD> | 鐘舵€?| 瀹屾垚鏃堕棿 | 澶囨敞 |
|
||||
| 阶段 | 状态 | 完成时间 | 备注 |
|
||||
|------|------|----------|------|
|
||||
| 鎶€鏈<EFBFBD>皟鐮?| 鉁?瀹屾垚 | 2025-12 | 瀹屾垚椋庨櫓璇勪及涓庢柟妗堣<E5A697>璁?|
|
||||
| 閮ㄧ讲鏂规<EFBFBD>璁捐<EFBFBD> | 鉁?瀹屾垚 | 2026-01-01 | 纭<EFBFBD>畾Docker+ECS鏂规<EFBFBD> |
|
||||
| 鏈<EFBFBD>湴鐜<EFBFBD><EFBFBD>閮ㄧ讲 | 鉁?瀹屾垚 | 2026-01-02 | REDCap 15.8.0杩愯<EFBFBD>姝e父 |
|
||||
| API Adapter寮€鍙?| 鈴?杩涜<E69DA9>涓?| 棰勮<E6A3B0>2026-01-03 | Day 2浠诲姟 |
|
||||
| 鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲 | 馃搮 璁″垝涓?| 寰呭畾 | 绛夊緟API Adapter瀹屾垚 |
|
||||
| 技术调研 | ✅ 完成 | 2025-12 | 完成风险评估与方案设计 |
|
||||
| 部署方案设计 | ✅ 完成 | 2026-01-01 | 确定Docker+ECS方案 |
|
||||
| 本地环境部署 | ✅ 完成 | 2026-01-02 | REDCap 15.8.0运行正常 |
|
||||
| API Adapter开发 | ⏳ 进行中 | 预计2026-01-03 | Day 2任务 |
|
||||
| 生产环境部署 | 📅 计划中 | 待定 | 等待API Adapter完成 |
|
||||
|
||||
---
|
||||
|
||||
## 🔄 文档更新记录
|
||||
|
||||
| 鏃ユ湡 | 鏇存柊鍐呭<E98D90> | 鏇存柊浜?|
|
||||
| 日期 | 更新内容 | 更新人 |
|
||||
|------|----------|--------|
|
||||
| 2026-01-02 | 鍒涘缓鏂囨。浣撶郴锛屽畬鎴愭湰鍦伴儴缃?| AI Assistant |
|
||||
| 2026-01-02 | 创建文档体系,完成本地部署 | AI Assistant |
|
||||
| 2025-12-XX | 完成技术方案与风险评估文档 | AI Assistant |
|
||||
|
||||
---
|
||||
@@ -195,25 +195,25 @@ REDCap是一个成熟的第三方EDC(电子数据采集)系统,本模块
|
||||
## 📝 文档编写规范
|
||||
|
||||
### 图标使用规范
|
||||
- 猸?鏍稿績蹇呰<E8B987>鏂囨。
|
||||
- 鉁?宸插畬鎴?
|
||||
- 鈴?杩涜<E69DA9>涓?
|
||||
- 馃搮 璁″垝涓?
|
||||
- ⭐ 核心必读文档
|
||||
- ✅ 已完成
|
||||
- ⏳ 进行中
|
||||
- 📅 计划中
|
||||
- 🔧 故障排查
|
||||
- 🏥 医院专用
|
||||
- 馃挕 鎶€宸ф彁绀?
|
||||
- 💡 技巧提示
|
||||
- ⚠️ 重要警告
|
||||
|
||||
### 文档命名规范
|
||||
- 鎸夋暟瀛楀垎绫伙細01-09绯荤粺姒傝<E5A792>锛?0-19閮ㄧ讲锛?0-29閰嶇疆锛?0-39寮€鍙戯紝40-49鍙傝€?
|
||||
- 浣跨敤涓嬪垝绾垮垎闅斿<EFBFBD>涓<EFBFBD>崟璇嶏紙鑰岄潪绌烘牸锛?
|
||||
- 閲嶈<EFBFBD>鏂囨。鍔?瀹屽叏鎸囧崡"/"鎵嬪唽"/"鎸囧崡"鍚庣紑
|
||||
- 按数字分类:01-09系统概览,10-19部署,20-29配置,30-39开发,40-49参考
|
||||
- 使用下划线分隔多个单词(而非空格)
|
||||
- 重要文档加"完全指南"/"手册"/"指南"后缀
|
||||
|
||||
---
|
||||
|
||||
## 🆘 获取帮助
|
||||
|
||||
- **鎶€鏈<EFBFBD>棶棰?*锛氭煡鐪?[13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md](./13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md)
|
||||
- **技术问题**:查看 [13-部署问题排查手册.md](./13-部署问题排查手册.md)
|
||||
- **REDCap官方**:https://projectredcap.org/
|
||||
- **Docker闂<EFBFBD><EFBFBD>**锛氭煡鐪?`redcap-docker-dev/README.md`
|
||||
- **Docker问题**:查看 `redcap-docker-dev/README.md`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user