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:
2026-01-16 13:42:10 +08:00
parent 98d862dbd4
commit 66255368b7
560 changed files with 70424 additions and 52353 deletions

View File

@@ -1,32 +1,32 @@
# REDCap模块文档
**鐗堟湰锛?* v1.0
**版本:** v1.0
**最后更新:** 2026-01-02
**模块状态:** 🟢 本地环境已部署API开发中
---
## 馃殌 蹇<>€熷紑濮?
## 🚀 快速开始
### 我想部署REDCap
馃憠 **[10-REDCap_Docker閮ㄧ讲鎿嶄綔鎵嬪唽.md](./01-閮ㄧ讲涓庨厤缃?10-REDCap_Docker閮ㄧ讲鎿嶄綔鎵嬪唽.md)** 猸?
👉 **[10-REDCap_Docker部署操作手册.md](./01-部署与配置/10-REDCap_Docker部署操作手册.md)**
杩欐槸鏈€鏍稿績鐨勬枃妗o紒鍖呭惈锛?
- 鉁?浠?鍒?鐨勫畬鏁撮儴缃叉祦绋?
- 鉁?Docker鏂囦欢澶嶇敤璇存槑
- 鉁?甯歌<E794AF><EFBFBD><E99782>涓庤В鍐虫柟妗?
- 鉁?閫傜敤浜庢湰鍦?ECS/鍖婚櫌鐜<E6AB8C><E9909C>
这是最核心的文档!包含:
- ✅ 从0到1的完整部署流程
- Docker文件复用说明
- ✅ 常见问题与解决方案
- ✅ 适用于本地/ECS/医院环境
**30鍒嗛挓瀹屾垚閮ㄧ讲锛?*
**30分钟完成部署!**
---
### 我遇到问题了
馃憠 **[13-閮ㄧ讲闂<EFBFBD><EFBFBD>鎺掓煡鎵嬪唽.md](./01-閮ㄧ讲涓庨厤缃?13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md)** 馃敡
👉 **[13-部署问题排查手册.md](./01-部署与配置/13-部署问题排查手册.md)** 🔧
基于实际踩坑经验,包含:
- ERR_CONTENT_DECODING_FAILED解决方案
- 鐧诲綍澶辫触锛圕RLF姹℃煋锛夎В鍐虫柟妗?
- 登录失败CRLF污染解决方案
- Base URL配置错误修复
- MySQL连接问题排查
@@ -36,41 +36,41 @@
### [00-模块概览](./00-模块概览/)
- [00-REDCap模块文档导航.md](./00-模块概览/00-REDCap模块文档导航.md) - 完整文档索引
- [02-REDCap瀵规帴鎬讳綋鏂规<EFBFBD>.md](./00-妯″潡姒傝<EFBFBD>/02-REDCap瀵规帴鎬讳綋鏂规<EFBFBD>.md) - 鎶€鏈<E282AC>灦鏋勮<E98F8B>璁?
- [03-REDCap瀵规帴椋庨櫓璇勪及涓庢妧鏈<EFBFBD>寫鎴樺垎鏋?md](./00-妯″潡姒傝<EFBFBD>/03-REDCap瀵规帴椋庨櫓璇勪及涓庢妧鏈<EFBFBD>寫鎴樺垎鏋?md) - 椋庨櫓璇勪及
- [02-REDCap对接总体方案.md](./00-模块概览/02-REDCap对接总体方案.md) - 技术架构设计
- [03-REDCap对接风险评估与技术挑战分析.md](./00-模块概览/03-REDCap对接风险评估与技术挑战分析.md) - 风险评估
- [04-生产环境部署决策报告_ECS_vs_SAE.md](./00-模块概览/04-生产环境部署决策报告_ECS_vs_SAE.md) - ECS vs SAE对比
### [01-閮ㄧ讲涓庨厤缃甝(./01-閮ㄧ讲涓庨厤缃?) 猸?
- **[10-REDCap_Docker閮ㄧ讲鎿嶄綔鎵嬪唽.md](./01-閮ㄧ讲涓庨厤缃?10-REDCap_Docker閮ㄧ讲鎿嶄綔鎵嬪唽.md)** - 鏍稿績閮ㄧ讲鏂囨。
- [13-閮ㄧ讲闂<EFBFBD><EFBFBD>鎺掓煡鎵嬪唽.md](./01-閮ㄧ讲涓庨厤缃?13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md) - 闂<><E99782>喅璁板綍
### [01-部署与配置](./01-部署与配置/) ⭐
- **[10-REDCap_Docker部署操作手册.md](./01-部署与配置/10-REDCap_Docker部署操作手册.md)** - 核心部署文档
- [13-部署问题排查手册.md](./01-部署与配置/13-部署问题排查手册.md) - 问题解决记录
### [02-绯荤粺閰嶇疆涓庤繍缁碷(./02-绯荤粺閰嶇疆涓庤繍缁?)
- 馃毀 20-REDCap绯荤粺閰嶇疆鎵嬪唽.md锛堣<E9949B>鍒掍腑锛?
- 馃毀 21-REDCap鏃ュ父杩愮淮鎵嬪唽.md锛堣<E9949B>鍒掍腑锛?
- 馃毀 22-REDCap鍗囩骇鎸囧崡.md锛堣<E9949B>鍒掍腑锛?
### [02-系统配置与运维](./02-系统配置与运维/)
- 🚧 20-REDCap系统配置手册.md规划中
- 🚧 21-REDCap日常运维手册.md规划中
- 🚧 22-REDCap升级指南.md规划中
### [03-API瀵规帴涓庡紑鍙慮(./03-API瀵规帴涓庡紑鍙?)
- [33-REDCap浜屾<EFBFBD>寮€鍙戞繁搴︽寚鍗?md](./03-API瀵规帴涓庡紑鍙?33-REDCap浜屾<EFBFBD>寮€鍙戞繁搴︽寚鍗?md) - External Modules寮€鍙?
- 馃毀 30-REDCap_API浣跨敤鎸囧崡.md锛堝紑鍙戜腑锛?
- 馃毀 31-IIT_Manager涓嶳EDCap瀵规帴璁捐<EFBFBD>.md锛堝紑鍙戜腑锛?
- 馃毀 32-REDCap_API_Adapter寮€鍙戞寚鍗?md锛堝紑鍙戜腑锛?
### [03-API对接与开发](./03-API对接与开发/)
- [33-REDCap二次开发深度指南.md](./03-API对接与开发/33-REDCap二次开发深度指南.md) - External Modules开发
- 🚧 30-REDCap_API使用指南.md开发中
- 🚧 31-IIT_Manager与REDCap对接设计.md开发中
- 🚧 32-REDCap_API_Adapter开发指南.md开发中
### [04-鍙傝€冭祫鏂橾(./04-鍙傝€冭祫鏂?)
### [04-参考资料](./04-参考资料/)
- 旧版文档存档
---
## 📊 当前进度
| 闃舵<EFBFBD> | 鐘舵€?| 瀹屾垚鏃ユ湡 |
| 阶段 | 状态 | 完成日期 |
|------|------|----------|
| 鎶€鏈<EFBFBD>皟鐮?| 鉁?瀹屾垚 | 2025-12 |
| 閮ㄧ讲鏂规<EFBFBD>璁捐<EFBFBD> | 鉁?瀹屾垚 | 2026-01-01 |
| **<EFBFBD>湴鐜<EFBFBD><EFBFBD>閮ㄧ讲** | 鉁?**瀹屾垚** | **2026-01-02** |
| API Adapter寮€鍙?| 鈴?杩涜<E69DA9>涓?| 棰勮<E6A3B0>2026-01-03 |
| 鐢熶骇鐜<EFBFBD><EFBFBD>閮ㄧ讲 | 馃搮 璁″垝涓?| 寰呭畾 |
| 技术调研 | ✅ 完成 | 2025-12 |
| 部署方案设计 | ✅ 完成 | 2026-01-01 |
| **本地环境部署** | ✅ **完成** | **2026-01-02** |
| API Adapter开发 | ⏳ 进行中 | 预计2026-01-03 |
| 生产环境部署 | 📅 计划中 | 待定 |
**璁块棶鍦板潃锛?* http://localhost:8080/
**访问地址:** http://localhost:8080/
**管理员账户:** Admin / Admin123!
---
@@ -79,65 +79,64 @@
```
IIT Manager Agent (企业微信)
鈫?
REDCap API Adapter
鈫?
REDCap系统 (EDC)
鈫?
鐮旂┒鏁版嵁閲囬泦涓庣<EFBFBD>鐞?
研究数据采集与管理
```
**鏍稿績鍔熻兘锛?*
- 馃搵 鐢靛瓙鏁版嵁閲囬泦锛圗DC锛?
**核心功能:**
- 📋 电子数据采集EDC
- 📊 数据字典管理
- 🔍 数据质量控制
- 馃搱 鎶ヨ〃涓庡<E6B693>鍑?
- 📈 报表与导出
- 👥 用户权限管理
---
## 馃洜锔?Docker閰嶇疆鏂囦欢浣嶇疆
## 🛠️ Docker配置文件位置
**鎵€鏈塂ocker閰嶇疆鏂囦欢閮藉湪锛?*
**所有Docker配置文件都在:**
```
AIclinicalresearch/redcap-docker-dev/
鈹溾攢鈹€ Dockerfile.redcap 鉁?100%<EFBFBD><EFBFBD>鐢?
├── Dockerfile.redcap 100%可复用
├── docker-compose.yml ⚠️ 需微调
鈹溾攢鈹€ docker-compose.prod.yml 鈿狅笍 闇€淇<E282AC>敼鏁版嵁搴撻厤缃?
鈹溾攢鈹€ docker-entrypoint.sh 鉁?100%<EFBFBD><EFBFBD>鐢?
├── docker-compose.prod.yml ⚠️ 需修改数据库配置
├── docker-entrypoint.sh 100%可复用
├── config/
鈹? 鈹溾攢鈹€ apache/redcap.conf 鈿狅笍 闇€淇<E282AC>敼鍩熷悕
鈹? 鈹溾攢鈹€ php/php.ini 鉁?100%<EFBFBD><EFBFBD>鐢?
鈹? 鈹斺攢鈹€ database.php 鉂?蹇呴』鏍规嵁鐜<E5B581><E9909C>瀹氬埗
鈹溾攢鈹€ scripts/ <EFBFBD>€夎緟鍔╄剼鏈?
鈹斺攢鈹€ .gitattributes 鉁?100%<EFBFBD><EFBFBD>鐢?
│ ├── apache/redcap.conf ⚠️ 需修改域名
│ ├── php/php.ini 100%可复用
│ └── database.php ❌ 必须根据环境定制
├── scripts/ 可选辅助脚本
└── .gitattributes 100%可复用
```
璇﹁<EFBFBD>锛歔10-REDCap_Docker閮ㄧ讲鎿嶄綔鎵嬪唽.md](./01-閮ㄧ讲涓庨厤缃?10-REDCap_Docker閮ㄧ讲鎿嶄綔鎵嬪唽.md)
详见:[10-REDCap_Docker部署操作手册.md](./01-部署与配置/10-REDCap_Docker部署操作手册.md)
---
## 📞 获取帮助
- **閮ㄧ讲闂<EFBFBD><EFBFBD>**锛氭煡鐪?[13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md](./01-閮ㄧ讲涓庨厤缃?13-閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽.md)
- **部署问题**:查看 [13-部署问题排查手册.md](./01-部署与配置/13-部署问题排查手册.md)
- **REDCap官方**https://projectredcap.org/
- **鎶€鏈<EFBFBD>敮鎸?*锛氭煡鐪嬬浉鍏虫枃妗f垨鎻怚ssue
- **技术支持**查看相关文档或提Issue
---
## 馃攧 鏈€杩戞洿鏂?
## 🔄 最近更新
| 日期 | 更新内容 |
|------|----------|
| 2026-01-02 | 鉁?瀹屾垚鏈<E59E9A>湴Docker鐜<72><E9909C>閮ㄧ讲 |
| 2026-01-02 | 鉁?鍒涘缓REDCap Docker閮ㄧ讲鎿嶄綔鎵嬪唽 |
| 2026-01-02 | 鉁?鍒涘缓閮ㄧ讲闂<E8AEB2><E99782>鎺掓煡鎵嬪唽 |
| 2026-01-02 | 鉁?閲嶇粍鏂囨。浣撶郴 |
| 2026-01-02 | ✅ 完成本地Docker环境部署 |
| 2026-01-02 | ✅ 创建REDCap Docker部署操作手册 |
| 2026-01-02 | ✅ 创建部署问题排查手册 |
| 2026-01-02 | ✅ 重组文档体系 |
---
**鍑嗗<EFBFBD>濂藉紑濮嬩簡鍚楋紵** 馃憠 [寮€濮嬮儴缃瞉(./01-閮ㄧ讲涓庨厤缃?10-REDCap_Docker閮ㄧ讲鎿嶄綔鎵嬪唽.md)
**准备好开始了吗?** 👉 [开始部署](./01-部署与配置/10-REDCap_Docker部署操作手册.md)