- 修复 6 个 Entity table_name 与迁移不匹配: shift, handoff_log, patient_assignment, blind_index, critical_alert, critical_alert_response - 添加透析记录 draft→completed 状态转换 API (PUT /complete) - 修复 family_proxy_service 告警状态过滤 (active→pending/acknowledged) - dev.ps1 添加 RATE_LIMIT__FAIL_CLOSE=false 开发模式 - S2 透析日流程 smoke test 报告
4.2 KiB
4.2 KiB
S2 透析日流程 Smoke Test 报告
日期: 2026-05-05 | 测试环境: dev (localhost:3000) | 测试者: Claude AI
概述
S2 场景验证血透中心完整透析日工作流:护士登录 → 查看排班 → 患者签到 → 体征录入 → 透析记录 → 触发告警 → 确认告警 → 班次交接。
结果: PASS_WITH_ISSUES — 核心流程可走通,发现 2 个 CRITICAL + 1 个 HIGH + 1 个 MEDIUM bug。
测试步骤
| 步骤 | 测试项 | 结果 | 说明 |
|---|---|---|---|
| S2-1 | 护士登录 | PASS | admin/Admin@2026 登录成功,JWT 获取正常 |
| S2-2 | 查看今日排班 | PASS | GET /health/doctor-schedules 返回排班列表(需先通过 API 创建测试数据) |
| S2-3 | 患者签到 | PASS | POST /health/appointments/{id}/confirm 确认预约 |
| S2-4 | 体征录入 | PASS | POST /health/patients/{id}/vital-signs 创建血压/心率记录 |
| S2-5 | 透析记录 | FAIL | CRITICAL: draft→completed 状态转换无 API 入口 |
| S2-6 | 异常体征触发告警 | FAIL | HIGH: 手动体征录入不触发告警规则 |
| S2-7 | 确认告警 | PARTIAL | acknowledged→resolved 正常;active→acknowledged 因状态不匹配失败 |
| S2-8 | 班次交接 | PASS | POST /health/shifts + POST /health/handoff-logs 均成功 |
Bug 列表
CRITICAL-1: 透析记录状态 draft→completed 无 API 入口
- 位置:
crates/erp-dialysis/src/module.rs - 现象:
update_dialysis_record不修改 status 字段;review_dialysis_record只处理 completed→reviewed。无任何端点支持 draft→completed 转换。 - 影响: 透析记录创建后无法标记为"已完成",整个透析流程中断。
- 修复建议: 在
DialysisService中添加complete_dialysis_record方法,在 module.rs 注册PUT /health/dialysis-records/{id}/complete路由。
CRITICAL-2: 告警状态 "active" vs "pending" 不匹配
- 位置:
crates/erp-health/src/service/validation.rs:230-251 - 现象: 告警创建时 status 设为 "active",但
validate_alert_status_transition只允许从 "pending" 开始转换。active→acknowledged 被拒绝。 - 影响: 所有通过告警规则的告警无法被确认/解决。
- 修复建议: 统一告警创建状态为 "pending",或在 validation 中增加 "active" 作为合法起始状态。
HIGH-1: 手动体征录入不触发告警规则
- 位置:
crates/erp-health/src/service/vital_signs_service.rs - 现象: 告警规则检查只在设备数据上传(BLE gateway)路径触发,手动 API 录入体征不触发告警评估。
- 影响: 护士手动录入异常体征时不会自动生成告警,依赖人工发现。
- 修复建议: 在 vital_signs_service 的 create 方法中添加告警评估调用。
MEDIUM-1: Entity 表名与迁移不匹配(6 处)
- 位置:
crates/erp-health/src/entity/下 6 个文件 - 现象: Entity
table_name使用复数形式或不同前缀,但迁移建表使用单数/不同名称。 - 已修复的文件:
| Entity 文件 | entity table_name (修复前) | 迁移表名 | 修复后 |
|---|---|---|---|
| shift.rs | shifts |
shift |
shift |
| handoff_log.rs | shift_handoff_log |
handoff_log |
handoff_log |
| patient_assignment.rs | patient_assignments |
patient_assignment |
patient_assignment |
| blind_index.rs | blind_indexes |
blind_index |
blind_index |
| critical_alert.rs | critical_alerts |
critical_alert |
critical_alert |
| critical_alert_response.rs | critical_alert_responses |
critical_alert_response |
critical_alert_response |
- 影响: shift/handoff API 返回 500;其他功能受影响程度取决于使用频率。
测试数据
- 排班: 2026-05-05 AM/PM (doctor-schedules)
- 班次: 2026-05-05 morning/afternoon (shifts)
- 交接记录: AM→PM shift handoff
- 体征记录: 血压 180/110 (异常值)
- 透析记录: draft 状态(无法完成)
结论
S2 透析日流程核心端点连通性已验证,但发现多个阻断性 bug。建议优先修复 CRITICAL-1(透析状态转换)和 CRITICAL-2(告警状态不匹配),然后重新运行 S2 验证。