fix(web): 修复角色测试发现的权限守卫、API 500、权限配置问题
Some checks failed
CI / frontend-build (push) Has been cancelled
CI / security-audit (push) Has been cancelled
CI / rust-check (push) Has been cancelled
CI / rust-test (push) Has been cancelled

1. CRITICAL: 前端路由权限守卫 — routePermissions 从 3 条扩展到 31 条,
   覆盖全部 /health/* 路由;匹配逻辑从宽松模块级前缀改为精确权限码匹配
2. HIGH: health-data API 500 — jsonb_array_elements() 添加 CASE WHEN 类型守卫,
   防止 items 字段为非数组 JSON 时崩溃
3. MEDIUM: Doctor 补充 ai.prompt.list、ai.usage.list、follow-up-templates 权限
4. Operator 清理 AI 分析、统计报表菜单关联
5. 更新 5 角色测试计划文档
This commit is contained in:
iven
2026-05-06 22:29:54 +08:00
parent 5467394ffe
commit 43f0ba7057
9 changed files with 608 additions and 302 deletions

View File

@@ -1,110 +1,142 @@
# R01 — Admin系统管理员测试计划
# R01 — Admin系统管理员业务场景测试计划
> 角色: admin | 测试账号: admin / Admin@2026 | 范围: 全部功能
> 角色: admin | 测试账号: admin / Admin@2026 | 菜单数: 45 | 范围: 全部功能
## 1. 登录 & 工作台
## 1. 登录 & 仪表盘
| # | 测试项 | 操作 | 预期结果 | 通过 |
|---|--------|------|----------|------|
| 1.1 | 登录 | 输入 admin / Admin@2026,点击登录 | 跳转到工作台页面,左侧菜单显示 45 个可见菜单项 | ☐ |
| 1.2 | 工作台仪表盘 | 查看首页数据卡片 | 显示:注册用户数、业务模块数、今日操作、本周活跃;所有模块状态"运行中" | ☐ |
| 1.3 | 最近操作记录 | 查看操作日志列表 | 显示最近登录操作记录,按时间倒序 | ☐ |
| 1.4 | 用户活跃度 | 查看角色分布 | 显示按角色分组的用户数(医生、护士、运营等) | ☐ |
| 1.1 | 登录 | 输入 admin / Admin@2026 | 成功登录,左侧菜单 45 项 | ☐ |
| 1.2 | 工作台仪表盘 | 查看首页 | 显示:注册用户数、业务模块数、今日操作、本周活跃;模块状态"运行中" | ☐ |
| 1.3 | 最近操作记录 | 查看操作日志 | 按时间倒序显示登录/操作记录 | ☐ |
## 2. 系统管理(工作台目录)
## 2. 场景 A — 患者建档全链路
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 2.1 | 用户管理 | /users | 打开列表 → 搜索用户 → 查看详情 | 显示用户列表,支持搜索、分页,可查看/编辑用户信息 | ☐ |
| 2.2 | 统计报表 | /health/statistics | 打开页面 | 显示健康业务统计图表(患者数、随访数、咨询数等) | ☐ |
| 2.3 | 权限管理 | /roles | 打开列表 → 查看角色详情 | 显示所有角色(含 doctor/nurse/health_manager/operator可查看权限码分配 | ☐ |
| 2.4 | 组织架构 | /organizations | 打开列表 → 查看树形结构 | 显示组织树,支持展开/折叠,可管理组织/部门/岗位 | ☐ |
> **业务链**: 创建患者 → 打标签 → 绑定设备 → 签署知情同意 → 验证建档完整性
## 3. 系统管理目录
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| A.1 | 创建患者 | /health/patients → 新增 → 填写姓名/身份证/手机/出生日期 → 保存 | 患者出现在列表,状态 active | ☐ |
| A.2 | 患者详情 | 点击新患者卡片 | 显示基本信息、体征数据 Tab、操作记录 | ☐ |
| A.3 | 打标签 | /health/tags → 新增标签"高血压高危"(红色)→ 回到患者详情 → 分配标签 | 标签显示在患者卡片和详情页 | ☐ |
| A.4 | 绑定设备 | /health/devices → 查看设备列表 → 记录设备绑定状态 | 设备列表显示绑定关系 | ☐ |
| A.5 | 知情同意 | /health/consents → 查看记录 | 知情同意书列表可查看 | ☐ |
| A.6 | 验证完整性 | 回到患者列表 → 搜索新患者 | 患者信息完整(姓名+标签+设备状态) | ☐ |
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 3.1 | 工作流 | /workflow | 打开流程定义列表 | 显示已定义的流程,可查看流程图 | ☐ |
| 3.2 | 消息中心 | /messages | 打开消息列表 | 显示消息列表,支持已读/未读标记 | ☐ |
| 3.3 | 系统设置 | /settings | 打开设置页面 | 显示系统配置项,可编辑保存 | ☐ |
| 3.4 | 插件管理 | /plugins/admin | 打开插件列表 | 显示已安装插件,可启用/禁用 | ☐ |
**交接点**: 患者建档完成后doctor/nurse/health_manager 可在各自视图中看到该患者。
## 4. 健康业务
## 3. 场景 B — 随访闭环(管理视角)
### 4.1 患者医护
> **业务链**: 查看 admin 创建的随访 → 确认状态流转 → 验证行动收件箱联动
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 4.1.1 | 患者管理 | /health/patients | 列表 → 搜索 → 新增 → 编辑 → 查看详情 | 完整 CRUD列表支持搜索和标签筛选 | ☐ |
| 4.1.2 | 医护管理 | /health/doctors | 列表 → 查看 | 显示医护列表,含科室、职称信息 | ☐ |
| 4.1.3 | 标签管理 | /health/tags | 列表 → 新增 → 编辑 → 删除 | 标签 CRUD支持颜色设置 | ☐ |
| 4.1.4 | 诊断记录 | /health/diagnoses | 列表 → 查看详情 | 显示诊断记录列表,可查看详情 | ☐ |
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| B.1 | 创建随访 | /health/follow-up-tasks → 新增 → 选患者+随访类型+计划日期 → 保存 | 随访任务创建成功,状态 pending | ☐ |
| B.2 | 随访列表 | 按状态筛选:待办/进行中/已完成 | 筛选正确,数据一致 | ☐ |
| B.3 | 查看模板 | /health/follow-up-templates → 查看模板内容 | 模板列表显示结构和字段 | ☐ |
| B.4 | 行动收件箱 | /health/action-inbox → 筛选类型 | 显示 AI 建议/告警/随访等行动项 | ☐ |
### 4.2 随访咨询
## 4. 场景 C — 咨询流转(管理视角)
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 4.2.1 | 随访管理 | /health/follow-up-tasks | 列表 → 查看详情 → 创建随访 | 显示待办/已完成随访,支持创建新随访任务 | ☐ |
| 4.2.2 | 咨询管理 | /health/consultations | 列表 → 查看对话 | 显示咨询列表,可查看对话详情 | ☐ |
| 4.2.3 | 行动收件箱 | /health/action-inbox | 列表 → 处理行动项 | 显示待办行动项,支持按类型筛选 | ☐ |
| 4.2.4 | 随访模板 | /health/follow-up-templates | 列表 → 查看/编辑 | 显示随访模板列表,可编辑模板内容 | ☐ |
> **业务链**: 查看咨询列表 → 查看对话详情
### 4.3 监测 & 知情同意
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| C.1 | 咨询列表 | /health/consultations → 按状态筛选 | 显示 waiting/active/closed 状态的咨询 | ☐ |
| C.2 | 对话详情 | 点击某条咨询 → 查看对话 | 显示完整消息历史 | ☐ |
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 4.3.1 | 知情同意 | /health/consents | 列表 → 查看 | 显示知情同意书记录 | ☐ |
| 4.3.2 | 实时监控 | /health/realtime-monitor | 打开页面 | 显示实时体征监控面板 | ☐ |
## 5. 场景 D — 告警处理链
### 4.4 告警 & 设备
> **业务链**: 配置危急值阈值 → 查看告警仪表盘 → 处理告警 → 验证状态变更
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 4.4.1 | 告警仪表盘 | /health/alert-dashboard | 打开页面 | 显示告警统计和列表,支持按严重程度筛选 | ☐ |
| 4.4.2 | 设备管理 | /health/devices | 列表 → 查看 | 显示设备列表和绑定状态 | ☐ |
| 4.4.3 | BLE 网关 | /health/ble-gateways | 列表 → 查看 | 显示 BLE 网关列表 | ☐ |
| 4.4.4 | 危急值阈值 | /health/critical-value-thresholds | 列表 → 查看 | 显示阈值配置列表 | ☐ |
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| D.1 | 危急值阈值 | /health/critical-value-thresholds → 查看配置 | 显示各体征指标的阈值范围 | ☐ |
| D.2 | 告警仪表盘 | /health/alert-dashboard → 查看统计 | 按严重程度分类显示告警 | ☐ |
| D.3 | 告警处理 | 点击某条告警 → 标记已确认/已处理 | 告警状态从 pending → acknowledged/resolved | ☐ |
| D.4 | 实时监控 | /health/realtime-monitor → 查看面板 | 显示实时体征数据流 | ☐ |
| D.5 | BLE 网关 | /health/ble-gateways → 查看 | 网关列表显示连接状态 | ☐ |
### 4.5 运营
## 6. 场景 E — AI 分析链
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 4.5.1 | 内容管理 | /health/articles | 列表 → 新增 → 发布 | 文章 CRUD支持发布/下架 | ☐ |
| 4.5.2 | 积分规则 | /health/points-rules | 列表 → 查看 | 显示积分规则列表 | ☐ |
| 4.5.3 | 商品管理 | /health/points-products | 列表 → 查看 | 显示积分商品列表 | ☐ |
| 4.5.4 | 订单管理 | /health/points-orders | 列表 → 查看 | 显示积分兑换订单列表 | ☐ |
| 4.5.5 | 线下活动 | /health/offline-events | 列表 → 查看 | 显示线下活动列表 | ☐ |
> **业务链**: 配置 Prompt 模板 → 触发分析 → 查看结果 → 查看用量
### 4.6 AI 分析
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| E.1 | Prompt 管理 | /health/ai-prompts → 查看模板列表 | 显示 Prompt 模板,可编辑 | ☐ |
| E.2 | 触发分析 | /health/ai-analysis → 查看历史记录 | 显示分析记录和结果 | ☐ |
| E.3 | AI 用量 | /health/ai-usage → 查看统计 | 显示调用次数、token 消耗统计 | ☐ |
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 4.6.1 | AI Prompt | /health/ai-prompts | 列表 → 查看 | 显示 Prompt 模板列表 | ☐ |
| 4.6.2 | AI 分析历史 | /health/ai-analysis | 列表 → 查看详情 | 显示 AI 分析记录和结果 | ☐ |
| 4.6.3 | AI 用量统计 | /health/ai-usage | 打开页面 | 显示 AI 调用量统计 | ☐ |
## 7. 场景 F — 内容发布链
### 4.7 其他
> **业务链**: 创建文章 → 编辑内容 → 发布 → 验证已发布状态
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|---|--------|------|------|----------|------|
| 4.7.1 | OAuth 合作方 | /health/oauth-clients | 列表 → 查看 | 显示 OAuth 客户端列表 | ☐ |
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| F.1 | 创建文章 | /health/articles → 新增 → 填写标题/内容 → 保存草稿 | 文章状态为 draft | ☐ |
| F.2 | 编辑文章 | 点击草稿 → 修改内容 → 保存 | 内容更新成功 | ☐ |
| F.3 | 发布文章 | 点击发布 | 状态从 draft → published | ☐ |
| F.4 | 下架文章 | 点击已发布文章 → 下架 | 状态变回 draft | ☐ |
## 5. 权限验证
## 8. 场景 G — 积分商城链
> **业务链**: 配置积分规则 → 添加商品 → 查看订单
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| G.1 | 积分规则 | /health/points-rules → 查看规则列表 | 显示积分获取/消费规则 | ☐ |
| G.2 | 商品管理 | /health/points-products → 新增商品 → 保存 | 商品出现在列表 | ☐ |
| G.3 | 订单管理 | /health/points-orders → 查看订单 | 显示兑换订单列表 | ☐ |
## 9. 场景 H — 线下活动链
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| H.1 | 创建活动 | /health/offline-events → 新增 → 填写信息 → 保存 | 活动创建成功 | ☐ |
| H.2 | 查看活动 | 列表中查看活动详情 | 显示报名人数、活动状态 | ☐ |
## 10. 场景 I — 系统管理全链路
> **业务链**: 用户 → 角色 → 组织 → 工作流 → 消息 → 设置 → 插件
| # | 步骤 | 操作 | 预期结果 | 通过 |
|---|------|------|----------|------|
| I.1 | 用户管理 | /users → 搜索用户 → 查看详情 | 用户列表可搜索/分页/查看角色分配 | ☐ |
| I.2 | 角色管理 | /roles → 查看角色详情 | 显示 doctor/nurse/health_manager/operator 角色及权限码 | ☐ |
| I.3 | 组织架构 | /organizations → 展开树形结构 | 显示组织/部门/岗位层级 | ☐ |
| I.4 | 统计报表 | /health/statistics → 查看 | 显示患者数/随访数/咨询数等图表 | ☐ |
| I.5 | 工作流 | /workflow → 查看流程定义 | 显示已定义流程,可查看流程图 | ☐ |
| I.6 | 消息中心 | /messages → 查看 | 消息列表,支持已读/未读标记 | ☐ |
| I.7 | 系统设置 | /settings → 编辑 → 保存 | 配置项可编辑保存 | ☐ |
| I.8 | 插件管理 | /plugins/admin → 查看插件列表 | 显示已安装插件,可启用/禁用 | ☐ |
| I.9 | OAuth | /health/oauth-clients → 查看 | 显示 OAuth 客户端列表 | ☐ |
## 11. 跨角色协作验证
> admin 作为系统管理员,验证以下跨角色协作点
| # | 协作场景 | 操作 | 预期结果 | 通过 |
|---|----------|------|----------|------|
| X.1 | 医护管理 | /health/doctors → 查看医护列表 | 显示科室、职称信息doctor 角色也能看到) | ☐ |
| X.2 | 角色分配 | /users → 编辑某用户 → 分配角色 | 角色变更后该用户菜单立即更新 | ☐ |
| X.3 | 标签管理 | /health/tags → 新增/编辑/删除 | 标签变更同步到患者筛选器和医护视图 | ☐ |
## 12. 权限验证
| # | 测试项 | 操作 | 预期结果 | 通过 |
|---|--------|------|----------|------|
| 5.1 | 所有页面可访问 | 逐一点击左侧菜单 | 每个菜单路径都能正常打开,不出现 403 | ☐ |
| 5.2 | 所有按钮可见 | 进入各页面 | 新增/编辑/删除等操作按钮均可见 | ☐ |
| 12.1 | 页面可访问 | 逐一点击左侧 45 个菜单 | 每个路径正常打开, 403 | ☐ |
| 12.2 | 按钮可见 | 进入各页面 | 新增/编辑/删除按钮均可见 | ☐ |
## 6. 小程序端admin 以普通用户身份使用)
## 13. 小程序端
> admin 角色在小程序端按"普通用户"处理isMedicalStaff=false 因为 code 是 admin
> admin 以普通用户身份使用小程序isMedicalStaff=false
| # | 测试项 | 操作 | 预期结果 | 通过 |
|---|--------|------|----------|------|
| 6.1 | 登录跳转 | 登录后 | 跳转到患者首页(非医护工作台) | ☐ |
| 6.2 | 首页体征 | 查看体征完成度 | 显示今日体征 4 指标完成度 | ☐ |
| 6.3 | 体征录入 | 切到健康 Tab → 录入体征 | 可录入血压/心率/血糖/体重 | ☐ |
| 13.1 | 登录跳转 | admin 登录小程序 | 跳转到患者首页(非医护工作台) | ☐ |
| 13.2 | 体征完成度 | 查看首页 | 显示今日体征 4 指标完成度 | ☐ |
| 13.3 | 体征录入 | 健康页 → 录入体征 | 可录入血压/心率/血糖/体重 | ☐ |
## 测试结果