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,193 +1,193 @@
|
||||
# 譬<EFBFBD>「俶遭隕∝<EFBFBD>遲幃怙豎りッヲ霑?
|
||||
# 标题摘要初筛需求详述
|
||||
|
||||
> **譁<EFBFBD>。」迚域悽<EFBFBD>?* v1.0
|
||||
> **蛻帛サコ譌・譛滂シ?* 2025-10-29
|
||||
> **扈エ謚、閠<EFBFBD>シ<EFBFBD>** AI譎コ閭ス譁<EFBDBD>鍵蠑蜿大屬髦?
|
||||
> **文档版本:** v1.0
|
||||
> **创建日期:** 2025-10-29
|
||||
> **维护者:** AI智能文献开发团队
|
||||
> **最后更新:** 2025-10-29
|
||||
|
||||
---
|
||||
|
||||
## 📋 文档说明
|
||||
|
||||
譛ャ譁<EFBFBD>。」隸ヲ扈<EFBFBD>緒霑ー譬<EFBFBD>「俶遭隕∝<EFBFBD>遲帶ィ。蝮礼噪蜉溯<EFBFBD>髴豎ゑシ悟渕莠傘RD譁<EFBFBD>。」霑幄。梧黄螻募柱扈<EFBFBD>喧縲?
|
||||
本文档详细描述标题摘要初筛模块的功能需求,基于PRD文档进行扩展和细化。
|
||||
|
||||
---
|
||||
|
||||
## 🎯 功能概述
|
||||
|
||||
**譬<EFBFBD>「俶遭隕∝<EFBFBD>遲<EFBFBD>**譏ッ遲幃画オ∫ィ狗噪隨ャ荳髦カ谿オ<E8B0BF>御サ<E5BEA1>渕莠取枚迪ョ逧<EFBDAE><E980A7><EFBFBD>「伜柱鞫倩ヲ∬ソ幄。悟ソォ騾溽ュ幃峨?
|
||||
**标题摘要初筛**是筛选流程的第一阶段,仅基于文献的标题和摘要进行快速筛选。
|
||||
|
||||
### 譬ク蠢<EFBFBD>ュ占ァ<EFBFBD><EFBFBD>?
|
||||
### 核心子视图
|
||||
|
||||
1. **隶セ鄂ョ荳主星蜉ィ隗<EFBFBD><EFBFBD>?* - 驟咲スョ遲幃画<C280><E794BB>㊥縲∝ッシ蜈・譁<EFBDA5>鍵縲∝星蜉ィ遲幃?
|
||||
2. **陦ィ譬シ蛹門ョ。譬ク蟾・菴懷床** - 蜿梧ィ。蝙輝ICS蛻、譁ュ縲∝<E7B8B2>遯∫ョ。逅<EFBDA1>∝<C280>遲門宛螳?
|
||||
3. **蛻晉ュ帷サ捺棡隗<EFBFBD>崟** - 扈溯ョ。讎りァ医∫サ捺棡蛻苓。ィ縲∝ッシ蜃コ蜉溯<E89C89>?
|
||||
1. **设置与启动视图** - 配置筛选标准、导入文献、启动筛选
|
||||
2. **表格化审核工作台** - 双模型PICS判断、冲突管理、决策制定
|
||||
3. **初筛结果视图** - 统计概览、结果列表、导出功能
|
||||
|
||||
---
|
||||
|
||||
## <EFBFBD>統 蜉溯<E89C89>髴豎りッヲ霑?
|
||||
## 📝 功能需求详述
|
||||
|
||||
### 髴豎?: 隶セ鄂ョ荳主星蜉ィ隗<EFBDA8><E99A97>?
|
||||
### 需求1: 设置与启动视图
|
||||
|
||||
#### FR-TSCR-01.1: 譬<EFBFBD>㊥蜿り<EFBFBD>ア慕、?
|
||||
- **髴豎?*: 鬘オ髱「鬘カ驛ィ螻慕、コ莉?遐皮ゥカ譁ケ譯<EFBDB9>"扈ァ謇ソ逧ПICO蜥悟<E89CA5>謗呈<E8AC97><E59188>㊥<EFBFBD>亥宵隸サ<E99AB8>?
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
#### FR-TSCR-01.1: 标准参考展示
|
||||
- **需求**: 页面顶部展示从"研究方案"继承的PICO和入排标准(只读)
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 清晰展示PICO框架内容
|
||||
- 螻慕、コ郤ウ蜈・譬<EFBFBD>㊥蜥梧賜髯、譬<EFBFBD><EFBFBD>?
|
||||
- 謠蝉セ<EFBFBD>"隹<>紛譛ャ谺。遲幃画<C280><E794BB><EFBFBD>?蜈・蜿」
|
||||
- 展示纳入标准和排除标准
|
||||
- 提供"调整本次筛选标准"入口
|
||||
|
||||
#### FR-TSCR-01.2: 荳エ譌カ隹<EFBFBD>紛遲幃画<EFBFBD><EFBFBD><EFBFBD>?
|
||||
- **髴豎?*: 蜈∬ョク逕ィ謌キ霑幄。御サ<E5BEA1>ッケ譛ャ谺。遲幃臥函謨育噪荳エ譌カ菫ョ謾ケ
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
#### FR-TSCR-01.2: 临时调整筛选标准
|
||||
- **需求**: 允许用户进行仅对本次筛选生效的临时修改
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 蜿ッ菫ョ謾ケPICO蜥悟<EFBFBD>謗呈<EFBFBD><EFBFBD><EFBFBD>?
|
||||
- 菫ョ謾ケ荳榊スア蜩榊次蟋狗<EFBFBD>皮ゥカ譁ケ譯?
|
||||
- 蝨ィ螳。譬ク蟾・菴懷床譛画<EFBFBD>遑ョ謠千、?
|
||||
- 可修改PICO和入排标准
|
||||
- 修改不影响原始研究方案
|
||||
- 在审核工作台有明确提示
|
||||
|
||||
#### FR-TSCR-01.3: 文献导入
|
||||
- **髴豎?*: 莉<>髪謖?荳贋シ<E8B48B>Excel譁<6C>サカ"譁ケ蠑擾シ梧署萓帶ィ。譚ソ荳玖ス?
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
- **需求**: 仅支持"上传Excel文件"方式,提供模板下载
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 支持Excel文件上传
|
||||
- 提供标准模板下载
|
||||
- 文件格式验证
|
||||
- 导入结果预览
|
||||
|
||||
#### FR-TSCR-01.4: 蜷ッ蜉ィ遲幃?
|
||||
- **髴豎?*: 蟇シ蜈・譁<EFBDA5>鍵蜷趣シ梧ソ豢?蠑蟋帰I蛻晉ュ<E69989>"謖蛾聴
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
#### FR-TSCR-01.4: 启动筛选
|
||||
- **需求**: 导入文献后,激活"开始AI初筛"按钮
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 謖蛾聴迥カ諤∵而蛻?
|
||||
- 轤ケ蜃サ蜷主星蜉ィAI遲幃我ササ蜉?
|
||||
- 按钮状态控制
|
||||
- 点击后启动AI筛选任务
|
||||
- 显示任务进度
|
||||
|
||||
---
|
||||
|
||||
### 髴豎?: 陦ィ譬シ蛹門ョ。譬ク蟾・菴懷床隗<E5BA8A>崟 箝絶ュ絶ュ?
|
||||
### 需求2: 表格化审核工作台视图 ⭐⭐⭐
|
||||
|
||||
#### FR-TSCR-02.1: 表格结构设计
|
||||
- **髴豎?*: 鬮倅ソ。諱ッ蟇<EFBDAF>コヲ逧<EFBDA6>。ィ譬シ蛹門ク<E99680>ア
|
||||
- **莨伜<EFBFBD>郤?*: 譫<>ォ<EFBFBD>
|
||||
- **需求**: 高信息密度的表格化布局
|
||||
- **优先级**: 极高
|
||||
- **验收标准**:
|
||||
- 荳、陦瑚。ィ螟エ扈捺桷<EFBFBD>域ィ。蝙句玄蝓?+ P/I/C/S蛻暦シ<EFBFBD>
|
||||
- 荳サ陦悟桁蜷ォ謇譛牙<EFBFBD>髞ョ菫。諱?
|
||||
- 螻募シ陦梧仞遉コ隸∵紺遏ュ隸?
|
||||
- 两行表头结构(模型区域 + P/I/C/S列)
|
||||
- 主行包含所有关键信息
|
||||
- 展开行显示证据短语
|
||||
- 支持展开/收起
|
||||
|
||||
#### FR-TSCR-02.2: 双模型PICS判断
|
||||
- **髴豎?*: DS蜥群3讓。蝙句<EFBFBD>蛻ォ蟇ケP/I/C/S蝗帑クェ扈エ蠎ヲ霑幄。悟愛譁ュ
|
||||
- **莨伜<EFBFBD>郤?*: 譫<>ォ<EFBFBD>
|
||||
- **需求**: DS和Q3模型分别对P/I/C/S四个维度进行判断
|
||||
- **优先级**: 极高
|
||||
- **验收标准**:
|
||||
- 豈丈クェ扈エ蠎ヲ譏セ遉コ蛻、譁ュ扈捺棡<EFBFBD>遺恣/笨??<3F>?
|
||||
- 每个维度显示判断结果(✓/✗/?)
|
||||
- 展示双模型的判断结果
|
||||
- 支持查看详细判断理由
|
||||
|
||||
#### FR-TSCR-02.3: 证据短语提取
|
||||
- **髴豎?*: 螻慕、コAI謠仙叙逧<E58F99><E980A7>髞ョ隸∵紺遏ュ隸?
|
||||
- **莨伜<EFBFBD>郤?*: 譫<>ォ<EFBFBD>
|
||||
- **需求**: 展示AI提取的关键证据短语
|
||||
- **优先级**: 极高
|
||||
- **验收标准**:
|
||||
- 螻募シ陦梧仞遉コDS蜥群3逧<EFBFBD>ッ∵紺遏ュ隸?
|
||||
- 展开行显示DS和Q3的证据短语
|
||||
- 短语清晰标注对应的P/I/C/S维度
|
||||
- 支持点击查看原文
|
||||
|
||||
#### FR-TSCR-02.4: 原文审查模态框
|
||||
- **髴豎?*: 轤ケ蜃サ蛻、譁ュ蝗セ譬<EFBDBE>シケ蜃コ蜿瑚ァ<E7919A>崟螳。譟・讓。諤∵。<E288B5>
|
||||
- **莨伜<EFBFBD>郤?*: 譫<>ォ<EFBFBD>
|
||||
- **需求**: 点击判断图标弹出双视图审查模态框
|
||||
- **优先级**: 极高
|
||||
- **验收标准**:
|
||||
- 左侧显示摘要
|
||||
- 蜿ウ萓ァ譏セ遉コ蜿梧ィ。蝙句愛譁ュ隸ヲ諠?
|
||||
- 右侧显示双模型判断详情
|
||||
- 原文自动高亮
|
||||
- 支持来源引用查看
|
||||
|
||||
---
|
||||
|
||||
### 髴豎?: 蜀イ遯∫ョ。逅<EFBDA1>
|
||||
### 需求3: 冲突管理
|
||||
|
||||
#### FR-TSCR-03.1: 冲突识别
|
||||
- **髴豎?*: 閾ェ蜉ィ隸<EFBDA8>悪荳、讓。蝙句愛譁ュ荳堺ク閾エ逧<EFBDB4>枚迪ョ
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
- **需求**: 自动识别两模型判断不一致的文献
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 自动检测冲突项
|
||||
- 隗<EFBFBD>ァ蛾ォ倅コョ<EFBFBD>亥ヲり。瑚レ譎ッ濶イ<EFBFBD>?
|
||||
- 謾ッ謖∝<EFBFBD>遯<EFBFBD>。ケ遲幃?
|
||||
- 视觉高亮(如行背景色)
|
||||
- 支持冲突项筛选
|
||||
|
||||
#### FR-TSCR-03.2: 冲突处理
|
||||
- **髴豎?*: 蜈∬ョク逕ィ謌キ蟇ケ蜀イ遯<EFBDB2>。ケ霑幄。御ココ蟾・莉イ陬<EFBDB2>
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
- **需求**: 允许用户对冲突项进行人工仲裁
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 支持查看冲突详情
|
||||
- 謾ッ謖<EFBFBD>画叫譛扈亥<EFBFBD>遲?
|
||||
- 支持选择最终决策
|
||||
- 记录决策原因
|
||||
|
||||
---
|
||||
|
||||
### 髴豎?: 謇ケ驥乗桃菴<E6A183>
|
||||
### 需求4: 批量操作
|
||||
|
||||
#### FR-TSCR-04.1: 批量决策
|
||||
- **髴豎?*: 謾ッ謖∝ッケ髱槫<E9ABB1>遯<EFBFBD>。ケ霑幄。梧音驥丞<E9A9A5>遲?
|
||||
- **莨伜<EFBFBD>郤?*: 荳?
|
||||
- **需求**: 支持对非冲突项进行批量决策
|
||||
- **优先级**: 中
|
||||
- **验收标准**:
|
||||
- 謾ッ謖∝、夐画枚迪?
|
||||
- 支持多选文献
|
||||
- 批量设置决策结果
|
||||
- 批量设置决策原因
|
||||
|
||||
---
|
||||
|
||||
### 髴豎?: 蛻晉ュ帷サ捺棡隗<E6A3A1>崟
|
||||
### 需求5: 初筛结果视图
|
||||
|
||||
#### FR-TSCR-05.1: 统计概览
|
||||
- **髴豎?*: 螻慕、コ遲幃臥サ溯ョ。菫。諱?
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
- **需求**: 展示筛选统计信息
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 卡片形式展示统计数字
|
||||
- 蛹<EFBFBD>峡<EFBFBD>壽サ隶。縲∫コウ蜈・縲∵賜髯、謨ー驥?
|
||||
- 包括:总计、纳入、排除数量
|
||||
|
||||
#### FR-TSCR-05.2: PRISMA式排除总结
|
||||
- **髴豎?*: 螻慕、コ荳サ隕∵賜髯、蜴溷屏蜿頑焚驥?
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
- **需求**: 展示主要排除原因及数量
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 列表展示排除原因
|
||||
- 显示对应文献数量
|
||||
- 支持点击查看详情
|
||||
|
||||
#### FR-TSCR-05.3: 结果列表
|
||||
- **髴豎?*: Tab鬘オ蛻<EFBFBD>困譟・逵狗コウ蜈・蜥梧賜髯、逧<EFBFBD>枚迪ョ蛻苓。?
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
- **需求**: Tab页切换查看纳入和排除的文献列表
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 支持Tab切换
|
||||
- 表格展示文献信息
|
||||
- 支持筛选和搜索
|
||||
|
||||
#### FR-TSCR-05.4: 导出功能
|
||||
- **髴豎?*: 蟆<>サ捺棡蛻苓。ィ蟇シ蜃コ荳コExcel
|
||||
- **莨伜<EFBFBD>郤?*: 鬮?
|
||||
- **需求**: 将结果列表导出为Excel
|
||||
- **优先级**: 高
|
||||
- **验收标准**:
|
||||
- 支持导出为Excel格式
|
||||
- 蛹<EFBFBD>性螳梧紛逧<EFBFBD>枚迪ョ菫。諱?
|
||||
- 包含完整的文献信息
|
||||
- 格式规范清晰
|
||||
|
||||
---
|
||||
|
||||
## <EFBFBD>投 髱槫粥閭ス諤ァ髴豎?
|
||||
## 📊 非功能性需求
|
||||
|
||||
- **諤ァ閭ス**: 蜊墓ャ。遲幃画髪謖?000+譁<EFBFBD>鍵
|
||||
- **蜩榊コ疲慮髣エ**: 蜊穂クェ譁<EFBDAA>鍵蛻、譁ュ < 5遘?
|
||||
- **蟷カ蜿<EFBFBD>**: 謾ッ謖∝、夂畑謌キ蜷梧慮遲幃?
|
||||
- **蜿ッ髱<EFBFBD>諤?*: 謾ッ謖∽ササ蜉。荳ュ譁ュ蜥梧△螟?
|
||||
- **性能**: 单次筛选支持1000+文献
|
||||
- **响应时间**: 单个文献判断 < 5秒
|
||||
- **并发**: 支持多用户同时筛选
|
||||
- **可靠性**: 支持任务中断和恢复
|
||||
|
||||
---
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- [PRD譁<EFBFBD>。」 - 蛻晉ュ帑ク主、咲ュ嫋(../../00-鬘ケ逶ョ讎りソー/AI譎コ閭ス譁<EFBDBD>鍵PRD<52>?<3F>?蛻晉ュ帑ク主、咲ュ?md)
|
||||
- [PRD文档 - 初筛与复筛](../../00-项目概述/AI智能文献PRD(2)-初筛与复筛.md)
|
||||
- [原型图](../../01-设计文档/AI智能文献-标题摘要初筛原型.html)
|
||||
- [謨ー謐ョ蠎楢ョセ隶。](../02-謚譛ッ隶セ隶?01-謨ー謐ョ蠎楢ョセ隶?md)
|
||||
- [API隶セ隶。隗<EFBFBD>激](../02-謚譛ッ隶セ隶?02-API隶セ隶。隗<EFBDA1>激.md)
|
||||
- [数据库设计](../02-技术设计/01-数据库设计.md)
|
||||
- [API设计规范](../02-技术设计/02-API设计规范.md)
|
||||
|
||||
---
|
||||
|
||||
**譁<EFBFBD>。」迚域悽<EFBFBD>?* v1.0
|
||||
**文档版本:** v1.0
|
||||
**最后更新:** 2025-10-29
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user