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
8.5 KiB
8.5 KiB
PRD V4.0 - 第二部分:研究方案与筛选模块
版本: 4.0
日期: 2025-10-21
3. 功能需求详述 (续)
3.1. 研究方案生成模块 (V4.0 新增)
本模块是所有研究工作的起点和“唯一事实来源”,其配置将指导后续所有模块的AI行为和界面展示。
| 需求ID | 需求描述 | 优先级 |
|---|---|---|
| FR-PROT-01 | 结构化方案定义: 提供一个向导式界面,引导用户(或由AI辅助)定义一个完整的循证研究方案。 | 极高 |
| FR-PROT-02 | PICO 与纳入/排除标准定义: 在方案中,提供结构化表单,让用户清晰定义研究的PICO,以及详细的文本格式的纳入和排除标准。这将是后续筛选模块的“宪法”。 | 极高 |
| FR-PROT-03 | 数据提取变量清单配置: 在方案中,提供一个变量清单管理功能。 a) 预设清单: 根据用户选择的研究目的(如证据图谱、Meta分析),提供通用的、标准的变量提取清单。 b) 自定义清单: 允许用户在预设清单的基础上,自定义(增、删、改)需要提取的数据变量。此清单将作为“数据提取模块”的唯一依据。 | 极高 |
| FR-PROT-04 | 方案锁定与版本控制: 研究方案一旦确立并开始用于筛选后,应被锁定或进行版本控制。任何后续的修改都应被记录,以保证科研过程的透明性和严谨性。 | 高 |
3.2. 智能文献检索模块
(原3.2模块,序号调整)
| 需求ID | 需求描述 | 优先级 |
|---|---|---|
| FR-SEARCH-01 | 关键词/主题词检索: 提供输入框,支持用户使用标准关键词、MeSH主题词及布尔运算符(AND, OR, NOT)构建PubMed查询。 | 高 |
| FR-SEARCH-02 | 交互式检索策略与语义排序: 提供一个与AI对话的界面,通过多轮交流引导用户明确其核心研究问题。AI根据对话内容,帮助用户构建和优化专业的检索策略。在执行检索后,系统对返回的文献列表进行二次语义相关度分析,并按相关性从高到低进行排序,将最匹配的文献呈现在最前面。 | 高 |
| FR-SEARCH-03 | PubMed API集成: 系统通过API实时连接PubMed数据库,执行检索并获取最新文献列表。 | 高 |
| FR-SEARCH-04 | 结果展示与导入: 以列表形式清晰展示检索结果,包括标题、作者、期刊、摘要等。用户可勾选相关文献,一键导入到项目中进行下一步筛选。 | 高 |
3.3. 标题摘要初筛模块 (V4.0 重构 - V7原型更新)
本模块是筛选流程的第一阶段,仅基于文献的标题和摘要进行快速筛选。 包含设置与启动、审核工作台、初筛结果三个子视图。
| 需求ID | 需求描述 | 优先级 | ||
|---|---|---|---|---|
| FR-TSCR-01 | 设置与启动视图: a) 标准参考: 页面顶部展示从“研究方案”继承的PICO和入排标准(只读),并提供“ | 调整本次筛选标准 |
”入口,允许用户进行仅对本次筛选生效的临时修改。 b) 文献导入: 页面下方提供文献导入功能,**仅支持“上传Excel文件”**方式,并提供模板下载。 c) 启动筛选: 导入文献后,激活“开始AI初筛”按钮。 | 高 |
| FR-TSCR-02 | 表格化审核工作台视图: 核心审核界面采用高信息密度的表格化布局。 a) 标准参考: 工作台顶部提供可折叠的“研究方案概览”面板,展示PICO与入排标准。若应用了临时调整,需有提示。 b) 表格结构: 每一行代表一篇文献,并支持展开显示第二行。 表头采用两行结构:第一行合并单元格标示模型区域,第二行在各模型下细分P/I/C/S/结论列。 主行 (Row 1): 包含展开/收起按钮, 文献ID (PMID), 研究ID (作者姓+年份), 文献来源 (期刊/DOI链接), DS-P(✓/✗/?), DS-I, DS-C, DS-S, DS-结论(纳入/排除), Q3-P, Q3-I, Q3-C, Q3-S, Q3-结论, 冲突状态, 最终决策(下拉选择框)。 展开行 (Row 2): 默认隐藏,点击按钮后展开。仅包含两列,分别显示DS 证据: (P/I/C/S对应的关键短语) 和 Q3 证据: (P/I/C/S对应的关键短语)。 c) 交互: 点击主行中的P/I/C/S判断图标(✓/✗/?),弹出“双视图原文审查模态框”,左侧显示摘要,右侧显示双模型对该维度的详细判断、理由和来源引用,原文自动高亮。 | 极高 | ||
| FR-TSCR-03 | 双模型PICS逐项判断: 双模型(DS/Q3)需基于筛选标准,对每篇文献的P/I/C/S四个维度分别进行判断 (✓/✗/?),提取关键证据短语,并给出一个总览的“纳入/排除”建议。 | 极高 | ||
| FR-TSCR-04 | 分级与冲突管理: 系统需自动识别并高亮(如行背景色)两模型判断不一致的文献(冲突项),允许用户优先筛选处理。 | 高 | ||
| FR-TSCR-05 | 批量操作: 支持对非冲突项进行批量决策。 | 中 | ||
| FR-TSCR-06 | 初筛结果视图 (V7 新增): 提供独立的页面展示初筛的最终结果。 a) 统计概览: 以卡片形式展示“总计筛选文献数”、“初步纳入文献数”、“排除文献数”。 b) PRISMA式排除总结: 以列表形式展示主要的排除原因及其对应的文献数量(如:非RCT n=X, 非目标人群 n=Y ...)。 c) 结果列表: 提供Tab页切换查看“初步纳入”和“排除”的文献列表。表格需包含列:文献ID, 研究ID, 文献来源, 标题, 摘要(可展开), P(内容短语), I, C, S, 结论(纳入/排除), 排除理由。 d) 导出功能: 提供将结果列表导出为Excel的功能。 | 高 |
3.4. 全文复筛模块 (V4.0 新增 - V2原型更新)
本模块是筛选流程的第二阶段,对第一阶段初步纳入的文献,基于全文内容进行更严格的二次筛选。 包含设置与启动、审核工作台、复筛结果三个子视图。
| 需求ID | 需求描述 | 优先级 |
|---|---|---|
| FR-FSCR-01 | 设置与启动视图: a) 标准参考: 与标题摘要阶段类似,提供标准参考区和临时调整入口。 b) 启动路径: 支持两种启动方式:1) 流程衔接: 自动加载从“标题摘要初筛”模块传递过来的“初步纳入”文献列表;2) 独立启动: 若无传入数据,则显示导入选项(上传Excel, 从知识库添加)。 c) 全文获取与管理: 以表格形式展示待复筛文献列表,包含列:文献ID, 文献标题, 获取状态 (需模拟多种状态如获取中/成功/失败)。系统自动尝试获取全文。 d) 手动上传与知识库: 获取失败的文献提供[上传全文]按钮;提供[+ 从知识库添加]按钮入口。 e) 启动复筛: 只有当列表内所有文献状态均为获取成功时,激活“开始全文复筛”按钮(原型中可放宽此限制以方便演示)。 | 高 |
| FR-FSCR-02 | 基于全文的PICS判断: 双模型(DS/Q3)需读取文献全文,并再次基于筛选标准,对P/I/C/S四个维度进行判断 (✓/✗/?),提取关键证据短语,并给出结论建议。 | 极高 |
| FR-FSCR-03 | 表格化审核工作台视图: 复用与“标题摘要初筛”模块完全一致的表格化审核工作台组件(包括表头结构、可展开行、点击弹窗交互),确保用户体验的连贯性。区别在于AI判断的数据源是全文,弹窗中展示的是PDF全文阅读器。 | 极高 |
| FR-FSCR-04 | 产出最终纳入列表: 本模块审核通过的文献,将形成“最终纳入文献列表”,作为下一个“全文解析与数据提取”模块的输入。 | 高 |
| FR-FSCR-05 | 复筛结果视图 (V2 新增): 提供独立的页面展示复筛的最终结果。 a) 统计概览: 展示“总计复筛文献数”、“最终纳入文献数”、“排除文献数”。 b) PRISMA式排除总结: 展示基于全文复筛阶段的排除原因及数量。 c) 结果列表: 提供Tab页切换查看“最终纳入”和“排除”的文献列表。表格需包含列:文献ID, 研究ID, 文献来源, 标题, 最终决策, 决策方式, 排除理由。 d) 导出功能: 提供将结果列表导出为Excel的功能。 | 高 |
<!-- ### 3.5. 全文解析与数据提取模块 (V4.0 重构) ... (内容见第三部分文档) ...
3.6. 数据综合分析与报告生成模块
... (内容见第三部分文档) ... -->