fix(web): 修复角色测试发现的权限守卫、API 500、权限配置问题
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:
@@ -96,11 +96,39 @@ function PrivateRoute({ children }: { children: React.ReactNode }) {
|
||||
'/users': ['user.list', 'user.manage'],
|
||||
'/roles': ['role.list', 'role.manage'],
|
||||
'/organizations': ['organization.list', 'organization.manage'],
|
||||
'/workflow': ['workflow.list', 'workflow.read'],
|
||||
'/messages': ['message.list'],
|
||||
'/settings': ['config.settings.list', 'config.settings.manage'],
|
||||
'/plugins/admin': ['plugin.list', 'plugin.manage'],
|
||||
'/health/patients': ['health.patient.list', 'health.patient.manage'],
|
||||
'/health/doctors': ['health.doctor.list', 'health.doctor.manage'],
|
||||
'/health/follow-up-tasks': ['health.follow-up.list', 'health.follow-up.manage'],
|
||||
'/health/consultations': ['health.consultation.list', 'health.consultation.manage'],
|
||||
'/health/action-inbox': ['health.action-inbox.list', 'health.action-inbox.manage'],
|
||||
'/health/follow-up-templates': ['health.follow-up-templates.list', 'health.follow-up-templates.manage'],
|
||||
'/health/diagnoses': ['health.health-data.list', 'health.health-data.manage'],
|
||||
'/health/consents': ['health.consent.list', 'health.consent.manage'],
|
||||
'/health/realtime-monitor': ['health.device-readings.list', 'health.device-readings.manage'],
|
||||
'/health/alert-dashboard': ['health.alerts.list', 'health.alerts.manage'],
|
||||
'/health/devices': ['health.devices.list', 'health.devices.manage'],
|
||||
'/health/ble-gateways': ['health.ble-gateways.list', 'health.ble-gateways.manage'],
|
||||
'/health/critical-value-thresholds': ['health.critical-value-thresholds.list', 'health.critical-value-thresholds.manage'],
|
||||
'/health/articles': ['health.articles.list', 'health.articles.manage'],
|
||||
'/health/points-rules': ['health.points.list', 'health.points.manage'],
|
||||
'/health/points-products': ['health.points.list', 'health.points.manage'],
|
||||
'/health/points-orders': ['health.points.list', 'health.points.manage'],
|
||||
'/health/offline-events': ['health.points.list', 'health.points.manage'],
|
||||
'/health/ai-prompts': ['ai.prompt.list', 'ai.prompt.manage'],
|
||||
'/health/ai-analysis': ['ai.analysis.list', 'ai.analysis.manage'],
|
||||
'/health/ai-usage': ['ai.usage.list'],
|
||||
'/health/oauth-clients': ['health.oauth.list', 'health.oauth.manage'],
|
||||
'/health/statistics': ['health.health-data.list', 'health.dashboard.manage'],
|
||||
'/health/tags': ['health.patient.list', 'health.patient.manage'],
|
||||
};
|
||||
const matchedPrefix = Object.keys(routePermissions).find((prefix) => path.startsWith(prefix));
|
||||
if (matchedPrefix) {
|
||||
const required = routePermissions[matchedPrefix];
|
||||
const hasAccess = permissions.some((p) => required.some((r) => p === r || p.startsWith(r.split('.')[0] + '.')));
|
||||
const hasAccess = required.some((r) => permissions.includes(r));
|
||||
if (!hasAccess) return <Navigate to="/" replace />;
|
||||
}
|
||||
|
||||
|
||||
@@ -213,7 +213,7 @@ async fn count_abnormal_lab_items(
|
||||
let sql = r#"
|
||||
SELECT COALESCE(SUM(jsonb_array_length(
|
||||
COALESCE(
|
||||
(SELECT jsonb_agg(elem) FROM jsonb_array_elements(items) elem WHERE elem->>'is_abnormal' = 'true'),
|
||||
(SELECT jsonb_agg(elem) FROM jsonb_array_elements(CASE WHEN jsonb_typeof(items) = 'array' THEN items ELSE '[]'::jsonb END) elem WHERE elem->>'is_abnormal' = 'true'),
|
||||
'[]'::jsonb
|
||||
)
|
||||
)), 0::bigint) AS total
|
||||
|
||||
@@ -125,6 +125,7 @@ mod m20260505_000122_create_ai_knowledge_guides;
|
||||
mod m20260505_000123_update_ai_prompts_system_instruction;
|
||||
mod m20260505_000124_freeze_deferred_menus;
|
||||
mod m20260506_000125_restructure_menus_and_roles;
|
||||
mod m20260506_000126_fix_role_permissions_cleanup;
|
||||
|
||||
pub struct Migrator;
|
||||
|
||||
@@ -257,6 +258,7 @@ impl MigratorTrait for Migrator {
|
||||
Box::new(m20260505_000123_update_ai_prompts_system_instruction::Migration),
|
||||
Box::new(m20260505_000124_freeze_deferred_menus::Migration),
|
||||
Box::new(m20260506_000125_restructure_menus_and_roles::Migration),
|
||||
Box::new(m20260506_000126_fix_role_permissions_cleanup::Migration),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
use sea_orm_migration::prelude::*;
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigrationTrait for Migration {
|
||||
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
let db = manager.get_connection();
|
||||
|
||||
// === Doctor 角色权限修复 ===
|
||||
let doctor_add = vec![
|
||||
"health.follow-up-templates.list",
|
||||
"health.follow-up-templates.manage",
|
||||
"ai.usage.list",
|
||||
"ai.prompt.list",
|
||||
];
|
||||
for code in &doctor_add {
|
||||
db.execute(sea_orm::Statement::from_string(
|
||||
sea_orm::DatabaseBackend::Postgres,
|
||||
format!(
|
||||
"INSERT INTO role_permissions (role_id, permission_id, tenant_id, data_scope, created_at, updated_at, created_by, updated_by, deleted_at, version) \
|
||||
SELECT r.id, p.id, r.tenant_id, 'all', NOW(), NOW(), r.id, r.id, NULL, 1 \
|
||||
FROM roles r \
|
||||
JOIN permissions p ON p.tenant_id = r.tenant_id AND p.code = '{code}' AND p.deleted_at IS NULL \
|
||||
WHERE r.code = 'doctor' AND r.deleted_at IS NULL \
|
||||
ON CONFLICT (role_id, permission_id) DO NOTHING",
|
||||
),
|
||||
)).await?;
|
||||
}
|
||||
|
||||
// Doctor 移除多余权限
|
||||
let doctor_remove = vec![
|
||||
"health.articles.list",
|
||||
"health.articles.manage",
|
||||
"health.articles.review",
|
||||
"health.points.list",
|
||||
"health.points.manage",
|
||||
];
|
||||
for code in &doctor_remove {
|
||||
db.execute(sea_orm::Statement::from_string(
|
||||
sea_orm::DatabaseBackend::Postgres,
|
||||
format!(
|
||||
"UPDATE role_permissions SET deleted_at = NOW() \
|
||||
FROM roles r, permissions p \
|
||||
WHERE role_permissions.role_id = r.id AND role_permissions.permission_id = p.id \
|
||||
AND r.code = 'doctor' AND p.code = '{code}' AND role_permissions.deleted_at IS NULL",
|
||||
),
|
||||
)).await?;
|
||||
}
|
||||
|
||||
// === Nurse 角色权限清理 ===
|
||||
let nurse_remove = vec![
|
||||
"health.doctor.list",
|
||||
"health.alerts.manage",
|
||||
];
|
||||
for code in &nurse_remove {
|
||||
db.execute(sea_orm::Statement::from_string(
|
||||
sea_orm::DatabaseBackend::Postgres,
|
||||
format!(
|
||||
"UPDATE role_permissions SET deleted_at = NOW() \
|
||||
FROM roles r, permissions p \
|
||||
WHERE role_permissions.role_id = r.id AND role_permissions.permission_id = p.id \
|
||||
AND r.code = 'nurse' AND p.code = '{code}' AND role_permissions.deleted_at IS NULL",
|
||||
),
|
||||
)).await?;
|
||||
}
|
||||
|
||||
// === Operator 角色 menu_roles 清理 ===
|
||||
// menus 表的标题字段是 title 不是 name
|
||||
let operator_menu_remove = vec![
|
||||
"随访管理",
|
||||
"咨询管理",
|
||||
"行动收件箱",
|
||||
"诊断记录",
|
||||
"知情同意",
|
||||
"医护管理",
|
||||
"实时监控",
|
||||
"BLE 网关",
|
||||
"危急值阈值",
|
||||
"AI 分析",
|
||||
"AI Prompt 管理",
|
||||
"随访模板管理",
|
||||
"AI 分析历史",
|
||||
"统计报表",
|
||||
];
|
||||
for title in &operator_menu_remove {
|
||||
db.execute(sea_orm::Statement::from_string(
|
||||
sea_orm::DatabaseBackend::Postgres,
|
||||
format!(
|
||||
"DELETE FROM menu_roles \
|
||||
USING roles r, menus m \
|
||||
WHERE menu_roles.role_id = r.id AND menu_roles.menu_id = m.id \
|
||||
AND r.code = 'operator' AND m.title = '{title}'",
|
||||
),
|
||||
)).await?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn down(&self, _manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@@ -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 | 体征录入 | 健康页 → 录入体征 | 可录入血压/心率/血糖/体重 | ☐ |
|
||||
|
||||
## 测试结果
|
||||
|
||||
|
||||
@@ -1,89 +1,119 @@
|
||||
# R02 — Doctor(医生)测试计划
|
||||
# R02 — Doctor(医生)业务场景测试计划
|
||||
|
||||
> 角色: doctor | 测试账号: doctor_test / Admin@2026 | 菜单数: 24
|
||||
> 角色: doctor | 测试账号: doctor_test / Admin@2026 | 菜单数: 24 | 重点: 临床诊疗
|
||||
|
||||
## 1. 登录 & 仪表盘
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 1.1 | 登录 | 输入 doctor_test / Admin@2026 | 成功登录,左侧菜单显示 24 个菜单项 | ☐ |
|
||||
| 1.2 | 菜单过滤 | 检查左侧菜单 | **有**: 工作台、统计报表、消息中心、患者管理、医护管理、随访管理、咨询管理、行动收件箱、随访模板、诊断记录、知情同意、告警仪表盘、AI分析历史、AI用量 | ☐ |
|
||||
| 1.3 | 菜单排除 | 检查左侧菜单 | **没有**: 用户管理、权限管理、组织架构、工作流、系统设置、插件管理、标签管理、积分运营、内容运营、BLE网关、实时监控、危急值阈值、OAuth | ☐ |
|
||||
| 1.4 | 医生仪表盘 | 查看首页 | 显示"下午好,测试医生",包含:AI建议待审、重点关注患者、今日日程、未回复咨询、快捷操作 | ☐ |
|
||||
| 1.5 | AI 建议卡片 | 查看建议列表 | 按风险排序显示 AI 建议,可"采纳"或"拒绝" | ☐ |
|
||||
| 1.6 | 快捷操作 | 查看底部快捷入口 | 显示:AI分析中心、告警中心、患者查询 | ☐ |
|
||||
| 1.1 | 登录 | 输入 doctor_test / Admin@2026 | 成功登录,左侧菜单 24 项 | ☐ |
|
||||
| 1.2 | 医生仪表盘 | 查看首页 | 显示"测试医生"问候语,含 AI 建议待审、重点关注患者、今日日程、未回复咨询 | ☐ |
|
||||
| 1.3 | AI 建议卡片 | 查看建议列表 | 按风险排序,可"采纳"或"拒绝" | ☐ |
|
||||
| 1.4 | 快捷操作 | 查看底部 | 显示:AI分析中心、告警中心、患者查询 | ☐ |
|
||||
|
||||
## 2. 患者医护
|
||||
## 2. 场景 A — 患者建档与诊疗
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 2.1 | 患者列表 | /health/patients | 打开列表 → 搜索 → 标签筛选 | 显示患者列表,支持搜索和标签筛选 | ☐ |
|
||||
| 2.2 | 患者详情 | /health/patients | 点击患者卡片 | 显示患者基本信息、标签、体征数据 | ☐ |
|
||||
| 2.3 | 新增患者 | /health/patients | 点击新增按钮 | 弹出新增表单,可填写姓名、身份证、手机号等 | ☐ |
|
||||
| 2.4 | 医护管理 | /health/doctors | 打开列表 | 显示医护列表,含科室和职称 | ☐ |
|
||||
| 2.5 | 诊断记录 | /health/diagnoses | 打开列表 → 查看详情 | 显示诊断记录,可查看诊断详情 | ☐ |
|
||||
> **业务链**: 接收患者 → 查看档案 → 添加诊断 → 开随访任务
|
||||
|
||||
## 3. 随访咨询
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| A.1 | 患者列表 | /health/patients → 搜索/标签筛选 | 显示患者列表,支持搜索和标签过滤 | ☐ |
|
||||
| A.2 | 患者详情 | 点击患者卡片 | 显示基本信息、标签、体征数据、操作记录 | ☐ |
|
||||
| A.3 | 新增患者 | 点击新增 → 填写姓名/身份证/手机号 → 保存 | 患者创建成功,状态 active | ☐ |
|
||||
| A.4 | 医护管理 | /health/doctors → 查看医护列表 | 显示医护列表,含科室和职称 | ☐ |
|
||||
| A.5 | 诊断记录 | /health/diagnoses → 查看列表 → 点击详情 | 显示诊断记录,可查看诊断详情 | ☐ |
|
||||
| A.6 | 知情同意 | /health/consents → 查看列表 | 显示知情同意书记录 | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 3.1 | 随访管理 | /health/follow-up-tasks | 打开列表 → 切换状态筛选 | 显示待办/进行中/已完成随访任务 | ☐ |
|
||||
| 3.2 | 创建随访 | /health/follow-up-tasks | 点击新增 | 弹出创建表单,可选随访类型、患者、计划日期 | ☐ |
|
||||
| 3.3 | 随访详情 | /health/follow-up-tasks | 点击某条随访 | 显示随访详情,可录入随访记录 | ☐ |
|
||||
| 3.4 | 咨询管理 | /health/consultations | 打开列表 | 显示咨询会话列表,支持按状态筛选 | ☐ |
|
||||
| 3.5 | 咨询回复 | /health/consultations | 进入对话 → 输入回复 | 可发送文字回复,消息实时显示 | ☐ |
|
||||
| 3.6 | 行动收件箱 | /health/action-inbox | 打开列表 → 筛选类型 | 显示 AI 建议/告警/随访等行动项 | ☐ |
|
||||
| 3.7 | 随访模板 | /health/follow-up-templates | 打开列表 → 查看 | 显示随访模板列表,可查看模板内容 | ☐ |
|
||||
**交接点**: 诊断记录完成后,随访管理中可基于诊断创建随访任务。
|
||||
|
||||
## 4. 监测 & 知情同意
|
||||
## 3. 场景 B — 随访闭环(医生端)
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 4.1 | 知情同意 | /health/consents | 打开列表 | 显示知情同意书记录 | ☐ |
|
||||
| 4.2 | 日常监测 | (通过患者详情进入) | 查看患者体征趋势 | 可查看体征趋势图 | ☐ |
|
||||
> **业务链**: 创建随访任务 → 查看执行情况 → 审核 AI 建议
|
||||
|
||||
## 5. 告警
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| B.1 | 创建随访 | /health/follow-up-tasks → 新增 → 选患者/随访类型/计划日期 → 保存 | 随访任务创建,状态 pending | ☐ |
|
||||
| B.2 | 随访列表 | 切换状态筛选:待办/进行中/已完成 | 正确显示各状态随访 | ☐ |
|
||||
| B.3 | 随访详情 | 点击某条随访 → 查看录入内容 | 显示随访记录详情(护士录入的数据) | ☐ |
|
||||
| B.4 | 随访模板 | /health/follow-up-templates → 查看模板 | 显示模板列表和内容 | ☐ |
|
||||
| B.5 | 行动收件箱 | /health/action-inbox → 筛选类型 | 显示 AI 建议/告警/随访等行动项 | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 5.1 | 告警仪表盘 | /health/alert-dashboard | 打开页面 | 显示告警统计,按严重程度分类 | ☐ |
|
||||
| 5.2 | 告警处理 | /health/alert-dashboard | 点击某条告警 → 处理 | 可标记告警为已处理/已确认 | ☐ |
|
||||
**交接点**: 医生创建随访后,护士可执行并录入;AI 生成的建议出现在行动收件箱。
|
||||
|
||||
## 6. AI 分析
|
||||
## 4. 场景 C — 咨询接诊闭环
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 6.1 | AI 分析历史 | /health/ai-analysis | 打开列表 | 显示 AI 分析记录 | ☐ |
|
||||
| 6.2 | AI 分析详情 | /health/ai-analysis | 点击某条分析 | 显示分析结果和建议 | ☐ |
|
||||
| 6.3 | AI 用量 | /health/ai-usage | 打开页面 | 显示 AI 调用量统计 | ☐ |
|
||||
> **业务链**: 查看待回复咨询 → 接诊 → 回复消息 → 关闭咨询
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| C.1 | 咨询列表 | /health/consultations → 按状态筛选 | 显示 waiting/active/closed 咨询 | ☐ |
|
||||
| C.2 | 接诊 | 点击 waiting 状态咨询 → 进入对话 | 咨询状态变为 active | ☐ |
|
||||
| C.3 | 回复消息 | 在对话中输入文字 → 发送 | 消息实时显示,患者端可收到 | ☐ |
|
||||
| C.4 | 关闭咨询 | 点击结束咨询 | 咨询状态变为 closed | ☐ |
|
||||
|
||||
**交接点**: 咨询中发现的健康问题可触发随访任务。
|
||||
|
||||
## 5. 场景 D — 告警处理
|
||||
|
||||
> **业务链**: 查看告警仪表盘 → 评估告警 → 处理/确认
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| D.1 | 告警仪表盘 | /health/alert-dashboard → 查看统计 | 按严重程度分类显示告警 | ☐ |
|
||||
| D.2 | 处理告警 | 点击某条告警 → 标记已确认/已处理 | 状态 pending → acknowledged/resolved | ☐ |
|
||||
| D.3 | 告警关联 | 查看告警关联的患者 | 可跳转到患者详情 | ☐ |
|
||||
|
||||
## 6. 场景 E — AI 分析链
|
||||
|
||||
> **业务链**: 触发 AI 分析 → 查看结果 → 采纳/拒绝建议
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| E.1 | AI 分析历史 | /health/ai-analysis → 查看列表 | 显示分析记录 | ☐ |
|
||||
| E.2 | 查看分析详情 | 点击某条分析 | 显示分析结果和 AI 建议 | ☐ |
|
||||
| E.3 | 处理建议 | 在行动收件箱中 → 采纳/拒绝 AI 建议 | 建议状态变更:pending → approved/rejected | ☐ |
|
||||
| E.4 | AI 用量 | /health/ai-usage → 查看 | 显示 AI 调用量统计 | ☐ |
|
||||
|
||||
## 7. 消息
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 7.1 | 消息列表 | /messages | 打开消息中心 | 显示消息列表(只读),可标记已读 | ☐ |
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 7.1 | 消息列表 | /messages → 查看 | 只读消息列表,可标记已读 | ☐ |
|
||||
|
||||
## 8. 权限边界验证
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 8.1 | 无权页面 403 | 浏览器地址栏输入 /users | 返回 403 或重定向 | ☐ |
|
||||
| 8.2 | 无权页面 403 | 浏览器地址栏输入 /roles | 返回 403 或重定向 | ☐ |
|
||||
| 8.3 | 无权页面 403 | 浏览器地址栏输入 /health/points-rules | 返回 403 或重定向 | ☐ |
|
||||
| 8.4 | 无权页面 403 | 浏览器地址栏输入 /health/articles | 返回 403 或重定向 | ☐ |
|
||||
|
||||
## 9. 小程序端
|
||||
> doctor 不应访问的模块
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 9.1 | 登录跳转 | doctor 角色登录 | 跳转到 `/pages/doctor/index`(医护工作台) | ☐ |
|
||||
| 9.2 | 工作台标题 | 查看页面顶部 | 显示"医护工作台" | ☐ |
|
||||
| 9.3 | 问候语 | 查看问候 | 显示"{display_name},您好" | ☐ |
|
||||
| 9.4 | 工作概览卡片 | 查看 4 个数据卡片 | 显示:我的患者、未读消息、待处理随访、今日咨询 | ☐ |
|
||||
| 9.5 | 健康审核区 | 查看健康审核卡片 | 显示:待审化验、今日预约(doctor 专属) | ☐ |
|
||||
| 9.6 | 快捷操作 | 查看快捷操作 | 显示 7 个按钮:化验审核、患者查询、随访记录、告警中心、透析管理、处方管理、行动收件箱 | ☐ |
|
||||
| 9.7 | 透析管理 | 点击"透析管理" | 跳转到 `/pages/doctor/dialysis/index` | ☐ |
|
||||
| 9.8 | 处方管理 | 点击"处方管理" | 跳转到 `/pages/doctor/prescription/index` | ☐ |
|
||||
| 8.1 | 无用户管理 | 地址栏输入 /users | 403 | ☐ |
|
||||
| 8.2 | 无权限管理 | 地址栏输入 /roles | 403 | ☐ |
|
||||
| 8.3 | 无积分管理 | 地址栏输入 /health/points-rules | 403 | ☐ |
|
||||
| 8.4 | 无内容管理 | 地址栏输入 /health/articles | 403 | ☐ |
|
||||
| 8.5 | 无系统设置 | 地址栏输入 /settings | 403 | ☐ |
|
||||
| 8.6 | 无 BLE 网关 | 地址栏输入 /health/ble-gateways | 403 | ☐ |
|
||||
| 8.7 | 无标签管理 | 地址栏输入 /health/tags | 403 | ☐ |
|
||||
|
||||
## 9. 跨角色协作验证
|
||||
|
||||
| # | 协作场景 | 操作 | 预期结果 | 通过 |
|
||||
|---|----------|------|----------|------|
|
||||
| X.1 | 随访执行查看 | 查看护士已录入的随访记录 | 可查看完整录入内容 | ☐ |
|
||||
| X.2 | AI 建议联动 | 行动收件箱中有 AI 生成的建议 | 建议来自 AI 分析结果 | ☐ |
|
||||
| X.3 | 咨询转随访 | 咨询中发现问题 → 创建随访 | 随访任务出现在护士待办列表 | ☐ |
|
||||
|
||||
## 10. 小程序端(医护工作台)
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 10.1 | 登录跳转 | doctor_test 登录小程序 | 跳转到 `/pages/doctor/index`(医护工作台) | ☐ |
|
||||
| 10.2 | 工作台标题 | 查看顶部 | 显示"医护工作台" | ☐ |
|
||||
| 10.3 | 问候语 | 查看问候 | 显示"测试医生,您好" | ☐ |
|
||||
| 10.4 | 工作概览 | 查看 4 个数据卡片 | 我的患者、未读消息、待处理随访、今日咨询 | ☐ |
|
||||
| 10.5 | 健康审核区 | 查看健康审核卡片 | 显示:待审化验、今日预约(doctor 专属) | ☐ |
|
||||
| 10.6 | 快捷操作 | 查看 7 个按钮 | 化验审核、患者查询、随访记录、告警中心、透析管理、处方管理、行动收件箱 | ☐ |
|
||||
| 10.7 | 透析管理 | 点击"透析管理" | 跳转到 `/pages/doctor/dialysis/index` | ☐ |
|
||||
| 10.8 | 处方管理 | 点击"处方管理" | 跳转到 `/pages/doctor/prescription/index` | ☐ |
|
||||
|
||||
## 测试结果
|
||||
|
||||
|
||||
@@ -1,82 +1,117 @@
|
||||
# R03 — Nurse(护士)测试计划
|
||||
# R03 — Nurse(护士)业务场景测试计划
|
||||
|
||||
> 角色: nurse | 测试账号: nurse_test / Admin@2026 | 菜单数: 20
|
||||
> 角色: nurse | 测试账号: nurse_test / Admin@2026 | 菜单数: 20 | 重点: 随访执行与体征录入
|
||||
|
||||
## 1. 登录 & 仪表盘
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 1.1 | 登录 | 输入 nurse_test / Admin@2026 | 成功登录,左侧菜单显示 20 个菜单项 | ☐ |
|
||||
| 1.2 | 菜单过滤 | 检查左侧菜单 | **有**: 工作台、统计报表、消息中心、患者管理、随访管理、咨询管理、行动收件箱、诊断记录、知情同意、告警仪表盘 | ☐ |
|
||||
| 1.3 | 菜单排除 | 检查左侧菜单 | **没有**: 医护管理、用户管理、权限管理、组织架构、工作流、系统设置、插件管理、标签管理、随访模板、积分运营、内容运营、AI分析、BLE网关、实时监控、设备管理、透析、处方 | ☐ |
|
||||
| 1.4 | 随访监控台 | 查看首页 | 显示"随访监控台"仪表盘,包含:今日随访数、逾期随访数、体征上报率、待办事项 | ☐ |
|
||||
| 1.5 | 待办列表 | 查看待办区域 | 按 Tab 筛选(全部/AI建议/告警/随访/数据异常),显示具体待办项 | ☐ |
|
||||
| 1.6 | 快捷操作 | 查看底部快捷入口 | 显示:开始随访、录入体征、查看AI分析、联系患者 | ☐ |
|
||||
| 1.1 | 登录 | 输入 nurse_test / Admin@2026 | 成功登录,左侧菜单 20 项 | ☐ |
|
||||
| 1.2 | 随访监控台 | 查看首页 | 显示"随访监控台":今日随访数、逾期随访数、体征上报率、待办事项 | ☐ |
|
||||
| 1.3 | 待办列表 | 查看待办区域 | Tab 筛选(全部/AI建议/告警/随访/数据异常),显示具体待办项 | ☐ |
|
||||
| 1.4 | 快捷操作 | 查看底部入口 | 开始随访、录入体征、查看AI分析、联系患者 | ☐ |
|
||||
|
||||
## 2. 患者管理
|
||||
## 2. 场景 A — 患者管理
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 2.1 | 患者列表 | /health/patients | 打开列表 → 搜索 | 显示患者列表,支持搜索 | ☐ |
|
||||
| 2.2 | 患者详情 | /health/patients | 点击患者卡片 | 显示患者基本信息、体征数据 | ☐ |
|
||||
| 2.3 | 新增患者 | /health/patients | 点击新增 | 可新增患者(有 health.patient.manage 权限) | ☐ |
|
||||
> **业务链**: 查看患者列表 → 查看详情 → 新增患者 → 录入体征
|
||||
|
||||
## 3. 随访管理
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| A.1 | 患者列表 | /health/patients → 搜索 | 显示患者列表,支持搜索 | ☐ |
|
||||
| A.2 | 患者详情 | 点击患者卡片 | 显示基本信息、体征数据 | ☐ |
|
||||
| A.3 | 新增患者 | 点击新增 → 填写信息 → 保存 | 可新增患者(有 patient.manage 权限) | ☐ |
|
||||
| A.4 | 体征查看 | 患者详情 → 体征 Tab | 显示体征趋势图 | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 3.1 | 随访列表 | /health/follow-up-tasks | 打开列表 → 按状态筛选 | 显示待办/进行中/已完成随访 | ☐ |
|
||||
| 3.2 | 创建随访 | /health/follow-up-tasks | 点击新增 | 可创建随访任务 | ☐ |
|
||||
| 3.3 | 录入随访 | /health/follow-up-tasks | 点击某条随访 → 录入 | 可录入随访记录内容 | ☐ |
|
||||
| 3.4 | 咨询管理(只读) | /health/consultations | 打开列表 | 可查看咨询列表(无 health.consultation.manage 权限,确认按钮状态) | ☐ |
|
||||
**交接点**: 护士新增/管理的患者,医生和健康管理师可同步看到。
|
||||
|
||||
## 4. 日常监测 & 诊断
|
||||
## 3. 场景 B — 随访执行闭环
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 4.1 | 诊断记录(只读) | /health/diagnoses | 打开列表 | 可查看诊断记录(无 manage 权限) | ☐ |
|
||||
| 4.2 | 知情同意 | /health/consents | 打开列表 → 查看 | 可查看和管理知情同意书 | ☐ |
|
||||
> **业务链**: 接收随访任务(医生创建)→ 执行随访 → 录入结果 → 标记完成
|
||||
|
||||
## 5. 行动收件箱
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| B.1 | 随访列表 | /health/follow-up-tasks → 按状态筛选 | 显示待办/进行中/已完成随访 | ☐ |
|
||||
| B.2 | 接收任务 | 查看 pending 状态的随访(医生创建的) | 显示随访类型、患者、计划日期 | ☐ |
|
||||
| B.3 | 创建随访 | 点击新增 → 选患者/类型/日期 → 保存 | 护士也可自主创建随访任务 | ☐ |
|
||||
| B.4 | 执行录入 | 点击某条随访 → 录入 → 填写随访记录 → 保存 | 随访状态 pending → in_progress → completed | ☐ |
|
||||
| B.5 | 验证完成 | 回到随访列表 → 筛选已完成 | 已录入的随访出现在已完成列表 | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 5.1 | 行动列表 | /health/action-inbox | 打开列表 → 筛选 | 显示 AI 建议/告警/随访等行动项 | ☐ |
|
||||
| 5.2 | 处理行动 | /health/action-inbox | 点击处理按钮 | 可处理/完成行动项 | ☐ |
|
||||
**交接点**: 护士完成的随访记录,医生可在详情中查看录入内容。
|
||||
|
||||
## 6. 告警
|
||||
## 4. 场景 C — 咨询查看
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 6.1 | 告警仪表盘 | /health/alert-dashboard | 打开页面 | 显示告警统计(只有 alerts.list 权限,无 manage,确认操作按钮) | ☐ |
|
||||
| 6.2 | 危急告警 | 告警列表中 | 查看危急告警 | 显示危急告警标记 | ☐ |
|
||||
> **业务链**: 查看咨询列表 → 了解患者沟通情况
|
||||
|
||||
## 7. 消息
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| C.1 | 咨询列表 | /health/consultations → 查看列表 | 可查看咨询列表(只读) | ☐ |
|
||||
| C.2 | 无管理权限 | 检查回复/关闭按钮 | 回复和关闭按钮不可见或禁用(无 consultation.manage) | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 7.1 | 消息列表 | /messages | 打开消息中心 | 只读消息列表,可标记已读 | ☐ |
|
||||
## 5. 场景 D — 告警处理
|
||||
|
||||
## 8. 权限边界验证
|
||||
> **业务链**: 查看告警 → 确认危急告警
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| D.1 | 告警仪表盘 | /health/alert-dashboard → 查看 | 显示告警统计(只有 alerts.list,无 manage) | ☐ |
|
||||
| D.2 | 告警详情 | 查看某条告警 | 可查看告警详情和关联患者 | ☐ |
|
||||
| D.3 | 操作按钮 | 检查确认/处理按钮 | 确认按钮是否可用(取决于 alerts.list vs alerts.manage) | ☐ |
|
||||
|
||||
## 6. 场景 E — 诊断与知情同意
|
||||
|
||||
> **业务链**: 查看诊断记录 → 管理知情同意书
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| E.1 | 诊断记录 | /health/diagnoses → 查看列表 | 只读查看,无编辑/新增按钮(无 manage 权限) | ☐ |
|
||||
| E.2 | 知情同意 | /health/consents → 查看 | 可查看和管理知情同意书 | ☐ |
|
||||
|
||||
## 7. 场景 F — 行动收件箱
|
||||
|
||||
> **业务链**: 接收 AI 建议/告警通知 → 处理行动项
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| F.1 | 行动列表 | /health/action-inbox → 筛选类型 | 显示 AI 建议/告警/随访等行动项 | ☐ |
|
||||
| F.2 | 处理行动 | 点击处理按钮 → 标记完成 | 行动项状态变更 | ☐ |
|
||||
|
||||
## 8. 消息
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 8.1 | 无医护管理 | 输入 /health/doctors | 403 或不可见 | ☐ |
|
||||
| 8.2 | 无标签管理 | 输入 /health/tags | 403 或不可见 | ☐ |
|
||||
| 8.3 | 无积分 | 输入 /health/points-rules | 403 或不可见 | ☐ |
|
||||
| 8.4 | 无内容管理 | 输入 /health/articles | 403 或不可见 | ☐ |
|
||||
| 8.5 | 无 AI 管理 | 输入 /health/ai-analysis | 403 或不可见 | ☐ |
|
||||
| 8.6 | 无随访模板 | 输入 /health/follow-up-templates | 403 或不可见 | ☐ |
|
||||
| 8.7 | 无用户管理 | 输入 /users | 403 或不可见 | ☐ |
|
||||
| 8.1 | 消息列表 | /messages → 查看 | 只读消息列表,可标记已读 | ☐ |
|
||||
|
||||
## 9. 小程序端
|
||||
## 9. 权限边界验证
|
||||
|
||||
> nurse 不应访问的模块
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 9.1 | 登录跳转 | nurse 角色登录 | 跳转到 `/pages/doctor/index`(isMedicalStaff=true) | ☐ |
|
||||
| 9.2 | 工作概览 | 查看数据卡片 | 显示:我的患者、未读消息、待处理随访、今日咨询 | ☐ |
|
||||
| 9.3 | 无健康审核区 | 查看页面 | **不显示**"健康审核"区域(无待审化验权限) | ☐ |
|
||||
| 9.4 | 快捷操作 | 查看快捷操作 | 显示 4 个按钮:患者查询、随访记录、告警中心、行动收件箱(**没有**: 化验审核、透析管理、处方管理) | ☐ |
|
||||
| 9.1 | 无医护管理 | 地址栏输入 /health/doctors | 403 或不可见 | ☐ |
|
||||
| 9.2 | 无标签管理 | 地址栏输入 /health/tags | 403 或不可见 | ☐ |
|
||||
| 9.3 | 无积分管理 | 地址栏输入 /health/points-rules | 403 或不可见 | ☐ |
|
||||
| 9.4 | 无内容管理 | 地址栏输入 /health/articles | 403 或不可见 | ☐ |
|
||||
| 9.5 | 无 AI 分析 | 地址栏输入 /health/ai-analysis | 403 或不可见 | ☐ |
|
||||
| 9.6 | 无随访模板 | 地址栏输入 /health/follow-up-templates | 403 或不可见 | ☐ |
|
||||
| 9.7 | 无用户管理 | 地址栏输入 /users | 403 或不可见 | ☐ |
|
||||
|
||||
## 10. 跨角色协作验证
|
||||
|
||||
| # | 协作场景 | 操作 | 预期结果 | 通过 |
|
||||
|---|----------|------|----------|------|
|
||||
| X.1 | 医生随访转护士 | 查看医生创建的随访任务 | 任务出现在待办列表,可执行 | ☐ |
|
||||
| X.2 | 录入后医生可查 | 完成随访录入 → 用 doctor 账号验证 | 医生可看到护士录入的随访内容 | ☐ |
|
||||
| X.3 | 告警联动 | 患者体征异常 → 告警出现 | 告警出现在行动收件箱 | ☐ |
|
||||
|
||||
## 11. 小程序端(医护工作台)
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 11.1 | 登录跳转 | nurse_test 登录小程序 | 跳转到 `/pages/doctor/index`(isMedicalStaff=true) | ☐ |
|
||||
| 11.2 | 问候语 | 查看问候 | 显示角色对应的问候 | ☐ |
|
||||
| 11.3 | 工作概览 | 查看 4 个数据卡片 | 我的患者、未读消息、待处理随访、今日咨询 | ☐ |
|
||||
| 11.4 | 无健康审核区 | 查看页面 | **不显示**"健康审核"区域 | ☐ |
|
||||
| 11.5 | 快捷操作 | 查看 4 个按钮 | 患者查询、随访记录、告警中心、行动收件箱(**没有**: 化验审核、透析管理、处方管理) | ☐ |
|
||||
|
||||
## 测试结果
|
||||
|
||||
|
||||
@@ -1,93 +1,129 @@
|
||||
# R04 — Health Manager(健康管理师)测试计划
|
||||
# R04 — Health Manager(健康管理师)业务场景测试计划
|
||||
|
||||
> 角色: health_manager | 测试账号: 需手动创建或复用 | 菜单数: 29
|
||||
> 角色: health_manager | 测试账号: 需手动创建或复用 | 菜单数: 29 | 重点: 健康协调与 AI 分析
|
||||
|
||||
> **注意**: 当前数据库中暂无 health_manager 角色的测试用户。如需测试,先以 admin 登录,在用户管理中给某用户分配"健康管理师"角色。
|
||||
> **注意**: 当前数据库中暂无 health_manager 角色的测试用户。先以 admin 登录,在用户管理中给某用户分配"健康管理师"角色后再测试。
|
||||
|
||||
## 1. 登录 & 仪表盘
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 1.1 | 登录 | 使用 health_manager 角色账号登录 | 成功登录,左侧菜单显示 29 个菜单项 | ☐ |
|
||||
| 1.2 | 菜单过滤 | 检查左侧菜单 | **有**: 工作台、统计报表、消息中心、患者管理、医护管理(只读)、标签管理、随访管理、咨询管理、行动收件箱、随访模板、诊断记录、知情同意、告警仪表盘、设备管理、危急值阈值、AI分析历史、AI Prompt、AI用量、实时监控 | ☐ |
|
||||
| 1.3 | 菜单排除 | 检查左侧菜单 | **没有**: 用户管理、权限管理、组织架构、工作流、系统设置、插件管理、积分运营、内容运营、BLE网关、OAuth | ☐ |
|
||||
| 1.4 | 仪表盘视图 | 查看首页 | 应显示管理员/综合仪表盘(含统计概览和运营数据) | ☐ |
|
||||
| 1.1 | 登录 | 使用 health_manager 角色账号登录 | 成功登录,左侧菜单 29 项 | ☐ |
|
||||
| 1.2 | 仪表盘 | 查看首页 | 显示综合仪表盘(含统计概览和运营数据) | ☐ |
|
||||
|
||||
## 2. 患者医护
|
||||
## 2. 场景 A — 患者建档与标签管理
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 2.1 | 患者管理 | /health/patients | 列表 → 搜索 → 新增 → 编辑 | 完整 CRUD | ☐ |
|
||||
| 2.2 | 医护管理(只读) | /health/doctors | 打开列表 | 可查看医护列表(无 doctor.manage 权限) | ☐ |
|
||||
| 2.3 | 标签管理 | /health/tags | 列表 → 新增 → 编辑 | 标签 CRUD(有 tags.manage 权限) | ☐ |
|
||||
| 2.4 | 诊断记录 | /health/diagnoses | 列表 → 查看 | 可查看和管理诊断记录 | ☐ |
|
||||
> **业务链**: 管理标签 → 创建患者 → 分配标签 → 查看患者
|
||||
|
||||
## 3. 随访咨询
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| A.1 | 标签管理 | /health/tags → 新增"慢性病管理"标签(绿色)→ 编辑颜色 → 保存 | 标签 CRUD 正常 | ☐ |
|
||||
| A.2 | 患者管理 | /health/patients → 新增患者 → 分配标签 → 保存 | 患者创建成功,标签显示在卡片上 | ☐ |
|
||||
| A.3 | 患者搜索 | 搜索框输入姓名 → 标签筛选 | 搜索和筛选结果正确 | ☐ |
|
||||
| A.4 | 医护列表 | /health/doctors → 查看(只读) | 显示医护列表,无编辑/新增按钮(无 doctor.manage) | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 3.1 | 随访管理 | /health/follow-up-tasks | 列表 → 创建 → 录入 | 完整随访管理 | ☐ |
|
||||
| 3.2 | 咨询管理 | /health/consultations | 列表 → 回复 | 可管理咨询(有 consultation.manage 权限) | ☐ |
|
||||
| 3.3 | 行动收件箱 | /health/action-inbox | 列表 → 处理 → 团队视图 | 支持个人和团队视图(有 action-inbox.team 权限) | ☐ |
|
||||
| 3.4 | 随访模板 | /health/follow-up-templates | 列表 → 新增 → 编辑 | 可管理随访模板 | ☐ |
|
||||
**交接点**: 标签创建后,doctor/nurse 可在患者筛选器中使用。
|
||||
|
||||
## 4. 监测 & 知情同意
|
||||
## 3. 场景 B — 随访管理闭环
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 4.1 | 知情同意 | /health/consents | 列表 → 管理 | 可查看和管理知情同意书 | ☐ |
|
||||
| 4.2 | 日常监测 | /health/daily-monitoring | 查看监测数据 | 可查看和管理日常监测 | ☐ |
|
||||
| 4.3 | 实时监控 | /health/realtime-monitor | 打开页面 | 显示实时体征监控面板 | ☐ |
|
||||
> **业务链**: 创建随访任务 → 查看执行情况 → 管理团队行动
|
||||
|
||||
## 5. 告警 & 设备
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| B.1 | 创建随访 | /health/follow-up-tasks → 新增 → 选患者/类型/日期 → 保存 | 随访任务创建成功 | ☐ |
|
||||
| B.2 | 随访列表 | 按状态筛选 | 正确显示各状态随访 | ☐ |
|
||||
| B.3 | 随访录入 | 点击某条随访 → 录入 → 保存 | 可录入随访记录 | ☐ |
|
||||
| B.4 | 随访模板 | /health/follow-up-templates → 查看/编辑 | 可管理随访模板 | ☐ |
|
||||
| B.5 | 团队视图 | 行动收件箱 → 切换团队视图 | 支持个人和团队视图(有 action-inbox.team 权限) | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 5.1 | 告警仪表盘 | /health/alert-dashboard | 打开页面 | 显示告警统计,可管理告警 | ☐ |
|
||||
| 5.2 | 告警规则 | (通过告警仪表盘进入) | 查看/编辑规则 | 可查看和管理告警规则(有 alert-rules.manage 权限) | ☐ |
|
||||
| 5.3 | 危急值阈值 | /health/critical-value-thresholds | 列表 → 查看 | 可查看危急值阈值配置 | ☐ |
|
||||
| 5.4 | 设备管理 | /health/devices | 列表 → 查看 | 可查看设备列表(只读,无 devices.manage) | ☐ |
|
||||
**交接点**: 健康管理师创建的随访任务,护士可执行录入。
|
||||
|
||||
## 6. AI 分析
|
||||
## 4. 场景 C — 咨询管理
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 6.1 | AI 分析历史 | /health/ai-analysis | 列表 → 触发新分析 | 可查看和触发 AI 分析(有 ai.analysis.manage 权限) | ☐ |
|
||||
| 6.2 | AI Prompt | /health/ai-prompts | 列表 → 查看 | 可查看 Prompt 模板(只读,有 ai.prompt.list) | ☐ |
|
||||
| 6.3 | AI 建议 | (通过行动收件箱) | 查看 AI 建议 | 可查看和管理 AI 建议(有 ai.suggestion.manage 权限) | ☐ |
|
||||
| 6.4 | AI 用量 | /health/ai-usage | 打开页面 | 显示 AI 调用量统计 | ☐ |
|
||||
> **业务链**: 查看待处理咨询 → 回复 → 关闭
|
||||
|
||||
## 7. 消息
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| C.1 | 咨询列表 | /health/consultations → 按状态筛选 | 显示 waiting/active/closed 咨询 | ☐ |
|
||||
| C.2 | 回复咨询 | 进入对话 → 输入回复 → 发送 | 可回复(有 consultation.manage 权限) | ☐ |
|
||||
| C.3 | 关闭咨询 | 点击结束咨询 | 咨询状态变为 closed | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 7.1 | 消息列表 | /messages | 打开消息中心 | 只读消息列表 | ☐ |
|
||||
## 5. 场景 D — 告警与监测
|
||||
|
||||
## 8. 工作流
|
||||
> **业务链**: 管理告警规则 → 查看告警 → 处理 → 监测数据
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 8.1 | 工作流只读 | (通过 API 或菜单) | 查看流程 | 可查看工作流(有 workflow.read 权限),可启动流程(有 workflow.start) | ☐ |
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| D.1 | 告警仪表盘 | /health/alert-dashboard → 查看 | 显示告警统计,可管理告警 | ☐ |
|
||||
| D.2 | 告警规则 | 通过告警仪表盘进入 → 查看/编辑规则 | 可管理告警规则(有 alert-rules.manage) | ☐ |
|
||||
| D.3 | 处理告警 | 点击某条告警 → 确认/处理 | 告警状态变更 | ☐ |
|
||||
| D.4 | 危急值阈值 | /health/critical-value-thresholds → 查看 | 可查看阈值配置 | ☐ |
|
||||
| D.5 | 设备管理 | /health/devices → 查看(只读) | 设备列表可查看,无编辑按钮(无 devices.manage) | ☐ |
|
||||
| D.6 | 日常监测 | /health/daily-monitoring → 查看数据 | 可查看和管理日常监测数据 | ☐ |
|
||||
| D.7 | 实时监控 | /health/realtime-monitor → 查看 | 显示实时体征监控面板 | ☐ |
|
||||
|
||||
## 9. 权限边界验证
|
||||
## 6. 场景 E — AI 分析与建议
|
||||
|
||||
> **业务链**: 触发 AI 分析 → 查看 Prompt → 管理 AI 建议 → 查看用量
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| E.1 | AI 分析 | /health/ai-analysis → 触发新分析 → 查看结果 | 可触发和管理 AI 分析(有 ai.analysis.manage) | ☐ |
|
||||
| E.2 | AI Prompt | /health/ai-prompts → 查看模板 | 只读查看 Prompt(有 ai.prompt.list,无 manage) | ☐ |
|
||||
| E.3 | AI 建议 | 行动收件箱 → 查看 AI 建议 → 采纳/拒绝 | 可管理 AI 建议(有 ai.suggestion.manage) | ☐ |
|
||||
| E.4 | AI 用量 | /health/ai-usage → 查看 | 显示 AI 调用量统计 | ☐ |
|
||||
|
||||
## 7. 场景 F — 诊断与知情同意
|
||||
|
||||
> **业务链**: 查看诊断 → 管理知情同意
|
||||
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| F.1 | 诊断记录 | /health/diagnoses → 查看 | 可查看和管理诊断记录 | ☐ |
|
||||
| F.2 | 知情同意 | /health/consents → 管理 | 可查看和管理知情同意书 | ☐ |
|
||||
|
||||
## 8. 消息
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 9.1 | 无用户管理 | 输入 /users | 403 | ☐ |
|
||||
| 9.2 | 无积分管理 | 输入 /health/points-rules | 403 | ☐ |
|
||||
| 9.3 | 无内容管理 | 输入 /health/articles | 403 | ☐ |
|
||||
| 9.4 | 无系统设置 | 输入 /settings | 403 | ☐ |
|
||||
| 9.5 | 无插件管理 | 输入 /plugins/admin | 403 | ☐ |
|
||||
| 9.6 | 无 BLE 网关 | 输入 /health/ble-gateways | 403 | ☐ |
|
||||
| 8.1 | 消息列表 | /messages → 查看 | 只读消息列表 | ☐ |
|
||||
|
||||
## 10. 小程序端
|
||||
## 9. 工作流
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 10.1 | 登录跳转 | health_manager 角色登录 | 跳转到 `/pages/doctor/index`(isMedicalStaff 现在包含 health_manager) | ☐ |
|
||||
| 10.2 | 工作概览 | 查看数据卡片 | 显示:我的患者、未读消息、待处理随访、今日咨询 | ☐ |
|
||||
| 10.3 | 无健康审核区 | 查看页面 | **不显示**"健康审核"区域(无待审化验权限) | ☐ |
|
||||
| 10.4 | 快捷操作 | 查看快捷操作 | 显示 4 个按钮:患者查询、随访记录、告警中心、行动收件箱(**没有**: 化验审核、透析管理、处方管理) | ☐ |
|
||||
| 9.1 | 工作流 | 查看/启动流程 | 可查看(workflow.read)和启动(workflow.start),不可编辑 | ☐ |
|
||||
|
||||
## 10. 权限边界验证
|
||||
|
||||
> health_manager 不应访问的模块
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 10.1 | 无用户管理 | 地址栏输入 /users | 403 | ☐ |
|
||||
| 10.2 | 无积分管理 | 地址栏输入 /health/points-rules | 403 | ☐ |
|
||||
| 10.3 | 无内容管理 | 地址栏输入 /health/articles | 403 | ☐ |
|
||||
| 10.4 | 无系统设置 | 地址栏输入 /settings | 403 | ☐ |
|
||||
| 10.5 | 无插件管理 | 地址栏输入 /plugins/admin | 403 | ☐ |
|
||||
| 10.6 | 无 BLE 网关 | 地址栏输入 /health/ble-gateways | 403 | ☐ |
|
||||
|
||||
## 11. 跨角色协作验证
|
||||
|
||||
| # | 协作场景 | 操作 | 预期结果 | 通过 |
|
||||
|---|----------|------|----------|------|
|
||||
| X.1 | 标签共享 | 新建标签 → 用 doctor 账号验证 | doctor 可在患者筛选中使用新标签 | ☐ |
|
||||
| X.2 | 随访指派 | 创建随访 → 用 nurse 账号验证 | 护士可看到并执行该随访 | ☐ |
|
||||
| X.3 | 团队行动 | 切换团队视图 → 查看全团队行动 | 显示所有团队成员的待办行动 | ☐ |
|
||||
| X.4 | AI 建议协同 | 查看 AI 建议 → 采纳 → 验证医生可见 | 采纳的建议同步到医生视图 | ☐ |
|
||||
|
||||
## 12. 小程序端(医护工作台)
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 12.1 | 登录跳转 | health_manager 登录小程序 | 跳转到 `/pages/doctor/index`(isMedicalStaff 包含 health_manager) | ☐ |
|
||||
| 12.2 | 工作概览 | 查看 4 个数据卡片 | 我的患者、未读消息、待处理随访、今日咨询 | ☐ |
|
||||
| 12.3 | 无健康审核区 | 查看页面 | **不显示**"健康审核"区域 | ☐ |
|
||||
| 12.4 | 快捷操作 | 查看 4 个按钮 | 患者查询、随访记录、告警中心、行动收件箱(**没有**: 化验审核、透析管理、处方管理) | ☐ |
|
||||
|
||||
## 测试结果
|
||||
|
||||
|
||||
@@ -1,80 +1,118 @@
|
||||
# R05 — Operator(运营人员)测试计划
|
||||
# R05 — Operator(运营人员)业务场景测试计划
|
||||
|
||||
> 角色: operator | 测试账号: operator_test / Admin@2026 | 菜单数: 24
|
||||
> 角色: operator | 测试账号: operator_test / Admin@2026 | 菜单数: 24 | 重点: 内容运营与积分商城
|
||||
|
||||
## 1. 登录 & 仪表盘
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 1.1 | 登录 | 输入 operator_test / Admin@2026 | 成功登录,左侧菜单显示 24 个菜单项 | ☐ |
|
||||
| 1.2 | 菜单过滤 | 检查左侧菜单 | **有**: 工作台、统计报表、消息中心、患者管理、标签管理、积分规则、商品管理、订单管理、线下活动、内容管理、设备管理、告警仪表盘、AI用量 | ☐ |
|
||||
| 1.3 | 菜单排除 | 检查左侧菜单 | **没有**: 用户管理、权限管理、组织架构、工作流、系统设置、插件管理、医护管理、随访管理、咨询管理、行动收件箱、随访模板、诊断记录、知情同意、实时监控、BLE网关、危急值阈值、AI分析、AI Prompt、OAuth | ☐ |
|
||||
| 1.4 | 运营仪表盘 | 查看首页 | 显示"运营仪表盘",包含:运营洞察、积分动态(今日发放/消费)、内容矩阵(已发布/草稿)、今日待办 | ☐ |
|
||||
| 1.5 | 运营 AI 摘要 | 查看顶部 AI 摘要 | 显示 AI 生成的运营重点摘要 | ☐ |
|
||||
| 1.6 | 快捷操作 | 查看按钮 | 显示:审核积分订单、发布新文章、推送活动提醒 | ☐ |
|
||||
| 1.1 | 登录 | 输入 operator_test / Admin@2026 | 成功登录,左侧菜单 24 项 | ☐ |
|
||||
| 1.2 | 运营仪表盘 | 查看首页 | 显示"运营仪表盘":运营洞察、积分动态(今日发放/消费)、内容矩阵(已发布/草稿)、今日待办 | ☐ |
|
||||
| 1.3 | AI 摘要 | 查看顶部 AI 摘要 | 显示 AI 生成的运营重点摘要 | ☐ |
|
||||
| 1.4 | 快捷操作 | 查看按钮 | 审核积分订单、发布新文章、推送活动提醒 | ☐ |
|
||||
|
||||
## 2. 患者管理
|
||||
## 2. 场景 A — 患者与标签管理
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 2.1 | 患者列表(只读) | /health/patients | 打开列表 | 可查看患者列表(有 patient.list 权限,无 manage,确认新增按钮是否隐藏) | ☐ |
|
||||
| 2.2 | 标签管理 | /health/tags | 列表 → 新增 → 编辑 | 可管理标签(有 tags.manage 权限) | ☐ |
|
||||
> **业务链**: 管理标签 → 查看患者(只读)
|
||||
|
||||
## 3. 积分运营
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| A.1 | 标签管理 | /health/tags → 新增"术后康复"标签 → 编辑 → 保存 | 标签 CRUD 正常(有 tags.manage) | ☐ |
|
||||
| A.2 | 患者列表 | /health/patients → 查看列表 | 只读查看,确认新增按钮是否隐藏(有 patient.list 无 manage) | ☐ |
|
||||
| A.3 | 患者搜索 | 搜索框输入 → 标签筛选 | 搜索和筛选正常 | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 3.1 | 积分规则 | /health/points-rules | 打开列表 → 查看 | 显示积分规则列表,可管理规则 | ☐ |
|
||||
| 3.2 | 商品管理 | /health/points-products | 打开列表 → 新增 | 可管理积分商品 | ☐ |
|
||||
| 3.3 | 订单管理 | /health/points-orders | 打开列表 → 查看 | 显示兑换订单列表 | ☐ |
|
||||
| 3.4 | 线下活动 | /health/offline-events | 打开列表 → 查看 | 显示线下活动列表 | ☐ |
|
||||
**交接点**: 标签创建后,医护角色可在患者筛选中使用。
|
||||
|
||||
## 4. 内容运营
|
||||
## 3. 场景 B — 内容发布链
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 4.1 | 内容管理 | /health/articles | 列表 → 新增 → 编辑 → 发布 | 可管理文章(有 articles.manage 和 articles.review 权限) | ☐ |
|
||||
| 4.2 | 文章发布 | /health/articles | 编辑文章 → 点击发布 | 文章状态变为已发布 | ☐ |
|
||||
> **业务链**: 创建文章 → 编辑 → 提交审核 → 发布 → 验证已发布
|
||||
|
||||
## 5. 设备 & 告警
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| B.1 | 创建文章 | /health/articles → 新增 → 填写标题/内容 → 保存草稿 | 文章状态 draft | ☐ |
|
||||
| B.2 | 编辑文章 | 点击草稿 → 修改内容 → 保存 | 内容更新 | ☐ |
|
||||
| B.3 | 发布文章 | 点击发布 | 状态 draft → published(有 articles.manage 和 articles.review) | ☐ |
|
||||
| B.4 | 内容矩阵 | 回到运营仪表盘 → 查看内容矩阵 | 已发布/草稿数量更新 | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 5.1 | 设备管理(只读) | /health/devices | 打开列表 | 可查看设备列表(只读,无 devices.manage) | ☐ |
|
||||
| 5.2 | 告警仪表盘 | /health/alert-dashboard | 打开页面 | 可查看告警统计(只有 alerts.list,无 manage,确认操作按钮) | ☐ |
|
||||
**交接点**: 已发布文章患者端小程序可见。
|
||||
|
||||
## 6. AI 用量
|
||||
## 4. 场景 C — 积分商城链
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 6.1 | AI 用量统计 | /health/ai-usage | 打开页面 | 可查看 AI 调用量(只读) | ☐ |
|
||||
> **业务链**: 配置积分规则 → 上架商品 → 查看订单
|
||||
|
||||
## 7. 消息
|
||||
| # | 步骤 | 操作 | 预期结果 | 通过 |
|
||||
|---|------|------|----------|------|
|
||||
| C.1 | 积分规则 | /health/points-rules → 查看 → 编辑规则 | 可管理积分规则 | ☐ |
|
||||
| C.2 | 新增商品 | /health/points-products → 新增 → 填写名称/积分/库存 → 保存 | 商品出现在列表 | ☐ |
|
||||
| C.3 | 订单管理 | /health/points-orders → 查看订单列表 | 显示兑换订单 | ☐ |
|
||||
| C.4 | 积分动态 | 回到运营仪表盘 → 查看积分动态 | 今日发放/消费数据更新 | ☐ |
|
||||
|
||||
| # | 测试项 | 路径 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|------|----------|------|
|
||||
| 7.1 | 消息列表 | /messages | 打开消息中心 | 只读消息列表 | ☐ |
|
||||
**交接点**: 商品上架后,患者端小程序积分商城可见可兑换。
|
||||
|
||||
## 8. 权限边界验证
|
||||
## 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 | 无用户管理 | 输入 /users | 403 | ☐ |
|
||||
| 8.2 | 无医护管理 | 输入 /health/doctors | 403 | ☐ |
|
||||
| 8.3 | 无随访管理 | 输入 /health/follow-up-tasks | 403 | ☐ |
|
||||
| 8.4 | 无咨询管理 | 输入 /health/consultations | 403 | ☐ |
|
||||
| 8.5 | 无诊断记录 | 输入 /health/diagnoses | 403 | ☐ |
|
||||
| 8.6 | 无行动收件箱 | 输入 /health/action-inbox | 403 | ☐ |
|
||||
| 8.7 | 无知情同意 | 输入 /health/consents | 403 | ☐ |
|
||||
| 8.8 | 无 AI 分析 | 输入 /health/ai-analysis | 403 | ☐ |
|
||||
| 8.9 | 无系统设置 | 输入 /settings | 403 | ☐ |
|
||||
| 8.1 | 消息列表 | /messages → 查看 | 只读消息列表 | ☐ |
|
||||
|
||||
## 9. 小程序端
|
||||
## 9. 权限边界验证
|
||||
|
||||
> operator 不应访问的模块
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 9.1 | 登录跳转 | operator 角色登录 | 跳转到患者首页(isMedicalStaff=false,因为 operator 不在医护列表中) | ☐ |
|
||||
| 9.2 | 患者首页 | 查看首页 | 显示体征完成度、今日待办、快捷操作(普通患者视图) | ☐ |
|
||||
| 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 | 积分订单联动 | 患者兑换商品 → 查看订单 | 订单出现在积分订单列表 | ☐ |
|
||||
|
||||
## 11. 小程序端(患者视角)
|
||||
|
||||
> operator 不在医护列表中,以普通患者身份使用小程序
|
||||
|
||||
| # | 测试项 | 操作 | 预期结果 | 通过 |
|
||||
|---|--------|------|----------|------|
|
||||
| 11.1 | 登录跳转 | operator_test 登录小程序 | 跳转到患者首页(isMedicalStaff=false) | ☐ |
|
||||
| 11.2 | 患者首页 | 查看首页 | 显示体征完成度、今日待办、快捷操作(普通患者视图) | ☐ |
|
||||
|
||||
## 测试结果
|
||||
|
||||
|
||||
Reference in New Issue
Block a user