Files
hms/docs/qa/role-test-plans/R05-operator.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

133 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# R05 — Operator运营人员业务场景测试计划
> 角色: operator | 测试账号: operator_test / Admin@2026 | 菜单数: 24 | 重点: 内容运营与积分商城
## 1. 登录 & 仪表盘
| # | 测试项 | 操作 | 预期结果 | 通过 |
|---|--------|------|----------|------|
| 1.1 | 登录 | 输入 operator_test / Admin@2026 | 成功登录,左侧菜单 24 项 | ☐ |
| 1.2 | 运营仪表盘 | 查看首页 | 显示"运营仪表盘":运营洞察、积分动态(今日发放/消费)、内容矩阵(已发布/草稿)、今日待办 | ☐ |
| 1.3 | AI 摘要 | 查看顶部 AI 摘要 | 显示 AI 生成的运营重点摘要 | ☐ |
| 1.4 | 快捷操作 | 查看按钮 | 审核积分订单、发布新文章、推送活动提醒 | ☐ |
## 2. 场景 A — 患者与标签管理
> **业务链**: 管理标签 → 查看患者(只读)
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| A.1 | 标签管理 | /health/tags → 新增"术后康复"标签 → 编辑 → 保存 | 标签 CRUD 正常(有 tags.manage | ☐ |
| A.2 | 患者列表 | /health/patients → 查看列表 | 只读查看,确认新增按钮是否隐藏(有 patient.list 无 manage | ☐ |
| A.3 | 患者搜索 | 搜索框输入 → 标签筛选 | 搜索和筛选正常 | ☐ |
**交接点**: 标签创建后,医护角色可在患者筛选中使用。
## 3. 场景 B — 内容发布链
> **业务链**: 创建文章 → 编辑 → 提交审核 → 发布 → 验证已发布
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| B.1 | 创建文章 | /health/articles → 新增 → 填写标题/内容 → 保存草稿 | 文章状态 draft | ☐ |
| B.2 | 编辑文章 | 点击草稿 → 修改内容 → 保存 | 内容更新 | ☐ |
| B.3 | 发布文章 | 点击发布 | 状态 draft → published有 articles.manage 和 articles.review | ☐ |
| B.4 | 内容矩阵 | 回到运营仪表盘 → 查看内容矩阵 | 已发布/草稿数量更新 | ☐ |
**交接点**: 已发布文章患者端小程序可见。
## 4. 场景 C — 积分商城链
> **业务链**: 配置积分规则 → 上架商品 → 查看订单
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| C.1 | 积分规则 | /health/points-rules → 查看 → 编辑规则 | 可管理积分规则 | ☐ |
| C.2 | 新增商品 | /health/points-products → 新增 → 填写名称/积分/库存 → 保存 | 商品出现在列表 | ☐ |
| C.3 | 订单管理 | /health/points-orders → 查看订单列表 | 显示兑换订单 | ☐ |
| C.4 | 积分动态 | 回到运营仪表盘 → 查看积分动态 | 今日发放/消费数据更新 | ☐ |
**交接点**: 商品上架后,患者端小程序积分商城可见可兑换。
## 5. 场景 D — 线下活动链
> **业务链**: 创建活动 → 查看报名 → 管理
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| D.1 | 创建活动 | /health/offline-events → 新增 → 填写名称/时间/地点 → 保存 | 活动创建成功 | ☐ |
| D.2 | 查看活动 | 列表查看活动详情 | 显示报名人数、活动状态 | ☐ |
## 6. 场景 E — 设备与告警查看
> **业务链**: 查看设备状态 → 查看告警统计
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| E.1 | 设备管理 | /health/devices → 查看列表 | 只读查看(无 devices.manage | ☐ |
| E.2 | 告警仪表盘 | /health/alert-dashboard → 查看 | 只读查看(只有 alerts.list确认操作按钮不可用 | ☐ |
## 7. 场景 F — AI 用量
> **业务链**: 查看 AI 调用统计
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| F.1 | AI 用量 | /health/ai-usage → 查看 | 只读查看 AI 调用量 | ☐ |
## 8. 消息
| # | 测试项 | 操作 | 预期结果 | 通过 |
|---|--------|------|----------|------|
| 8.1 | 消息列表 | /messages → 查看 | 只读消息列表 | ☐ |
## 9. 权限边界验证
> operator 不应访问的模块
| # | 测试项 | 操作 | 预期结果 | 通过 |
|---|--------|------|----------|------|
| 9.1 | 无用户管理 | 地址栏输入 /users | 403 | ☐ |
| 9.2 | 无医护管理 | 地址栏输入 /health/doctors | 403 | ☐ |
| 9.3 | 无随访管理 | 地址栏输入 /health/follow-up-tasks | 403 | ☐ |
| 9.4 | 无咨询管理 | 地址栏输入 /health/consultations | 403 | ☐ |
| 9.5 | 无诊断记录 | 地址栏输入 /health/diagnoses | 403 | ☐ |
| 9.6 | 无行动收件箱 | 地址栏输入 /health/action-inbox | 403 | ☐ |
| 9.7 | 无知情同意 | 地址栏输入 /health/consents | 403 | ☐ |
| 9.8 | 无 AI 分析 | 地址栏输入 /health/ai-analysis | 403 | ☐ |
| 9.9 | 无系统设置 | 地址栏输入 /settings | 403 | ☐ |
## 10. 跨角色协作验证
| # | 协作场景 | 操作 | 预期结果 | 通过 |
|---|----------|------|----------|------|
| X.1 | 标签共享 | 新建标签 → 用 doctor 账号验证 | doctor 可在患者筛选中使用新标签 | ☐ |
| X.2 | 内容发布同步 | 发布文章 → 验证患者端可见 | 小程序患者端可见已发布内容 | ☐ |
| X.3 | 积分订单联动 | 患者兑换商品 → 查看订单 | 订单出现在积分订单列表 | ☐ |
| X.4 | 线下活动报名 | 创建活动 → 小程序端报名 → 查看报名数 | 报名数实时更新 | ☐ |
| X.5 | 积分规则生效 | 修改积分规则 → 患者端操作 → 验证积分变化 | 新规则立即生效 | ☐ |
## 11. 事件链路验证
| # | 事件链路 | 触发操作 | 验证方式 | 通过 |
|---|----------|----------|----------|------|
| E.1 | 文章发布事件 | 发布文章 | 小程序患者端可见article.published 事件消费) | ☐ |
| E.2 | 积分变动事件 | 积分规则变更 | 运营仪表盘积分动态数据更新 | ☐ |
| E.3 | 商品上架事件 | 新增积分商品 | 小程序积分商城可见新商品 | ☐ |
## 11. 小程序端(患者视角)
> operator 不在医护列表中,以普通患者身份使用小程序
| # | 测试项 | 操作 | 预期结果 | 通过 |
|---|--------|------|----------|------|
| 11.1 | 登录跳转 | operator_test 登录小程序 | 跳转到患者首页isMedicalStaff=false | ☐ |
| 11.2 | 患者首页 | 查看首页 | 显示体征完成度、今日待办、快捷操作(普通患者视图) | ☐ |
## 测试结果
- 测试人: _________
- 测试日期: _________
- 通过数: ___ / 总数: ___
- 问题记录: