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,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>枃妗o紝+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>浠g爜** | +1426琛?|
|
||||
| **宸ヤ綔鏃堕暱** | 绾?灏忔椂 |
|
||||
| **新建文档** | 1个 |
|
||||
| **更新文档** | 11个 |
|
||||
| **总文档** | 12个 |
|
||||
| **新增代码** | +1426行 |
|
||||
| **工作时长** | 约3小时 |
|
||||
|
||||
---
|
||||
|
||||
**鏂囨。鍒涘缓鏃ユ湡锛?* 2025-11-16
|
||||
**瀹屾垚鏃堕棿锛?* 褰撳ぉ
|
||||
**鍙備笌浜哄憳锛?* 鏋舵瀯鍥㈤槦
|
||||
**文档创建日期:** 2025-11-16
|
||||
**完成时间:** 当天
|
||||
**参与人员:** 架构团队
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user