5.3 KiB
5.3 KiB
E2E 跨平台业务联调测试报告
日期: 2026-04-30 | 参与者: Claude Code 自动化测试
背景
对 HMS 健康管理平台进行端到端业务联调,验证 Web 端(管理员/医生/护士)和小程序端(患者)四个角色的核心业务流程和数据一致性。
测试环境
| 组件 | 地址 | 状态 |
|---|---|---|
| 后端 API | http://localhost:3000/api/v1 |
运行中 |
| Web 前端 | http://localhost:5174 |
运行中 |
| PostgreSQL | localhost:5432/erp |
运行中 |
| Redis | 云端 | 运行中 |
测试账号
| 角色 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin | Admin@2026 |
| 医生 | doctor1 | Doctor@2026 |
| 护士 | nurse1 | Nurse@2026 |
测试数据
| 数据 | ID |
|---|---|
| 联调测试患者 | 019ddf17-6c67-78b0-b3cc-c41512b76b12 |
| 预约 (2026-05-05) | 019ddf1c-7dd6-7ee3-b012-ef1fd703ef15 |
| 体征记录 1 (空值) | 019ddf2c-91ee-76e0-8fdf-c1a78ee45a5b |
| 体征记录 2 (血压135/88) | 019ddf2c-cdb3-7f00-9547-21e364720845 |
测试结果总览
| 测试项 | 结果 | 备注 |
|---|---|---|
| Admin 登录 + 仪表盘 | ✅ 通过 | 显示统计概览 |
| Admin 创建患者 | ✅ 通过 | "联调测试患者" 创建成功 |
| Admin 创建预约 | ✅ 通过 | 需先创建排班,CAS 匹配 start_time |
| Doctor 登录 + 仪表盘 | ✅ 通过 | 显示医生专属视图 |
| Doctor 查看患者列表 | ✅ 通过 | 可看到 Admin 创建的患者 |
| Nurse 登录 + 仪表盘 | ✅ 通过 | 显示"随访监控台" |
| Nurse 查看告警 | ✅ 通过 | 权限正确限制 |
| 跨角色数据一致性 | ✅ 通过 | 三角色查询同一患者数据一致 |
| 小程序 API - 患者详情 | ✅ 通过 | |
| 小程序 API - 预约列表 | ✅ 通过 | 返回 1 条预约 |
| 小程序 API - 体征数据 | ✅ 通过 | 创建 + 查询链路正常 |
| 小程序 API - 文章列表 | ✅ 通过 | 4 篇已发布文章 |
| 小程序 API - 随访任务 | ✅ 通过 | 0 条(预期,未创建) |
| 小程序 API - 告警列表 | ✅ 通过 | 0 条(预期,未触发) |
| 小程序 API - 积分账户 | ✅ 通过 | 路径 points/account(单数) |
发现的问题
已确认非问题(之前误报)
- 预约查询返回 0 条 — 实际是 token 中 tenant_id 与数据不一致导致。使用正确角色的 token 查询正常返回数据。
- 文章列表返回 0 条 — 同上,token 问题。Admin/Doctor 角色查询正常返回 5 条(4 published + 1 draft)。
已知设计限制
- 预约 CAS 精确匹配 start_time — 预约只能预约排班的精确时段,不支持排班时段内的子时间段。例如排班 08:00-12:00,预约 start_time 必须是 08:00,不能是 09:00。
- Nurse 角色文章 403 — 护士无
health.articles.list权限,返回 403 是正确行为。 - 体征创建字段映射 —
systolic/diastolic请求参数不映射到systolic_bp_morning/diastolic_bp_morning,需要使用精确字段名。
路径注意事项
| 资源 | 正确 API 路径 | 易错路径 |
|---|---|---|
| 体征数据 | /health/patients/{id}/vital-signs |
/health/vital-signs (404) |
| 设备读数 | /health/patients/{id}/device-readings |
/health/device-readings (404) |
| 积分账户 | /health/points/account (单数) |
/health/points/accounts (404) |
| 积分交易 | /health/points/transactions |
- |
跨角色数据一致性矩阵
| API 端点 | Admin | Doctor | Nurse |
|---|---|---|---|
| 患者预约 (total=1) | 1 ✅ | 1 ✅ | - |
| 患者体征 (total=2) | 2 ✅ | 2 ✅ | 2 ✅ |
| 已发布文章 (total=4) | 4 ✅ | 4 ✅ | 403 ✅ (无权限) |
| 患者详情 | ✅ | ✅ | ✅ |
结论:同租户内跨角色数据完全一致,权限隔离正确。
小程序端测试详情
通过 API 层模拟小程序患者视角的完整业务流:
- 查看个人信息 →
GET /health/patients/{id}✅ - 查看我的预约 →
GET /health/appointments?patient_id={id}✅ - 查看体征数据 →
GET /health/patients/{id}/vital-signs✅ - 查看健康文章 →
GET /health/articles?status=published✅ - 查看随访任务 →
GET /health/follow-up-tasks?patient_id={id}✅ (0 条) - 查看告警 →
GET /health/alerts✅ (0 条) - 查看积分 →
GET /health/points/account?patient_id={id}✅
未覆盖项
- MCP 连接微信开发者工具进行 UI 级测试(DevTools 未连接)
- 小程序微信登录流程(需要 dev mode 环境)
- 体征数据趋势图 API(
/health/vital-signs/trend返回 404,可能未注册路由)
结论
HMS 平台核心业务链路功能正常:
- Web 端三角色(admin/doctor/nurse)登录、权限控制、数据访问全部通过
- 跨角色数据一致性验证通过(同租户内数据共享正确)
- 小程序端患者视角 API 全部可达且返回正确
- 权限隔离按设计工作(nurse 无法访问文章管理等超出职责的功能)
- 预约 CAS 并发控制工作正常
建议后续改进:
- 体征 API 添加字段别名映射(
systolic→systolic_bp_morning)降低调用门槛 - 体征趋势 API 路由确认(
/health/vital-signs/trend返回 404) - 预约 CAS 支持更灵活的时段匹配