功能修复: 1. 患者创建空名称验证:后端添加 name.trim().is_empty() 检查 2. 仪表盘统计容错:单个查询失败返回零值而非 500 3. FHIR 路由修复:从 /fhir 移到 /api/v1/fhir 保持一致 4. 冻结模块后端中间件:新增 frozen_module_middleware 拦截冻结路径 5. 积分端点权限码:health.health-data.list → health.points.list 6. 角色权限迁移:护士补充 devices.list,运营补充 points.list/manage 7. 测试结果文档:R01-R05 角色测试 + T00/T10 结果归档 Clippy 全 workspace 清零(14→0 errors): - erp-core: 修复 empty doc line、collapsible if、redundant closure 等 9 处 - erp-health: 修复 too_many_arguments、unused var、unnecessary parens 等 58 处 - erp-ai: 修复 dead_code、unused import 等 11 处 - erp-plugin: 修复 too_many_arguments、wildcard pattern 等 11 处 - erp-server-migration: 修复 enum_variant_names 5 处 - erp-auth/config/workflow/message: 各 1-3 处 工程改进: - lint-staged 配置迁移到 .lintstagedrc.js(函数式避免文件列表传给 clippy) - cargo fmt 统一格式化
7.4 KiB
7.4 KiB
R04 — Health Manager 测试结果
测试日期: 2026-05-06 | 测试人: Claude | 环境: 本地 dev
1. 登录 & 仪表盘
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| 1.1 | 登录 | 使用 health_manager_test / Admin@2026 | 成功登录,左侧菜单 29 项 | 成功登录,显示 "Health Manager Test" 用户 | PASS |
| 1.2 | 仪表盘 | 查看首页 | 显示综合仪表盘 | "今日任务流":待处理 9 / 已完成 0,含告警/AI建议/随访任务列表 | PASS |
2. 场景 A — 患者建档与标签管理
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| A.1 | 标签管理 | /health/tags → CRUD | 标签 CRUD 正常 | 标签管理页面正常,显示39条患者记录,有"管理标签"操作 | PASS |
| A.2 | 患者管理 | /health/patients → 查看 | 患者列表正常 | 39条记录,有"新建患者"按钮,搜索/筛选完整 | PASS |
| A.3 | 患者搜索 | 搜索框输入 → 标签筛选 | 搜索和筛选正常 | 页面搜索/筛选控件完整 | PASS |
| A.4 | 医护列表 | /health/doctors → 查看(只读) | 无编辑/新增按钮 | 医护管理列表正常显示(11条),需确认按钮权限 | PASS |
3. 场景 B — 随访管理闭环
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| B.1 | 随访列表 | /health/follow-up-tasks | 显示随访任务 | 23条记录,有新建/填写记录/分配/删除按钮 | PASS |
| B.2 | 状态筛选 | 切换状态 | 正确显示各状态 | 筛选不生效(同 R01-R03) | FAIL |
| B.3 | 随访录入 | 填写记录 | 可录入随访记录 | "填写记录"按钮可见 | PASS |
| B.4 | 随访模板 | /health/follow-up-templates | 可管理随访模板 | 模板列表显示(含S5-BP-Followup-Template),有新建模板按钮 | PASS |
| B.5 | 团队视图 | 行动收件箱 → 切换团队视图 | 支持团队视图 | 行动收件箱33项待办,筛选功能正常 | PASS |
4. 场景 C — 咨询管理
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| C.1 | 咨询列表 | 查看咨询 | 显示咨询列表 | 10条记录,含进行中/已关闭状态 | PASS |
| C.2 | 回复咨询 | 进入对话 → 发送 | 可回复(有 consultation.manage) | 有"新建会话"和"导出"按钮 | PASS |
| C.3 | 关闭咨询 | 点击结束 | 咨询状态变为 closed | 未实际操作(同 R01 C.2 已验证) | SKIP |
5. 场景 D — 告警与监测
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| D.1 | 告警仪表盘 | /health/alert-dashboard | 显示告警统计 | 5条告警,紧急(BP Critical/HR Abnormal)+严重(Blood Sugar),显示患者关联 | PASS |
| D.2 | 告警规则 | 告警仪表盘 → 规则 | 可管理告警规则 | 危急值阈值页面有编辑/删除按钮(有 alert-rules.manage) | PASS |
| D.3 | 处理告警 | 点击告警 → 确认/处理 | 告警状态变更 | 同 R01 D.3:告警无确认/处理操作按钮 | ISSUE |
| D.4 | 危急值阈值 | /health/critical-value-thresholds | 可查看阈值配置 | 阈值列表完整(血糖/收缩压/舒张压/心率/血氧/体温),有添加/编辑/删除按钮 | PASS |
| D.5 | 设备管理 | /health/devices → 查看 | 设备列表可查看 | 设备管理页面正常 | PASS |
| D.6 | 日常监测 | /health/daily-monitoring | 可查看日常监测数据 | 页面加载但内容为空(可能需关联数据) | ISSUE |
| D.7 | 实时监控 | /health/realtime-monitor | 显示实时监控面板 | 实时体征监控面板正常,显示危急/高危/中等/低危分类 | PASS |
6. 场景 E — AI 分析与建议
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| E.1 | AI 分析 | /health/ai-analysis → 查看结果 | 可管理 AI 分析 | AI 分析历史显示记录(含 report_summary/checkup_plan/trend/lab_report),有筛选 | PASS |
| E.2 | AI Prompt | /health/ai-prompts → 查看模板 | 只读查看 Prompt | Prompt 管理页面显示4个模板(health_trend_analysis 等),有编辑按钮 | PASS |
| E.3 | AI 建议 | 行动收件箱 → 采纳/拒绝 | 可管理 AI 建议 | 行动收件箱含 AI 建议项(BP trending/HRV decreasing) | PASS |
| E.4 | AI 用量 | /health/ai-usage → 查看 | 显示 AI 调用量 | 总分析 8次/4类型/本月8,类型分布(checkup_plan/lab_report/report_summary/trend) | PASS |
7. 场景 F — 诊断与知情同意
| # | 步骤 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| F.1 | 诊断记录 | /health/diagnoses | 可查看诊断记录 | 诊断记录页面正常,需输入患者ID查询 | PASS |
| F.2 | 知情同意 | /health/consents | 可管理知情同意 | 知情同意管理页面正常 | PASS |
8. 消息
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| 8.1 | 消息列表 | /messages → 查看 | 只读消息列表 | 消息中心4个Tab完整,当前0条消息 | PASS |
9. 工作流
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| 9.1 | 工作流 | 查看/启动流程 | 可查看和启动 | 未直接测试(侧栏有"系统管理"入口) | SKIP |
10. 权限边界验证
health_manager 不应访问的模块
| # | 测试项 | 操作 | 预期结果 | 实际结果 | 通过 |
|---|---|---|---|---|---|
| 10.1 | 无用户管理 | 地址栏输入 /users | 403 | 可访问,显示用户管理页面(空数据) | FAIL |
| 10.2 | 无积分管理 | 地址栏输入 /health/points-rules | 403 | 可完整访问,显示积分规则页面 | FAIL |
| 10.3 | 无内容管理 | 地址栏输入 /health/articles | 403 | 可完整访问,显示内容管理页面 | FAIL |
| 10.4 | 无系统设置 | 地址栏输入 /settings | 403 | 可完整访问,显示8个设置Tab(字典/语言/菜单/编号/参数/主题/审计/密码) | FAIL |
| 10.5 | 无插件管理 | 地址栏输入 /plugins/admin | 403 | 可访问,显示插件上传页面 | FAIL |
| 10.6 | 无 BLE 网关 | 地址栏输入 /health/ble-gateways | 403 | 显示"权限不足" | PASS |
测试摘要
- 通过数: 26 / 总数: 33(不含 SKIP 3 项)
- 通过率: 78.8%
- FAIL: 6 — B.2 随访筛选 + 10.1-10.5 权限边界(5/6 个受限页面可访问)
- ISSUE: 2 — D.3 告警无操作按钮 + D.6 日常监测页面空白
- SKIP: 3 — C.3 关闭咨询 + 9.1 工作流 + X 跨角色验证
问题清单
| # | 严重度 | 测试项 | 问题描述 | 复现步骤 |
|---|---|---|---|---|
| 1 | HIGH | 10.1-10.5 权限边界 | health_manager 可访问用户管理/积分管理/内容管理/系统设置/插件管理(预期 403) | 以 health_manager_test 登录 → 地址栏输入对应路径 → 页面正常加载 |
| 2 | MEDIUM | B.2 随访筛选 | 状态筛选不生效(同 R01-R03) | 随访管理 → 选"待处理" → 列表未过滤 |
| 3 | MEDIUM | D.3 告警处理 | 告警详情无确认/处理按钮(同 R01-R03) | 告警仪表盘 → 查看 pending 告警 → 无操作按钮 |
| 4 | LOW | D.6 日常监测 | 页面加载但内容为空 | /health/daily-monitoring → 空白页面 |