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,14 +1,17 @@
# 04-寮€鍙戣<EFBFBD>鑼?
> **鐩<>爣锛?* 缁熶竴鍥㈤槦寮€鍙戣<E98D99>鑼冿紝鎻愰珮浠爜璐ㄩ噺鍜屽崗浣滄晥鐜?
> **閫傜敤鑼冨洿锛?* 骞冲彴灞?+ 鑳藉姏灞?+ 涓氬姟妯″潡灞?
> **寮哄埗绛夌骇锛?* 猸愨瓙猸愨瓙猸?蹇呴』閬靛畧
# 04-开发规范
> **目标:** 统一团队开发规范,提高代码质量和协作效率
> **适用范围:** 平台层 + 能力层 + 业务模块层
> **强制等级:** ⭐⭐⭐⭐⭐ 必须遵守
---
## 📋 规范文档列表
### 1. 鏁版嵁搴撹<EFBFBD>璁¤<EFBFBD>鑼?猸愨瓙猸愨瓙猸?**鏂囦欢锛?* `01-鏁版嵁搴撹<E690B4>璁¤<E79281>鑼?md` 鈴?寰呭垱寤猴紙浠?`01-璁捐<E79281>鏂囨。/鏁版嵁搴撹<E690B4>璁℃枃妗?md` 鎻愬彇锛?
**鏍稿績鍐呭<EFBFBD>锛?*
### 1. 数据库设计规范 ⭐⭐⭐⭐⭐
**文件:** `01-数据库设计规范.md` ⏳ 待创建(从 `01-设计文档/数据库设计文档.md` 提取)
**核心内容:**
- Schema隔离策略platform_schema、asl_schema等
- 表命名规范(小写+下划线)
- 字段命名规范
@@ -16,41 +19,55 @@
- 外键约束规范
- 通用字段created_at、updated_at等
**<EFBFBD>€熷弬鑰冿細** [鏁版嵁搴撳叏灞€瑙嗗浘](./03-鏁版嵁搴撳叏灞€瑙嗗浘.md) 猸?宸插垱寤?
**快速参考:** [数据库全局视图](./03-数据库全局视图.md) ⭐ 已创建
---
### 2. API璁捐<EFBFBD>瑙勮寖 猸愨瓙猸愨瓙猸?**鏂囦欢锛?* `02-API璁捐<E79281>瑙勮寖.md` 鈴?寰呭垱寤猴紙浠?`01-璁捐<E79281>鏂囨。/API璁捐<E79281>瑙勮寖.md` 鎻愬彇锛?
**鏍稿績鍐呭<EFBFBD>锛?*
### 2. API设计规范 ⭐⭐⭐⭐⭐
**文件:** `02-API设计规范.md` ⏳ 待创建(从 `01-设计文档/API设计规范.md` 提取)
**核心内容:**
- RESTful API设计原则
- URL鍛藉悕瑙勮寖锛坄/api/v1/妯″潡/璧勬簮`锛?- HTTP鏂规硶浣跨敤瑙勮寖
- URL命名规范(`/api/v1/模块/资源`
- HTTP方法使用规范
- 请求/响应格式规范
- 閿欒<EFBFBD>鐮佽<EFBFBD>璁?- 璁よ瘉鍜屾潈闄?
**蹇<>€熷弬鑰冿細** [API璺<EFBFBD>敱鎬昏<EFBFBD>](./04-API璺<49>敱鎬昏<E98EAC>.md) 猸?宸插垱寤?
- 错误码设计
- 认证和权限
**快速参考:** [API路由总览](./04-API路由总览.md) ⭐ 已创建
---
### 3. 鏁版嵁搴撳叏灞€瑙嗗浘 猸愨瓙猸愨瓙猸?鉁?鏂板<E98F82>
**鏂囦欢锛?* `03-鏁版嵁搴撳叏灞€瑙嗗浘.md`
### 3. 数据库全局视图 ⭐⭐⭐⭐⭐ ✅ 新增
**文件:** `03-数据库全局视图.md`
**鐢ㄩ€旓細** 鎻愪緵鎵€鏈塖chema鍜岃〃鐨勫揩閫熺储寮?
**鏍稿績鍐呭<E98D90>锛?*
- Schema鍒掑垎绛栫暐锛?涓猄chema锛?- 鎵€鏈夎〃鐨勬€昏<E282AC>鍜岃烦杞<E783A6>摼鎺?- 璺⊿chema渚濊禆鍏崇郴
- 鏁版嵁閲忛<EFBFBD>浼?
**浣跨敤鍦烘櫙锛?*
**用途:** 提供所有Schema和表的快速索引
**核心内容:**
- Schema划分策略8个Schema
- 所有表的总览和跳转链接
- 跨Schema依赖关系
- 数据量预估
**使用场景:**
- 查看全局数据架构
- 快速定位某个表属于哪个Schema
- 浜嗚В璺ㄦā鍧楁暟鎹<EFBFBD>叧绯?
- 了解跨模块数据关系
---
### 4. API<EFBFBD>敱鎬昏<EFBFBD> 猸愨瓙猸愨瓙猸?鉁?鏂板<E98F82>
**鏂囦欢锛?* `04-API<EFBFBD>敱鎬昏<EFBFBD>.md`
### 4. API路由总览 ⭐⭐⭐⭐⭐ ✅ 新增
**文件:** `04-API路由总览.md`
**鐢ㄩ€旓細** 鎻愪緵鎵€鏈堿PI绔<EFBFBD>偣鐨勫揩閫熺储寮?
**鏍稿績鍐呭<E98D90>锛?*
**用途:** 提供所有API端点的快速索引
**核心内容:**
- 路由命名规范
- 所有模块的API端点总览
- <EFBFBD>敱鍐茬獊妫€鏌?- 绔<>偣缁熻<E7BC81>锛垀85涓<35>
- 路由冲突检查
- 端点统计(~85个
**浣跨敤鍦烘櫙锛?*
**使用场景:**
- 查看全局API架构
- 避免路由冲突
- 快速查找某个功能的API端点
@@ -58,29 +75,36 @@
---
### 5. 代码规范 ⭐⭐⭐⭐
**鏂囦欢锛?* `05-浠g爜瑙勮寖.md` 鈫?閲嶅懡鍚嶈嚜 `浠g爜瑙勮寖.md`锛堝凡瀛樺湪锛?18琛岋級
**文件:** `05-代码规范.md` → 重命名自 `代码规范.md`已存在818行
**鏍稿績鍐呭<EFBFBD>锛?*
**核心内容:**
- TypeScript编码规范
- React组件规范
- 鏂囦欢鍜岀洰褰曞懡鍚?- 浠g爜娉ㄩ噴瑙勮寖
- 文件和目录命名
- 代码注释规范
- 错误处理规范
- 日志记录规范
**已有内容,包含:**
- ESLint配置
- Prettier配置
- 璇︾粏鐨勭紪鐮佽<EFBFBD>鑼?
- 详细的编码规范
---
### 6. Git鎻愪氦瑙勮寖 猸愨瓙猸愨瓙猸?鉁?宸插畬鎴?**鏂囦欢锛?* `06-Git鎻愪氦瑙勮寖.md`
### 6. Git提交规范 ⭐⭐⭐⭐⭐ ✅ 已完成
**文件:** `06-Git提交规范.md`
**鏍稿績鍐呭<EFBFBD>锛?*
- 杩滅▼浠撳簱閰嶇疆锛圙itee锛?- Commit Message鏍煎紡瑙勮寖
**核心内容:**
- 远程仓库配置Gitee
- Commit Message格式规范
- 分支管理策略
- <EFBFBD>枃缂栫爜闂<EFBFBD><EFBFBD>喅鏂规<EFBFBD> 猸?閲嶈<E996B2>
- Git鍘嗗彶閲嶅啓涓庣淮鎶?- PR/MR瑙勮寖鍜屼唬鐮佸<E990AE>鏌ユ祦绋?- 甯歌<E794AF><EFBFBD><E99782>涓庢渶浣冲疄璺?
**鍖呭惈瀹炵敤宸ュ叿锛?*
- 中文编码问题解决方案 ⭐ 重要
- Git历史重写与维护
- PR/MR规范和代码审查流程
- 常见问题与最佳实践
**包含实用工具:**
- `fix-git-commit-messages.ps1` 脚本使用说明
- Git 别名配置
- 中文乱码修复完整流程
@@ -89,19 +113,22 @@
```
<type>(<scope>): <subject>
feat: 鏂板姛鑳? fix: Bug<EFBFBD><EFBFBD> docs: 鏂囨。
feat: 新功能 fix: Bug修复 docs: 文档
style: 格式 refactor: 重构 perf: 优化
test: 测试 chore: 构建 ci: CI/CD
```
---
### 7. 娴嬭瘯瑙勮寖 猸愨瓙猸?**鏂囦欢锛?* `07-娴嬭瘯瑙勮寖.md` 鈴?寰呭垱寤?
**鏍稿績鍐呭<EFBFBD>锛?*
### 7. 测试规范 ⭐⭐⭐
**文件:** `07-测试规范.md` ⏳ 待创建
**核心内容:**
- 单元测试规范
- 集成测试规范
- E2E测试规范
- 娴嬭瘯瑕嗙洊鐜囪<EFBFBD>姹?
- 测试覆盖率要求
**测试覆盖率要求:**
- 核心业务逻辑≥80%
- 工具函数≥90%
@@ -109,63 +136,83 @@ test: 测试 chore: 构建 ci: CI/CD
---
## 馃幆 瑙勮寖浼樺厛绾?
## 🎯 规范优先级
### P0 - 必须遵守
- 鉁?鏁版嵁搴撹<E690B4>璁¤<E79281>鑼?- 鉁?API璁捐<E79281>瑙勮寖
- 鉁?Git鎻愪氦瑙勮寖锛圕ommit Message锛?
- ✅ 数据库设计规范
- ✅ API设计规范
- ✅ Git提交规范Commit Message
### P1 - 强烈建议
- 鉁?浠g爜瑙勮寖锛圱ypeScript/React锛?- 鉁?閿欒<E996BF>澶勭悊瑙勮寖
- 鉁?鏃ュ織璁板綍瑙勮寖
- ✅ 代码规范TypeScript/React
- ✅ 错误处理规范
- ✅ 日志记录规范
### P2 - 建议遵守
- 鈿?娴嬭瘯瑙勮寖
- 鈿?鏂囨。娉ㄩ噴瑙勮寖
- 鈿?鎬ц兘浼樺寲瑙勮寖
- ⚪ 测试规范
- ⚪ 文档注释规范
- ⚪ 性能优化规范
---
## 馃攳 蹇<>€熸煡鎵?
**鎴戣<E98EB4>璁捐<E79281>鏁版嵁搴撹〃锛?* 鈫?`01-鏁版嵁搴撹<E690B4>璁¤<E79281>鑼?md`
**鎴戣<EFBFBD>璁捐<EFBFBD>API鎺ュ彛锛?* 鈫?`02-API璁捐<E79281>瑙勮寖.md`
**鎴戣<EFBFBD>鏌ョ湅鍏ㄥ眬鏁版嵁鏋舵瀯锛?* 鈫?`03-鏁版嵁搴撳叏灞€瑙嗗浘.md` 鉁?
**鎴戣<EFBFBD>鏌ョ湅鍏ㄥ眬API璺<EFBFBD>敱锛?* 鈫?`04-API璺<49>敱鎬昏<E98EAC>.md` 鉁?
**鎴戣<EFBFBD>缂栧啓浠爜锛?* 鈫?`05-浠g爜瑙勮寖.md` 鉁?
**鎴戣<EFBFBD>鎻愪氦浠爜锛?* 鈫?`06-Git鎻愪氦瑙勮寖.md` 鉁?
**鎴戣<EFBFBD>喅涓<EFBFBD>枃涔辩爜锛?* 鈫?`06-Git鎻愪氦瑙勮寖.md` (绗?鑺? 鉁?
**鎴戣<EFBFBD>閰嶇疆杩滅▼浠撳簱锛?* 鈫?`06-Git鎻愪氦瑙勮寖.md` (绗?鑺? 鉁?
**鎴戣<EFBFBD>缂栧啓娴嬭瘯锛?* 鈫?`07-娴嬭瘯瑙勮寖.md`
## 🔍 快速查找
**我要设计数据库表:**`01-数据库设计规范.md`
**我要设计API接口**`02-API设计规范.md`
**我要查看全局数据架构:**`03-数据库全局视图.md`
**我要查看全局API路由**`04-API路由总览.md`
**我要编写代码:**`05-代码规范.md`
**我要提交代码:**`06-Git提交规范.md`
**我要解决中文乱码:**`06-Git提交规范.md` (第4节) ✅
**我要配置远程仓库:**`06-Git提交规范.md` (第1节) ✅
**我要编写测试:**`07-测试规范.md`
---
## 鈿狅笍 杩濆弽瑙勮寖鐨勫悗鏋?
## ⚠️ 违反规范的后果
### 数据库设计不规范
- 鉂?Schema娣蜂贡锛屾ā鍧楄€﹀悎
- 鉂?鏃犳硶瀹炵幇妯″潡鐙<E6BDA1>珛閮ㄧ讲
- 鉂?鏁版嵁杩佺Щ鍥伴毦
- Schema混乱,模块耦合
- ❌ 无法实现模块独立部署
- ❌ 数据迁移困难
### API璁捐<EFBFBD>涓嶈<EFBFBD>鑼?- 鉂?鍓嶅悗绔<E68297><E7BB94>鎺ュ洶闅?- 鉂?API鏂囨。娣蜂贡
- 鉂?鐗堟湰鍗囩骇鍥伴毦
### API设计不规范
- ❌ 前后端对接困难
- ❌ API文档混乱
- ❌ 版本升级困难
### 代码不规范
- ❌ 代码可读性差
- ❌ 维护成本高
- ❌ Bug率上升
### 浠爜涓嶈<E6B693>鑼?- 鉂?浠爜鍙<E7889C><E98D99>у
- 鉂?缁存姢鎴愭湰楂?- 鉂?Bug鐜囦笂鍗?
---
## 📝 规范更新流程
1. 鎻愬嚭瑙勮寖鍙樻洿闇€姹傦紙Issue鎴朠R锛?2. 鍥㈤槦璁ㄨ<E79281>鍜岃瘎瀹?3. 鏇存柊瑙勮寖鏂囨。
1. 提出规范变更需求Issue或PR
2. 团队讨论和评审
3. 更新规范文档
4. 通知全员
5. 閫愭<EFBFBD>杩佺Щ鏃т唬鐮?
5. 逐步迁移旧代码
---
## 🔗 相关工具
**代码检查:**
- ESLint锛圝avaScript/TypeScript锛?- Prettier锛堜唬鐮佹牸寮忓寲锛?- Stylelint锛圕SS锛?
- ESLintJavaScript/TypeScript
- Prettier代码格式化
- StylelintCSS
**提交检查:**
- Husky锛圙it Hooks锛?- Commitlint锛圕ommit Message妫€鏌ワ級
- HuskyGit Hooks
- CommitlintCommit Message检查
**数据库:**
- Prisma锛圤RM + Migration锛?- pgAdmin锛堟暟鎹<E69A9F>簱绠悊锛?
- PrismaORM + Migration
- pgAdmin数据库管理
---
**最后更新:** 2025-11-06