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,55 +1,55 @@
# V2.2版本变化说明
> **版本ï¼?* V2.2(å‰<EFBFBD>端架构优先版ï¼?
> **å<EFBFBD>布日期ï¼?* 2025-11-09
> **核心å<EFBFBD>˜åŒï¼?* å‰<C3A5>端统一架构æ<E2809E><C3A6>å‰<C3A5>到Week 2 â­<C3A2>â­<C3A2>â­?
> **版本:** V2.2(前端架构优先版)
> **发布日期:** 2025-11-09
> **核心变化:** 前端统一架构提前到Week 2 ⭐⭐⭐
---
## 📊 V2.2 vs V2.1 核心差异
| 维度 | V2.1�| V2.2��| 为什么调整? |
| 维度 | V2.1| V2.2版 ⭐ | 为什么调整? |
|------|-------|---------|------------|
| **Week 2核心任务** | å<>Žç«¯åˆ†å± + LLMç½å…³ | **å‰<C3A5>端统一架构 + å<>Žç«¯åˆ†å±** | 架构先行,é<C592>¿å…<C3A5>ASLå¼€å<E282AC>å<E28098>Žè¿”å·¥ â­<C3A2>â­<C3A2>â­?|
| **å‰<EFBFBD>端架构时机** | 未明ç¡?| **Week 2上å<EFBFBD>Šå¨å®Œæˆ?* | ASL在统一框架ä¸å¼€å<E282AC>?|
| **LLMç½å…³å¼€å<EFBFBD>?* | Week 2完æˆ<EFBFBD> | **推迟到Week 5** | 现有调用已work,é<EFBFBD>¿å…<EFBFBD>过度设è®?|
| **ASLå¼€å<EFBFBD>环å¢?* | ç¬ç«å¼€å<E282AC>?| **统一架构ä¸å¼€å<EFBFBD>?* | ä¸<C3A4>需è¦<C3A8>å<EFBFBD>ŽæœŸé‡<C3A9>æž?|
| **CloseAIé…<EFBFBD>ç½®** | 未æ<EFBFBD><EFBFBD>å<EFBFBD>?| **已完æˆ?* | 4个LLMå<4D>¯ç”¨ï¼ˆå<CB86>«GPT-5ã€<EFBFBD>Claude-4.5)|
| **Week 2核心任务** | 后端分层 + LLM网关 | **前端统一架构 + 后端分层** | 架构先行避免ASL开发后返工 ⭐⭐⭐ |
| **前端架构时机** | 未明确 | **Week 2上半周完成** | ASL在统一框架下开发 |
| **LLM网关开发** | Week 2完成 | **推迟到Week 5** | 现有调用已work避免过度设计 |
| **ASL开发环境** | 独立开发 | **统一架构下开发** | 不需要后期重构 |
| **CloseAI配置** | 未提及 | **已完成** | 4个LLM可用GPT-5Claude-4.5|
---
## 🎯 V2.2版核心ç<EFBFBD>†å¿?
## 🎯 V2.2版核心理念
### 1. 架构先行 â­<C3A2>â­<C3A2>â­?
### 1. 架构先行 ⭐⭐⭐
**问题ï¼?* V2.1版中,å‰<EFBFBD>端架构时机ä¸<EFBFBD>明确
- Week 3å¼€å<EFBFBD>ASL时,å‰<EFBFBD>端还是散乱çš?
- å¼€å<EFBFBD>完å<EFBFBD>Žå†<EFBFBD>é‡<EFBFBD>æž„ â†?大é‡<C3A9>返工
**问题:** V2.1版中,前端架构时机不明确
- Week 3开发ASL时前端还是散乱的
- 开发完后再重构 → 大量返工
**解决ï¼?* V2.2版将å‰<EFBFBD>端架构æ<EFBFBD><EFBFBD>å‰<EFBFBD>到Week 2
- �Week 2先建立统一布局和导�
- âœ?所有模å<C2A1>—(AIAã€<C3A3>PKBã€<C3A3>审稿)æ<E280B0>ä»¶åŒæŽ¥å…?
- âœ?Week 3å¼€å<EFBFBD>ASLæ—¶ï¼Œç´æŽ¥åœ¨ç»Ÿä¸€æ¡†æž¶ä¸?
- âœ?ä¸<C3A4>需è¦<C3A8>å<EFBFBD>ŽæœŸé‡<C3A9>æž?
**解决:** V2.2版将前端架构提前到Week 2
- Week 2先建立统一布局和导航
- ✅ 所有模块AIA、PKB、审稿插件化接入
- Week 3开发ASL时直接在统一框架下
- ✅ 不需要后期重构
### 2. Just-in-timeå¼€å<EFBFBD>­<C3A2>â­<C3A2>
### 2. Just-in-time开发 ⭐⭐
**问题ï¼?* V2.1版Week 2å°±è¦<EFBFBD>å¼€å<EFBFBD>LLMç½å…³
- 还没有实际使用场�
**问题:** V2.1Week 2就要开发LLM网关
- 还没有实际使用场景
- 容易过度设计
**解决�* V2.2版推迟到Week 5
- âœ?Week 3-4 ASLå¼€å<EFBFBD>时,有了实际使用场æ™?
- âœ?Week 5抽å<EFBFBD>LLMç½å…³æ´å<EFBFBD>ˆç<EFBFBD>?
- âœ?现有CloseAIé…<C3A9>置已够ç”?
**解决:** V2.2版推迟到Week 5
- Week 3-4 ASL开发时,有了实际使用场景
- Week 5抽取LLM网关更合理
- ✅ 现有CloseAI配置已够用
### 3. è<EFBFBD>šç„¦æ ¸å¿ƒä»·å€?â­<C3A2>â­<C3A2>
### 3. 聚焦核心价值 ⭐⭐
**原则�*
- Week 1: æ•°æ<EFBFBD>®æž¶æž„基础 âœ?
- Week 2: **å‰<EFBFBD>端+å<>Žç«¯æž¶æž„统ä¸** â­?
- Week 3-4: ASL核心功能 �
- Week 5+: 优化和扩�
**原则:**
- Week 1: 数据架构基础 ✅
- Week 2: **前端+后端架构统一**
- Week 3-4: ASL核心功能 ⭐
- Week 5+: 优化和扩展
---
@@ -59,66 +59,66 @@
```
Day 6-7: 后端代码分层
Day 8-9: LLMç½å…³å¼€å<EFBFBD>?
Day 8-9: LLM网关开发
Day 10: 验收
问题:前端架构未涉及
```
### V2.2版Week 2 �
### V2.2Week 2
```
Day 6-7(上å<EFBFBD>Šå¨ï¼? å‰<C3A5>端统一架构 â­<C3A2>â­<C3A2>â­?
Day 6-7(上半周): 前端统一架构 ⭐⭐⭐
- Day 6上午: 前端架构设计(技术栈、模块化、导航)
- Day 6下午-7: 实施Layout、模块注册、整合现有模块
Day 8-9(ä¸å<EFBFBD>Šå¨ï¼? å<>Žç«¯ä»£ç <C3A7>分å±
Day 8-9(下半周): 后端代码分层
- 三层目录结构
- 保留简单LLM调用够用
Day 10: 验收 + Week 3准备
优势:å‰<EFBFBD>端架构一次到ä½?
优势:前端架构一次到位
```
---
## 🎨 前端架构设计要点
### Week 2 Day 6上å<EFBFBD>ˆçš„æ ¸å¿ƒä»»åŠ?
### Week 2 Day 6上午的核心任务
**需è¦<EFBFBD>决ç­çš„问题ï¼?*
**需要决策的问题:**
1. **技术栈确认**
- UI组件库Ant Design? Material-UI?
- 路由方案React Router配置
- 状æ€<EFBFBD>管ç<EFBFBD>†ï¼šRedux? Zustand? ä¸<EFBFBD>用ï¼?
- 状态管理:Redux? Zustand? 不用?
- 当前Vite构建工具是否需要调整
2. **统一布局设计**
- 顶部导航栏Logo、模块切换、用户信息
- ä¾§è¾¹è<EFBFBD>œå<EFBFBD>•(收ç¼?展开ã€<C3A3>多级è<C2A7>œå<C593>•)
- 侧边菜单(收缩/展开、多级菜单)
- 主内容区
- é<EFBFBD>¢åŒ…å±å¯¼èˆ?
- 面包屑导航
3. **模å<EFBFBD>—æ<EFBFBD>ä»¶åŒæœºåˆ?*
- 模å<EFBFBD>—å¦ä½•注册ï¼?
3. **模块插件化机制**
- 模块如何注册?
- 路由如何动态加载?
- æ<EFBFBD>ƒé™<EFBFBD>å¦ä½•控制ï¼?
- æ ·å¼<EFBFBD>å¦ä½•隔离ï¼?
- 权限如何控制?
- 样式如何隔离?
4. **导航结构**
- 一级导航模块级AIA、PKB、ASL等
- 二级导航:功能级(项ç®ã€<EFBFBD>对è¯<EFBFBD>ã€<EFBFBD>ç­é€‰ç­‰ï¼?
- 二级导航:功能级(项目、对话、筛选等)
- 响应式适配
**设计原则�*
**设计原则:**
- 简单易维护(单人开发)
- 模块化清晰(支持独立开发)
- 扩展性好(新模块快速接入)
- 用户体验佳(统一交互风格�
- 用户体验佳(统一交互风格)
**说明ï¼?* è¿™äºé—®é¢˜åœ¨Week 2 Day 6上å<C5A0>ˆé†ä¸­è®¨è®ºå†³ç­ï¼Œä¸<C3A4>在计åˆä¸­è¯¦ç»†å±•å¼€ã€?
**说明:** 这些问题在Week 2 Day 6上午集中讨论决策不在计划中详细展开。
---
@@ -126,70 +126,70 @@ Day 10: 验收 + Week 3准备
### V2.1版只提到DeepSeek和Qwen
### V2.2版:4个LLM完整é…<EFBFBD>ç½® â­?
### V2.24个LLM完整配置 ⭐
**已完成配置CloseAI**
1. **DeepSeek-V3** (直连)
- 用途:快速åˆ<EFBFBD>ç­ï¼Œæˆ<EFBFBD>本ä½?
- 价格:�.001/1K tokens
- 用途:快速初筛,成本低
- 价格¥0.001/1K tokens
2. **GPT-5-Pro** (CloseAI代ç<EFBFBD>†) â­?新增
- 用途:精准ç­é€‰ï¼Œè´¨é‡<EFBFBD>é«?
- 价格:�.10/1K tokens
2. **GPT-5-Pro** (CloseAI代理) ⭐ 新增
- 用途:精准筛选,质量高
- 价格¥0.10/1K tokens
- Model ID: `gpt-5-pro`
3. **Claude-4.5-Sonnet** (CloseAI代ç<EFBFBD>†) â­?新增
3. **Claude-4.5-Sonnet** (CloseAI代理) ⭐ 新增
- 用途:冲突仲裁,结构化输出
- 价格:�.021/1K tokens
- 价格¥0.021/1K tokens
- Model ID: `claude-sonnet-4-5-20250929`
4. **Qwen-Max** (备�
4. **Qwen-Max** (备选)
- 用途:长文本处理,性价比高
- 价格:�.004/1K tokens
- 价格¥0.004/1K tokens
**筛选策略:**
- **å<EFBFBD>Œæ¨¡åžå¯¹æ¯?*(DeepSeek + GPT-5ï¼? 推è<C2A8><C3A8> â­?
- **三模型仲è£?*ï¼?Claudeï¼? 冲çª<C3A7>æ—¶å<C2B6>¯ç”?
- **æˆ<EFBFBD>本优åŒ**ï¼?0% DeepSeekï¼?0% GPT-5ï¼?
- **双模型对比**DeepSeek + GPT-5- 推荐 ⭐
- **三模型仲裁**+Claude- 冲突时启用
- **成本优化**80% DeepSeek20% GPT-5
**é…<EFBFBD>ç½®æ‡æ¡£ï¼?*
- `02-通用能力å±?01-LLM大模åžç½å…?03-CloseAI醿ˆ<C3A6>指å<E280A1>.md` â­?
**配置文档:**
- `02-通用能力层/01-LLM大模型网关/03-CloseAI集成指南.md`
- `07-运维文档/01-环境配置指南.md`
- `backend/CLOSEAI-CONFIG.md`
---
## �V2.2版优势总结
## V2.2版优势总结
### 核心优势 â­<C3A2>â­<C3A2>â­?
### 核心优势 ⭐⭐⭐
**1. 避免返工(最大价值)**
```
V2.1版流程:
Week 2: 后端分层
Week 3-4: ASLå¼€å<EFBFBD>(å‰<EFBFBD>端散乱ï¼?
Week 5: å<EFBFBD>现需è¦<EFBFBD>é‡<EFBFBD>æž„å‰<EFBFBD>ç«?â†?返工 â<>?
Week 3-4: ASL开发(前端散乱)
Week 5: 发现需要重构前端 → 返工 ❌
V2.2版流程:
Week 2: å‰<EFBFBD>端架构先完æˆ?
Week 3-4: ASLç´æŽ¥åœ¨ç»Ÿä¸€æ¡†æž¶ä¸å¼€å<EFBFBD>?
Week 5: 继续扩展,ä¸<EFBFBD>需è¦<EFBFBD>é‡<EFBFBD>æž?âœ?
Week 2: 前端架构先完成
Week 3-4: ASL直接在统一框架下开发
Week 5: 继续扩展,不需要重构 ✅
```
**2. å¼€å<EFBFBD>效率æ<EFBFBD><EFBFBD>å<EFBFBD>?*
- Week 3å¼€å<EFBFBD>ASL时,å‰<EFBFBD>端框架已就ç»?
**2. 开发效率提升**
- Week 3开发ASL时前端框架已就绪
- 只需关注业务逻辑,不用考虑架构
- 模块插件化,代码结构清晰
**3. 质量保证**
- 4个LLMå·²é…<EFBFBD>置好(å<EFBFBD>«GPT-5å’ŒClaude-4.5ï¼?
- 统一的用户体�
- 便于测试和维�
- 4个LLM已配置好GPT-5Claude-4.5
- 统一的用户体验
- 便于测试和维护
**4. 灵活扩展**
- 新模块直接插入统一框架
- ä¸<EFBFBD>å½±å“<EFBFBD>现有模å<EFBFBD>?
- 不影响现有模块
- 前端架构稳定
---
@@ -198,55 +198,55 @@ Week 5: 继续扩展,不需要重
### 决策1前端架构提前到Week 2
**背景�*
**背景:**
- 用户反馈:前端各模块独立散乱,需要统一
- ASL是é‡<EFBFBD>ç¹æ¨¡å<EFBFBD>—,ä¸<EFBFBD>应该在散乱架构ä¸å¼€å<EFBFBD>?
- ASL是重点模块,不应该在散乱架构下开发
**决策�*
**决策:**
- Week 2上半周优先完成前端统一架构
- å»ºç«æ¨¡å<EFBFBD>—æ<EFBFBD>ä»¶åŒæœºåˆ?
- ASL在统一框架ä¸å¼€å<EFBFBD>?
- 建立模块插件化机制
- ASL在统一框架下开发
**收益�*
**收益:**
- 避免ASL开发后重构
- æ<EFBFBD><EFBFBD>å<EFBFBD>‡å¼€å<EFBFBD>效çŽ?
- ä¿<EFBFBD>è¯<EFBFBD>用户体验一致æ€?
- 提升开发效率
- 保证用户体验一致性
---
### 决策2LLM网关推迟到Week 5
**背景�*
**背景:**
- 现有DeepSeek和Qwen调用已work
- CloseAIé…<EFBFBD>置已完æˆ<EFBFBD>(GPT-5ã€<EFBFBD>Claude-4.5å<EFBFBD>¯ç”¨ï¼?
- Week 2时间有é™<EFBFBD>,需è¦<EFBFBD>è<EFBFBD>šç„¦å‰<EFBFBD>端架æž?
- CloseAI配置已完成(GPT-5Claude-4.5可用)
- Week 2时间有限,需要聚焦前端架构
**决策�*
**决策:**
- Week 2只保留简单LLM调用
- Week 3-4 ASL开发时使用现有调用
- Week 5有了实践经验再统一抽取LLM网关
**收益�*
**收益:**
- 避免过度设计
- è<EFBFBD>šç„¦æ ¸å¿ƒä»·å€?
- Just-in-timeå¼€å<EFBFBD>?
- 聚焦核心价值
- Just-in-time开发
---
### 决ç­3ï¼šé†æˆ<EFBFBD>CloseAI(GPT-5å’ŒClaude-4.5ï¼?
### 决策3集成CloseAIGPT-5Claude-4.5
**背景�*
**背景:**
- AI智能文献需要高质量的LLM
- DeepSeek虽快但准确率85%
- GPT-5和Claude-4.5准确�5%+
- GPT-5Claude-4.5准确率95%+
**决策�*
- é…<EFBFBD>ç½®CloseAI代ç<EFBFBD>†ï¼ˆå·²å®Œæˆ<EFBFBD>ï¼?
**决策:**
- 配置CloseAI代理(已完成)
- 4个LLM组合使用
- å<EFBFBD>Œæ¨¡åžå¯¹æ¯?+ 三模型仲è£?
- 双模型对比 + 三模型仲裁
**收益�*
- æ‡çŒ®ç­é€‰è´¨é‡<EFBFBD>大幅æ<EFBFBD><EFBFBD>å<EFBFBD>?
**收益:**
- 文献筛选质量大幅提升
- 成本可控(灵活策略)
- 国内稳定访问
@@ -256,47 +256,47 @@ Week 5: 继续扩展,不需要重
### 如果还没开始Week 1
1. 按V2.2版执�
2. Week 1é‡<EFBFBD>ç¹ï¼šSchema隔离ï¼?详细+7空)
3. Week 2é‡<EFBFBD>ç¹ï¼?*å‰<C3A5>端架构优先** â­<C3A2>â­<C3A2>â­?
1. V2.2版执行
2. Week 1重点Schema隔离3详细+7空
3. Week 2重点:**前端架构优先** ⭐⭐⭐
### 妿žœWeek 1已完æˆ?
### 如果Week 1已完成
1. **立即启动Week 2前端架构设计**
2. Day 6上å<EFBFBD>ˆï¼šå‰<EFBFBD>端架构设计会è®?â­?
2. Day 6上午:前端架构设计会议 ⭐
3. Day 6下午-7实施前端统一架构
4. Day 8-9:å<EFBFBD>Žç«¯ä»£ç <EFBFBD>分å±?
4. Day 8-9:后端代码分层
### 如果已经在开发ASL
1. **æšå<EFBFBD>œASLå¼€å<EFBFBD>?*
1. **暂停ASL开发**
2. **补做前端统一架构**
3. å°†ASLé‡<EFBFBD>构到统一框架ä¸?
4. 虽然会有一点返工,但长远更�
3. 将ASL重构到统一框架下
4. 虽然会有一点返工,但长远更好
---
## 📚 相关文档
**V2.2版完整计划:**
- [下一阶段行动计划-V2.2-å‰<C3A5>端架构优先ç‰?md](./下一阶段行动计划-V2.2-å‰<C3A5>端架构优先ç‰?md) â­<C3A2>â­<C3A2>â­?
- [下一阶段行动计划-V2.2-前端架构优先版.md](./下一阶段行动计划-V2.2-前端架构优先版.md) ⭐⭐⭐
**前端架构参考:**
- [å‰<EFBFBD>端总体架构设计](../01-å¹³å<C2B3>°åŸºç¡€å±?06-å‰<C3A5>端架构/01-å‰<C3A5>端总体架构设计.md)
- [导航结构设计](../01-å¹³å<C2B3>°åŸºç¡€å±?06-å‰<C3A5>端架构/02-导航结构设计.md)
- [前端总体架构设计](../01-平台基础层/06-前端架构/01-前端总体架构设计.md)
- [导航结构设计](../01-平台基础层/06-前端架构/02-导航结构设计.md)
**LLM配置参考**
- [CloseAI醿ˆ<EFBFBD>指å<EFBFBD>](../02-通用能力å±?01-LLM大模åžç½å…?03-CloseAI醿ˆ<C3A6>指å<E280A1>.md) â­?
- [CloseAI集成指南](../02-通用能力层/01-LLM大模型网关/03-CloseAI集成指南.md)
- [环境配置指南](../07-运维文档/01-环境配置指南.md)
**V2.1版对比:**
- [下一阶段行动计划-V2.1-务实�md](./下一阶段行动计划-V2.1-务实�md)
- [下一阶段行动计划-V2.1-务实版.md](./下一阶段行动计划-V2.1-务实版.md)
---
**更新日期�* 2025-11-09
**更新日期:** 2025-11-09
**制定人:** AI助手
**核心ç<EFBFBD>†å¿µï¼?* 架构先行 + Just-in-time + è<>šç„¦æ ¸å¿ƒ = 高效务实ï¼?â­<C3A2>â­<C3A2>â­?
**核心理念:** 架构先行 + Just-in-time + 聚焦核心 = 高效务实! ⭐⭐⭐