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,153 +1,153 @@
# 2025-11-16 平台基础设施规划完成总结
> **浠诲姟锛?* 骞冲彴鍩虹<E98DA9>璁炬柦瑙勫垝锛圥latform Infrastructure Planning锛?
> **鏃堕棿锛?* 2025-11-16
> **鐘舵€侊細** 鉁?鏂囨。瀹屾垚锛屽緟瀹炴柦
> **鏍稿績绛栫暐锛?* 骞冲彴灞傜粺涓€瀹炵幇锛屼笟鍔″眰鐩存帴澶嶇敤
> **任务:** 平台基础设施规划Platform Infrastructure Planning
> **时间:** 2025-11-16
> **状态:** ✅ 文档完成,待实施
> **核心策略:** 平台层统一实现,业务层直接复用
---
## 🎯 任务目标
涓烘敮鎸?*闃块噷浜?Serverless 閮ㄧ讲鏋舵瀯**鍜?*PRD瀹氫箟鐨?绉嶉儴缃插舰鎬?*锛岃<E9949B>鍒掑畬鏁寸殑骞冲彴鍩虹<E98DA9>璁炬柦锛屽疄鐜帮細
- 鉁?鏈<>湴寮€鍙戝拰浜戠<E6B59C>閮ㄧ讲鏃犵紳鍒囨崲
- 鉁?绉佹湁鍖栭儴缃插拰鍗曟満鐗堟敮鎸?
- 鉁?妯″潡鍖栫粍鍚堝敭鍗栵紙涓撲笟鐗堛€侀珮绾х増銆佹棗鑸扮増锛?
为支持**阿里云 Serverless 部署架构**和**PRD定义的4种部署形态**,规划完整的平台基础设施,实现:
- ✅ 本地开发和云端部署无缝切换
- ✅ 私有化部署和单机版支持
- ✅ 模块化组合售卖(专业版、高级版、旗舰版)
---
## 鉁?鏍稿績鎴愭灉
## ✅ 核心成果
### 1. **架构原则确立**
**鍏抽敭鍐崇瓥**锛?
- 猸?骞冲彴鍩虹<E98DA9>璁炬柦鍦?`backend/src/common/` 缁熶竴瀹炵幇
- 猸?涓氬姟妯″潡锛圓SL/AIA/PKB绛夛級鐩存帴澶嶇敤锛岀<E9949B>姝㈤噸澶嶅疄鐜?
- 猸?閫氳繃閫傞厤鍣ㄦā寮忔敮鎸佸<E98EB8><EFBFBD><E9909C>鍒囨崲
**关键决策**
- ⭐ 平台基础设施在 `backend/src/common/` 统一实现
- ⭐ 业务模块ASL/AIA/PKB等直接复用禁止重复实现
- ⭐ 通过适配器模式支持多环境切换
**鏀剁泭**锛?
**收益**
- 避免6个业务模块重复实现节省1080行代码
- 统一的代码风格和维护方式
- 寮€鍙戞晥鐜囨彁鍗?9%锛?琛屽<E7909B>鍏?vs 180琛屽疄鐜帮級
- 开发效率提升99%1行导入 vs 180行实现
---
### 2. **骞冲彴鍩虹<EFBFBD>璁炬柦娓呭崟锛?涓<>ā鍧楋級**
### 2. **平台基础设施清单8个模块**
| 妯″潡 | 璺<>緞 | 浼樺厛绾?| 璇存槑 |
| 模块 | 路径 | 优先级 | 说明 |
|------|------|--------|------|
| **存储服务** | `common/storage/` | P0 | 本地/OSS切换 |
| **数据库连接池** | `config/database.ts` | P0 | 防止连接耗尽 |
| **鏃ュ織绯荤粺** | `common/logging/` | P0 | 鏍囧噯鍖栨棩蹇楄緭鍑?|
| **日志系统** | `common/logging/` | P0 | 标准化日志输出 |
| **环境配置** | `config/env.ts` | P0 | 环境变量管理 |
| **寮傛<EFBFBD>浠诲姟** | `common/jobs/` | P0 | 闀挎椂闂翠换鍔″<EFBFBD>鐞?|
| **缂撳瓨鏈嶅姟** | `common/cache/` | P1 | 鍒嗗竷寮忕紦瀛?|
| **鍋ュ悍妫€鏌?* | `common/health/` | P1 | SAE鍋ュ悍妫€鏌?|
| **鐩戞帶鎸囨爣** | `common/monitoring/` | P1 | 杩炴帴鏁扮洃鎺?|
| **异步任务** | `common/jobs/` | P0 | 长时间任务处理 |
| **缓存服务** | `common/cache/` | P1 | 分布式缓存 |
| **健康检查** | `common/health/` | P1 | SAE健康检查 |
| **监控指标** | `common/monitoring/` | P1 | 连接数监控 |
**瀹炴柦璁″垝**锛?.5澶╋紙20灏忔椂锛?
**实施计划**2.5天20小时
---
### 3. **支持的部署形态4种**
| 閮ㄧ讲褰㈡€?| 閰嶇疆 | 楠岃瘉 |
| 部署形态 | 配置 | 验证 |
|---------|------|------|
| **浜戠<EFBFBD>SaaS** | STORAGE_TYPE=oss + CACHE_TYPE=redis | 鉁?鏀<> |
| **绉佹湁鍖栭儴缃?* | STORAGE_TYPE=local + 鍐呯綉PostgreSQL | 鉁?鏀<> |
| **鍗曟満鐗?* | STORAGE_TYPE=local + SQLite | 鉁?鏀<> |
| **娣峰悎閮ㄧ讲** | 鎸夋ā鍧楅厤缃?| 鉁?鏀<> |
| **云端SaaS** | STORAGE_TYPE=oss + CACHE_TYPE=redis | ✅ 支持 |
| **私有化部署** | STORAGE_TYPE=local + 内网PostgreSQL | ✅ 支持 |
| **单机版** | STORAGE_TYPE=local + SQLite | ✅ 支持 |
| **混合部署** | 按模块配置 | ✅ 支持 |
**鍒囨崲鎴愭湰**锛氫慨鏀圭幆澧冨彉閲忥紝浠g爜闆舵敼鍔?
**切换成本**:修改环境变量,代码零改动
---
## 📚 文档更新清单
### **鏂板缓鏂囨。锛?涓<>**
- 猸?`09-鏋舵瀯瀹炴柦/04-骞冲彴鍩虹<E98DA9>璁炬柦瑙勫垝.md`锛?66琛岋紝鏍稿績瀹炴柦鏂囨。锛?
### **新建文档1个**
- `09-架构实施/04-平台基础设施规划.md`766行核心实施文档
### **鏇存柊鏂囨。锛?1涓<31>**
### **更新文档11个**
**鏋舵瀯灞傦紙3涓<EFBFBD>級**锛?
**架构层3个**
- `00-系统总体设计/01-系统架构分层设计.md`
- `00-系统总体设计/前后端模块化架构设计-V2.md`
- `00-绯荤粺鎬讳綋璁捐<EFBFBD>/09-鎬讳綋闇€姹傛枃妗?PRD).md`锛堥獙璇侊級
- `00-系统总体设计/09-总体需求文档(PRD).md`(验证)
**瀹炴柦灞傦紙2涓<EFBFBD>級**锛?
- `09-鏋舵瀯瀹炴柦/03-浜戝師鐢熼儴缃叉灦鏋勬寚鍗?md`
- `09-鏋舵瀯瀹炴柦/02-鏁版嵁搴撹繛鎺ラ厤缃?md`锛?260琛岃繛鎺ユ睜閰嶇疆锛?
**实施层2个**
- `09-架构实施/03-云原生部署架构指南.md`
- `09-架构实施/02-数据库连接配置.md`+260行连接池配置)
**瑙勮寖灞傦紙2涓<EFBFBD>級**锛?
- `04-寮€鍙戣<EFBFBD>鑼?08-浜戝師鐢熷紑鍙戣<E98D99>鑼?md`锛?70琛屽钩鍙拌兘鍔涘<E98D94><EFBFBD>
- `04-寮€鍙戣<EFBFBD>鑼?05-浠g爜瑙勮寖.md`锛?180琛屽钩鍙拌兘鍔涗娇鐢<EFBFBD>
**规范层2个**
- `04-开发规范/08-云原生开发规范.md`+70行平台能力复用
- `04-开发规范/05-代码规范.md`+180行平台能力使用)
**杩愮淮灞傦紙1涓<EFBFBD>級**锛?
- `07-杩愮淮鏂囨。/01-鐜<><E9909C>閰嶇疆鎸囧崡.md`锛?290琛岀幆澧冨彉閲忛厤缃<EFBFBD>
**运维层1个**
- `07-运维文档/01-环境配置指南.md`+290行环境变量配置)
**涓氬姟灞傦紙3涓<EFBFBD>級**锛?
**业务层3个**
- `ASL/01-开发里程碑.md`(简化,-15行
- `ASL/02-鏍囬<EFBFBD>鎽樿<EFBFBD>鍒濈瓫寮€鍙戣<EFBFBD>鍒?md`锛堢畝鍖栵紝-180琛岋級
- `ASL/02-标题摘要初筛开发计划.md`(简化,-180行)
- `ASL/03-任务分解.md`(简化,-30行
**鎬昏<EFBFBD>**锛?2涓<32>枃妗紝+1426琛屽噣澧炲姞
**总计**12个文档+1426行净增加
---
## 馃幆 鍏抽敭浠峰€?
## 🎯 关键价值
### **鏋舵瀯娓呮櫚搴?*
### **架构清晰度**
```
之前:业务模块需要自己实现存储等基础设施
现在:平台层统一提供,业务层直接复用
娓呮櫚搴︽彁鍗囷細猸愨瓙猸愨瓙猸?
清晰度提升:⭐⭐⭐⭐⭐
```
### **寮€鍙戞晥鐜?*
### **开发效率**
```
ASL模块开发时间
涔嬪墠锛氶渶瑕?.5h瀹炵幇瀛樺偍 + 180琛屼唬鐮?
鐜板湪锛?琛屽<E7909B>鍏ワ紝鐩存帴浣跨敤
之前需要1.5h实现存储 + 180行代码
现在1行导入直接使用
鏁堢巼鎻愬崌锛?9.4%
效率提升99.4%
```
### **投资回报**
```
鎶曡祫锛?.5澶╁疄鏂藉熀纭€璁炬柦
鍥炴姤锛?澶╋紙ASL閲嶆瀯1.5澶?+ 鍚庣画妯″潡7.5澶╋級
投资2.5天实施基础设施
回报9天ASL重构1.5天 + 后续模块7.5天)
ROI = 260%
```
### **鍟嗕笟浠峰€?*
### **商业价值**
```
鉁?100%<EFBFBD>寔PRD鐨?绉嶉儴缃插舰鎬?
鉁?100%<EFBFBD>寔妯″潡鍖栫粍鍚堝敭鍗?
鉁?100%<EFBFBD>寔澶氱増鏈<EFBFBD>瓥鐣ワ紙涓撲笟鐗堛€侀珮绾х増銆佹棗鑸扮増锛?
100%支持PRD的4种部署形态
100%支持模块化组合售卖
100%支持多版本策略(专业版、高级版、旗舰版)
```
---
## 馃殌 涓嬩竴姝ヨ<E5A79D>鍔?
## 🚀 下一步行动
### **下一步:实施平台基础设施**
**参照文档**`docs/09-架构实施/04-平台基础设施规划.md`
```
Day 1: 鏍稿績鍩虹<EFBFBD>璁炬柦锛坰torage/database/logging/jobs锛?
Day 2: 杈呭姪鍩虹<EFBFBD>璁炬柦锛坈ache/health/monitoring锛? 娴嬭瘯
Day 3: 楠岃瘉鍜岄泦鎴愭祴璇?
Day 1: 核心基础设施storage/database/logging/jobs
Day 2: 辅助基础设施cache/health/monitoring+ 测试
Day 3: 验证和集成测试
鎬昏<EFBFBD>锛?.5澶╋紙20灏忔椂锛?
总计2.5天20小时
```
**棰勬湡鏀剁泭**锛?
**预期收益**
- 所有业务模块ASL/AIA/PKB/DC/SSA/ST统一复用
- <EFBFBD>湴寮€鍙戝拰浜戠<EFBFBD>閮ㄧ讲涓€閿<EFBFBD>垏鎹?
- 鏋舵瀯娓呮櫚锛屾槗浜庣淮鎶?
- 本地开发和云端部署一键切换
- 架构清晰,易于维护
---
@@ -155,17 +155,17 @@ Day 3: 验证和集成测
| 指标 | 数量 |
|------|------|
| **鏂板缓鏂囨。** | 1涓?|
| **鏇存柊鏂囨。** | 11涓?|
| **鎬绘枃妗?* | 12涓?|
| **鏂板<EFBFBD>** | +1426琛?|
| **宸ヤ綔鏃堕暱** | 绾?灏忔椂 |
| **新建文档** | 1|
| **更新文档** | 11|
| **总文档** | 12|
| **新增代码** | +1426|
| **工作时长** | 约3小时 |
---
**鏂囨。鍒涘缓鏃ユ湡锛?* 2025-11-16
**瀹屾垚鏃堕棿锛?* 褰撳ぉ
**鍙備笌浜哄憳锛?* 鏋舵瀯鍥㈤槦
**文档创建日期:** 2025-11-16
**完成时间:** 当天
**参与人员:** 架构团队