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,46 +1,46 @@
# ASL妯″潡寮€鍙?- 2025-11-18 鍏ㄥぉ鎬荤粨鎶ュ憡
# ASL模块开发 - 2025-11-18 全天总结报告
**日期**: 2025-11-18
**工作时长**: 全天
**寮€鍙戦樁娈?*: Week 1瀹屾垚 + Prompt浼樺寲 + Phase 2璁″垝
**开发阶段**: Week 1完成 + Prompt优化 + Phase 2计划
---
## 📊 今日核心成果
### 1. 鉁?瀹屾垚Prompt璁捐<EFBFBD>涓庢祴璇曪紙涓婂崍锛?
### 1. ✅ 完成Prompt设计与测试(上午)
- 设计MVP Prompt v1.0.0
- 娴嬭瘯10绡嘢GLT2鎶戝埗鍓傛枃鐚?
- 测试10篇SGLT2抑制剂文献
- 双模型一致率: 70%
- 鍑嗙‘鐜? 60%
- 准确率: 60%
### 2. 鉁?瀹屾垚鍗掍腑鏁版嵁娉涘寲娴嬭瘯锛堜腑鍗堬級
### 2. ✅ 完成卒中数据泛化测试(中午)
- 娴嬭瘯5绡囧崚涓<EFBFBD>爺绌舵枃鐚?
- 测试5篇卒中研究文献
- 发现泛化能力问题
- 鍑嗙‘鐜? 60%锛堟爣鍑嗘ā寮忥級
- 准确率: 60%(标准模式)
- 修复测试脚本Bug
### 3. 鉁?瀹屾垚涓ゆ<E6B693>绯荤粺娴嬭瘯锛堜笅鍗堬級
### 3. ✅ 完成两步系统测试(下午)
**绗?姝? 鍥藉唴澶栨ā鍨嬪<E98DA8>姣?*
- DeepSeek-V3 + Qwen-Max: 鍑嗙‘鐜?0%锛孞SON绋冲畾100% 鉁?
- GPT-4o + Claude-4.5: JSON閿欒<EFBFBD>鐜?0% 鉂?
**第1步: 国内外模型对比**
- DeepSeek-V3 + Qwen-Max: 准确率40%JSON稳定100%
- GPT-4o + Claude-4.5: JSON错误率80%
- **结论**: 不是模型能力问题
**绗?姝? 涓夌<E6B693>绛涢€夐<E282AC>鏍兼祴璇?*
- 鏍囧噯妯″紡: 鍑嗙‘鐜?0%锛屽彫鍥炵巼0%锛岀簿纭<E7B0BF>100%
- 瀹芥澗妯″紡: 鍑嗙‘鐜?0%锛屽彫鍥炵巼50%锛岀簿纭<E7B0BF>0%
**第2步: 三种筛选风格测试**
- 标准模式: 准确率60%召回率0%,精确率100%
- 宽松模式: 准确率20%召回率50%,精确率0%
- **结论**: 单纯调整宽松/严格无法根本解决问题
### 4. 鉁?淇<><E6B787>JSON瑙瀽鍣?
### 4. ✅ 修复JSON解析器
- 支持中文引号自动转换
- 支持全角符号转换
- 娴嬭瘯閫氳繃鐜? 100% (9/9)
- 测试通过率: 100% (9/9)
### 5. 鉁?瀹炵幇涓夌<E6B693>绛涢€夐<E282AC>鏍?
### 5. ✅ 实现三种筛选风格
**代码实现**:
- `prompts/asl/screening/v1.1.0-lenient.txt` (宽松Prompt)
@@ -49,11 +49,11 @@
- `llmScreeningService.ts` 支持`style`参数
- `screening.schema.ts` 动态生成Prompt
### 6. 鉁?瑙勫垝Phase 2鍔熻兘
### 6. ✅ 规划Phase 2功能
**智能Prompt生成模块**:
- 鐢ㄦ埛杈撳叆PICOS 鈫?AI鍒嗘瀽杈圭晫鎯呭喌 鈫?鐢ㄦ埛纭<E59F9B><E7BAAD> 鈫?鐢熸垚鑷<E59E9A>畾涔塒rompt
- 瀹屾暣璁捐<EFBFBD>鏂囨。: `07-鏅鸿兘Prompt鐢熸垚妯″潡寮€鍙戣<EFBFBD>鍒?md`
- 用户输入PICOS → AI分析边界情况 → 用户确认 → 生成自定义Prompt
- 完整设计文档: `07-智能Prompt生成模块开发计划.md`
- 整合到主任务清单: `03-任务分解.md`
---
@@ -62,23 +62,23 @@
### 核心问题确认
**鍑嗙‘鐜囦笉楂樼殑鏍规湰鍘熷洜** = AI涓庝汉绫诲<E7BBAB>杈圭晫鎯呭喌鐨勭悊瑙樊寮?
**准确率不高的根本原因** = AI与人类对边界情况的理解差异
**具体表现**:
1. "浜氭床浜虹兢"鏄<>繀椤昏繕鏄<E7B995>紭鍏堬紵鈫?AI鍜屼汉绫荤悊瑙笉鍚?
2. "缁艰堪"鏄<>惁鍖呮嫭Meta鍒嗘瀽锛熲啋 瀹氫箟涓嶆槑纭?
3. "瀹夋叞鍓傚<EFBFBD>鐓?鏄<>惁鍖呮嫭鍙︿竴绉嶈嵂鐗╋紵鈫?杈圭晫妯$硦
1. "亚洲人群"是必须还是优先?→ AI和人类理解不同
2. "综述"是否包括Meta分析→ 定义不明确
3. "安慰剂对照"是否包括另一种药物?→ 边界模糊
**不是因为**:
- 鉂?妯″瀷鏅哄晢涓嶅<E6B693>
- 鉂?Prompt璁捐<EFBFBD>涓嶅ソ
- 鉂?瀹芥澗/涓ユ牸绋嬪害涓嶅<E6B693>
- ❌ 模型智商不够
- Prompt设计不好
- ❌ 宽松/严格程度不对
---
## 馃摝 浠婃棩浜や粯鐗?
## 📦 今日交付物
### 浠g爜鏂囦欢 (10涓?
### 代码文件 (10个)
**新增**:
1. `prompts/asl/screening/v1.1.0-lenient.txt`
@@ -94,58 +94,58 @@
2. `src/modules/asl/services/llmScreeningService.ts` (支持style参数)
3. `src/common/utils/jsonParser.ts` (修复中文引号)
### 鏂囨。鏂囦欢 (7涓?
### 文档文件 (7个)
1. `05-寮€鍙戣<EFBFBD>褰?2025-11-18-Prompt璁捐<EFBFBD>涓庢祴璇曞畬鎴愭姤鍛?md`
2. `05-寮€鍙戣<EFBFBD>褰?2025-11-18-鍗掍腑鏁版嵁娉涘寲娴嬭瘯鎶ュ憡.md`
3. `05-寮€鍙戣<EFBFBD>褰?2025-11-18-涓ゆ<EFBFBD>娴嬭瘯瀹屾暣鎶ュ憡.md`
4. `05-寮€鍙戣<EFBFBD>褰?2025-11-18-浠婃棩宸ヤ綔鎬荤粨.md`
5. `05-寮€鍙戣<EFBFBD>褰?README.md`
6. `02-鎶€鏈<EFBFBD><EFBFBD>璁?07-鏅鸿兘Prompt鐢熸垚妯″潡寮€鍙戣<E98D99>鍒?md`
7. `00-鏂癆I浜ゆ帴鏂囨。.md` 猸?
8. `銆愮粰鏂癆I銆戝揩閫熷紑濮?md` 猸?(鏈<>枃浠?
1. `05-开发记录/2025-11-18-Prompt设计与测试完成报告.md`
2. `05-开发记录/2025-11-18-卒中数据泛化测试报告.md`
3. `05-开发记录/2025-11-18-两步测试完整报告.md`
4. `05-开发记录/2025-11-18-今日工作总结.md`
5. `05-开发记录/README.md`
6. `02-技术设计/07-智能Prompt生成模块开发计划.md`
7. `00-新AI交接文档.md`
8. `【给新AI】快速开始.md` ⭐ (本文件)
**系统文档更新**:
- `docs/00-绯荤粺鎬讳綋璁捐<EFBFBD>/00-绯荤粺褰撳墠鐘舵€佷笌寮€鍙戞寚鍗?md` (V2.4.0)
- `docs/00-系统总体设计/00-系统当前状态与开发指南.md` (V2.4.0)
---
## 📈 数据统计
- 鏂板<EFBFBD>: ~2100琛?
- <EFBFBD>敼浠: ~200琛?
- 鏂板<EFBFBD>鏂囨。: ~2000琛?
- 新增代码: ~2100
- 修改代码: ~200
- 新增文档: ~2000
- 测试案例: 15次LLM调用
- Bug<EFBFBD><EFBFBD>: 3涓?
- Bug修复: 3
---
## 馃幆 鏄庣‘鐨勪笅涓€姝?
## 🎯 明确的下一步
### 绔嬪嵆琛屽姩锛氬紑濮媁eek 2鍓嶇<E98D93>寮€鍙?
### 立即行动开始Week 2前端开发
**鍙傝€冩枃妗?*:
1. `04-寮€鍙戣<EFBFBD>鍒?03-浠诲姟鍒嗚В.md` - Week 2浠诲姟娓呭崟
**参考文档**:
1. `04-开发计划/03-任务分解.md` - Week 2任务清单
2. `03-UI设计/AI智能文献-标题摘要初筛原型.html` - UI原型
3. `00-鏂癆I浜ゆ帴鏂囨。.md` - 瀹屾暣浜ゆ帴鏂囨。锛?鍒嗛挓闃呰<E99783>锛?
3. `00-新AI交接文档.md` - 完整交接文档5分钟阅读
**寮€鍙戦噸鐐?*:
- 鉁?椤圭洰绠悊鐣岄潰锛圥ICOS杈撳叆锛?
- 鉁?鏂囩尞瀵煎叆鐣岄潰锛圗xcel涓婁紶锛?
- 猸?**绛涢€夌粨鏋滃睍绀猴紙鏄剧ず涓や釜妯″瀷鐞嗙敱锛?* 鈫?鏈€閲嶈<E996B2>
**开发重点**:
- ✅ 项目管理界面PICOS输入
- ✅ 文献导入界面Excel上传
- **筛选结果展示(显示两个模型理由)** ← 最重要
---
## ⚠️ 关键提醒
1. **鍚庣<EFBFBD>宸插畬鎴?* - 10涓狝PI鍙<49>互鐩存帴璋冪敤
2. **鏄剧ず妯″瀷鐞嗙敱** - 鐢ㄦ埛寮鸿皟鐨勬牳蹇冮渶姹?
3. **涓夌<EFBFBD>绛涢€夐<EFBFBD>鏍?* - 鍚庣<E98D9A>宸叉敮鎸侊紝鍓嶇<E98D93>闇€娣诲姞閫夋嫨鍣?
1. **后端已完成** - 10个API可以直接调用
2. **显示模型理由** - 用户强调的核心需求
3. **三种筛选风格** - 后端已支持,前端需添加选择器
4. **JWT暂时绕过** - 使用默认测试用户
---
## 馃殌 蹇<>€熷懡浠?
## 🚀 快速命令
```bash
# 启动后端
@@ -163,16 +163,16 @@ curl http://localhost:3001/api/v1/asl/health
## 📞 文档位置
**核心文档**:
- 浠诲姟娓呭崟: `04-寮€鍙戣<EFBFBD>鍒?03-浠诲姟鍒嗚В.md`
- 任务清单: `04-开发计划/03-任务分解.md`
- 交接文档: `00-新AI交接文档.md`
- 绯荤粺鐘舵€? `../../../00-绯荤粺鎬讳綋璁捐<EFBFBD>/00-绯荤粺褰撳墠鐘舵€佷笌寮€鍙戞寚鍗?md`
- 系统状态: `../../../00-系统总体设计/00-系统当前状态与开发指南.md`
**鎵€鏈夋枃妗?*: `docs/03-涓氬姟妯″潡/ASL-AI鏅鸿兘鏂囩尞/`
**所有文档**: `docs/03-业务模块/ASL-AI智能文献/`
---
**鐗堟湰**: v1.0 - 鏋佺畝鐗?
**缁?*: 涓嬩竴涓<E7ABB4>帴鎵嬬殑AI
**版本**: v1.0 - 极简版
****: 下一个接手的AI
**来自**: 2025-11-18开发的AI
**祝你开发顺利!** 🎉