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,84 +1,84 @@
# 浠诲姟19锛氬悗绔<EFBFBD>唬鐮佸垎灞?- 瀹屾垚鎬荤粨
# 任务19后端代码分层 - 完成总结
> **瀹屾垚鏃ユ湡锛?* 2025-11-13
> **浠诲姟缂栧彿锛?* Week 2 Day 8-9 - 浠诲姟19
> **完成日期:** 2025-11-13
> **任务编号:** Week 2 Day 8-9 - 任务19
> **执行人:** AI助手
> **鐘舵€侊細** 鉁?宸插畬鎴?
> **状态:** ✅ 已完成
---
## 📊 任务概览
### 目标
灏嗗悗绔<EFBFBD>唬鐮佷粠鎵佸钩鍖栫粨鏋勯噸缁勪负 **platform / common / modules** 涓夊眰鏋舵瀯銆?
将后端代码从扁平化结构重组为 **platform / common / modules** 三层架构。
### 瀹屾垚搴?
- 鉁?**浠g爜杩佺Щ锛?* 100%锛?9涓<39>枃浠讹級
- 鉁?**瀵煎叆璺<E58F86>緞鏇存柊锛?* 100%
- 鉁?**閰嶇疆鏇存柊锛?* 100%
- 鉁?**鏂囨。瀹屽杽锛?* 100%
- 鈴?**杩愯<E69DA9>鏃舵祴璇曪細** 寰呯敤鎴烽獙璇?
### 完成度
- **代码迁移:** 100%39个文件
- **导入路径更新:** 100%
- **配置更新:** 100%
- **文档完善:** 100%
- **运行时测试:** 待用户验证
---
## 鉁?宸插畬鎴愮殑宸ヤ綔
## ✅ 已完成的工作
### 1. 目录结构重组
- 鉁?鍒涘缓 `platform/` 灞傦紙auth, users锛?
- 鉁?鍒涘缓 `common/` 灞傦紙llm, document, rag, middleware, utils锛?
- 鉁?鍒涘缓 `modules/` 灞傦紙aia, pkb, rvw锛?
- ✅ 创建 `platform/` 层(auth, users
- ✅ 创建 `common/` 层(llm, document, rag, middleware, utils
- ✅ 创建 `modules/` 层(aia, pkb, rvw
### 2. 鏂囦欢杩佺Щ锛?9涓<39>枃浠讹級
- 鉁?Common灞傦細10涓<EFBFBD>枃浠?
- 鉁?AIA妯″潡锛?3涓<33>枃浠?
- 鉁?PKB妯″潡锛?涓<>枃浠?
- 鉁?RVW妯″潡锛?涓<>枃浠?
- 鉁?Platform灞傦細2涓猂EADME鍗犱綅
### 2. 文件迁移39个文件
- Common10个文件
- AIA模块13个文件
- PKB模块9个文件
- RVW模块4个文件
- Platform2个README占位
### 3. 代码更新
- 鉁?閰嶇疆TypeScript<EFBFBD>緞鍒<EFBFBD>悕锛園platform, @common, @modules, @config?
- 鉁?鎵归噺鏇存柊鎵€鏈夊<E98F88>鍏ヨ矾寰?
- 鉁?澶勭悊璺ㄦā鍧椾緷璧栵紙AIA 鈫?PKB锛?
- 鉁?鍒涘缓妯″潡璺<E6BDA1>敱缁熶竴瀵煎嚭
- 鉁?閲嶅啓涓诲叆鍙f枃浠?
- ✅ 配置TypeScript路径别名(@platform, @common, @modules, @config
- ✅ 批量更新所有导入路径
- ✅ 处理跨模块依赖(AIA PKB
- ✅ 创建模块路由统一导出
- ✅ 重写主入口文件
### 4. 质量保证
- 鉁?Linter妫€鏌ワ細0涓<EFBFBD>敊璇?
- 鉁?鏋舵瀯鍚堣<E98D9A>鎬э細100%閫氳繃
- Linter检查0个错误
- ✅ 架构合规性:100%通过
### 5. 文档更新
- 鉁?鍒涘缓銆婂悗绔<E68297>唬鐮佸垎灞?杩佺Щ璁″垝.md銆?
- 鉁?鍒涘缓銆婂悗绔<E68297>唬鐮佸垎灞傚疄鏂芥姤鍛?md銆?
- 鉁?鏇存柊銆婂墠鍚庣<E98D9A>妯″潡鍖栨灦鏋勮<E98F8B>璁?V2.md銆嬶紙V2.1锛?
- 鉁?鍒涘缓platform灞俁EADME鍗犱綅
- ✅ 创建《后端代码分层-迁移计划.md
- ✅ 创建《后端代码分层实施报告.md》
- ✅ 更新《前后端模块化架构设计-V2.md》(V2.1
- ✅ 创建platform层README占位
---
## 🎯 关键成果
### 鏂版灦鏋勭壒鐐?
### 新架构特点
```
backend/src/
鈹溾攢鈹€ platform/ # 骞冲彴鍩虹<EFBFBD>灞傦紙Week 3瀹炵幇锛?
鈹溾攢鈹€ common/ # 閫氱敤鑳藉姏灞傦紙LLM銆佹枃妗€丷AG锛?
鈹溾攢鈹€ modules/ # 涓氬姟妯″潡灞傦紙AIA銆丳KB銆丷VW锛?
├── platform/ # 平台基础层(Week 3实现)
├── common/ # 通用能力层LLM、文档、RAG
├── modules/ # 业务模块层AIA、PKB、RVW
├── config/ # 配置
鈹斺攢鈹€ index.ts # 涓诲叆鍙?
└── index.ts # 主入口
```
### 鏋舵瀯浠峰€?
1. **妯″潡鍖栧敭鍗?*锛氭瘡涓<E798A1>ā鍧楀彲鐙<E5BDB2>珛鎵撳寘閿€鍞?
2. **<EFBFBD>淮鎶ゆ€ф彁鍗?*锛氫唬鐮佺粍缁囨竻鏅帮紝鑱岃矗鏄庣‘
3. **<EFBFBD>墿灞曟€у<EFBFBD>寮?*锛氭柊澧炴ā鍧楁垚鏈<E59E9A>檷浣?0%
### 架构价值
1. **模块化售卖**:每个模块可独立打包销售
2. **可维护性提升**:代码组织清晰,职责明确
3. **可扩展性增强**新增模块成本降低90%
4. **技术债务减少**:规范的代码结构
---
## 鈴?寰呯敤鎴峰畬鎴?
## ⏳ 待用户完成
### 立即测试(今天)
1. **<EFBFBD>姩寮€鍙戞湇鍔″櫒锛?*
1. **启动开发服务器:**
```bash
cd backend
npm run dev
@@ -89,18 +89,18 @@ backend/src/
curl http://localhost:3001/health
```
3. **娴嬭瘯API绔<EFBFBD>偣锛?*
- GET /api/v1/projects锛圓IA妯″潡锛?
- GET /api/v1/knowledge-bases锛圥KB妯″潡锛?
- GET /api/v1/review锛圧VW妯″潡锛?
3. **测试API端点**
- GET /api/v1/projectsAIA模块
- GET /api/v1/knowledge-basesPKB模块
- GET /api/v1/reviewRVW模块
### 如果启动失败
**<EFBFBD>兘鍘熷洜锛?* TSX杩愯<E69DA9>鏃舵棤娉曡В鏋愯矾寰勫埆鍚?
**可能原因:** TSX运行时无法解析路径别名
**解决方案(见实施报告):**
1. 浣跨敤tsx鐨?-tsconfig閫夐」
2. 瀹夎<EFBFBD>tsconfig-paths鍖?
1. 使用tsx的--tsconfig选项
2. 安装tsconfig-paths
3. 使用Node原生imports字段
---
@@ -113,11 +113,11 @@ backend/src/
---
## 馃殌 涓嬩竴姝?
## 🚀 下一步
### Week 2 Day 10明天
- 鉁?杩愯<E69DA9>鏃舵祴璇曢獙璇?
- 鉁?Week 2 楠屾敹
- ✅ 运行时测试验证
- Week 2 验收
### Week 3下周
- Platform层实施认证授权、用户管理
@@ -125,12 +125,12 @@ backend/src/
---
**浠诲姟鐘舵€侊細** 鉁?浠g爜杩佺Щ瀹屾垚 | 鈴?绛夊緟杩愯<E69DA9>鏃舵祴璇?
**鎬荤敤鏃讹細** 绾?-5灏忔椂
**鏂囦欢杩佺Щ锛?* 39涓?
**任务状态:** ✅ 代码迁移完成 | ⏳ 等待运行时测试
**总用时:** 约4-5小时
**文件迁移:** 39
**零错误:** Linter 0 error
**馃帀 浠诲姟19鍦嗘弧瀹屾垚锛?*
**🎉 任务19圆满完成**