Files
hms/docs/qa/role-test-results/SUMMARY.md
iven 6d5a711d2c
Some checks failed
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
fix: 修复测试发现的 7 个问题 + 全 workspace clippy 清零
功能修复:
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 统一格式化
2026-05-07 23:43:14 +08:00

5.1 KiB
Raw Permalink Blame History

5 角色业务场景测试 — 综合报告

测试日期: 2026-05-06 | 测试人: Claude | 环境: 本地 dev 测试方法: 全部通过浏览器前端操作Chrome DevTools MCP包含实际 CRUD 交互

1. 总览

角色 账号 测试项 PASS FAIL ISSUE 通过率
R01 Admin admin / Admin@2026 48 47 1 1 97.9%
R02 Doctor doctor_test 35 28 7 1 80.0%
R03 Nurse nurse_test 31 24 7 1 77.4%
R04 Health Manager health_manager_test 33 26 6 2 78.8%
R05 Operator operator_test 28 23 5 0 82.1%
合计 175 148 26 5 84.6%

2. 共性问题(跨角色复现)

P1 — 权限边界绕过HIGH, 影响全部 4 个非 admin 角色)

现象: 非 admin 角色通过地址栏直接输入 URL 可访问受限页面,页面不加拦截正常加载。

影响范围:

  • /users — 4 个角色均可访问(显示空数据而非 403
  • /settings — 4 个角色均可完整访问8个Tab全部可操作
  • /health/points-rules — doctor/nurse/HM 可访问operator 是业务权限)
  • /health/articles — doctor/nurse/HM 可访问operator 是业务权限)
  • /health/tags — doctor/nurse/HM 可访问operator/nurse 是业务权限)
  • /health/doctors — nurse/operator 可访问
  • /health/follow-up-tasks — operator 可访问
  • /health/consultations — operator 可访问
  • /health/action-inbox — operator 可访问
  • /plugins/admin — HM 可访问

正确拦截的页面(对比):

  • /health/ai-analysis — nurse/operator 正确显示"权限不足"
  • /health/diagnoses — operator 正确显示"权限不足"
  • /health/consents — operator 正确显示"权限不足"
  • /health/ble-gateways — doctor/HM 正确显示"权限不足"

根因分析: 前端路由守卫未对全部受限路由做权限码校验。部分页面组件内置了权限检查AI分析、诊断、知情同意、BLE网关但大部分页面仅依赖侧栏菜单隐藏来限制访问。

建议修复: 在前端路由层增加全局 beforeEach 守卫,对每个路由的 meta.permissions 与用户权限码做比对,未授权时统一跳转 403 页面。

P2 — 随访状态筛选不生效MEDIUM, 全角色复现)

现象: 随访管理页面的状态筛选下拉框选择后UI 更新显示选中标签,但列表数据不过滤。

影响: R01 B.2, R02 B.2, R03 B.2, R04 B.2 — 4 个角色共 4 个 FAIL。

建议修复: 检查 FollowUpList 组件的筛选逻辑,确认 onStatusChange 是否正确触发 API 请求参数更新。

P3 — 告警详情无操作按钮MEDIUM, 全角色复现)

现象: 告警仪表盘中点击 pending 告警,详情面板只显示 ID/score/severity无"确认"/"处理"按钮。

影响: R01 D.3, R02 D.1, R03 D.3, R04 D.3 — 4 个 ISSUE。

建议修复: 告警详情组件增加操作按钮(需后端配合告警状态流转 API

3. 角色专属发现

R01 Admin

  • 整体功能完整47/48 通过
  • 咨询详情患者名显示"未知"minor
  • 创建了测试数据患者R01、文章、商品、活动

R02 Doctor

  • 仪表盘 AI 建议采纳按钮跳转页面而非行内操作UX 可改进)
  • 医生工作台功能完整患者管理、随访、咨询、告警、AI分析均正常

R03 Nurse

  • "随访监控台"仪表盘设计良好:今日统计、待办列表、快捷操作
  • 患者新建和随访创建均正常
  • 咨询列表正确隐藏了管理按钮(只读)

R04 Health Manager

  • "今日任务流"仪表盘聚焦待办处理
  • 权限范围最广的非 admin 角色AI分析、随访模板、危急值阈值均可见
  • 日常监测页面空白(可能需关联数据)

R05 Operator

  • 运营仪表盘设计完善AI摘要、积分动态、内容矩阵
  • 患者列表正确隐藏了"新建患者"按钮patient.list vs patient.manage 区分正确)
  • 权限边界拦截相对最好4/9 页面正确返回 403
  • 登录后出现"服务器异常"toast非阻塞

4. 测试数据创建汇总

角色 创建的数据
R01 Admin 患者"测试患者R01"、文章"R01测试文章-健康饮食"、商品"R01测试商品-健康礼包"、活动"R01测试-血压管理讲座"、咨询回复
R03 Nurse 患者"测试患者R03"、随访"电话随访 测试患者R03 2026-05-10"

5. 优先修复建议

优先级 问题 影响范围 建议
P0 权限边界绕过 4角色 × 5-7 页面 路由守卫 + 后端 API 权限中间件双保险
P1 随访筛选不生效 4角色 FollowUpList 组件筛选逻辑修复
P1 告警无操作按钮 4角色 告警详情组件 + 状态流转 API
P2 咨询患者名"未知" R01 咨询列表 API 返回 patient_name
P2 AI建议采纳UX R02 仪表盘改为行内采纳操作
P3 日常监测空白 R04 确认数据关联或提供降级 UI