PR REVIEW EVIDENCE

需求3299 P05:签到机院端离线保存体重血压(3479)

hemo-backend #1391

  1. PR 提交时间2026-10-11 13:50:46
  2. 审核结束时间2026-10-11 14:00:25
  3. 固定版本0bad63bd27e2
  4. 模型链gpt-5.6-terra → gpt-5.6-sol
  5. 门禁blocked
  6. 结果success

难度分

90
  • code_volume88改动横跨接口、认证、临床写入、同步、SQL 和大量测试,新增实现与测试文件较多。
  • architecture_complexity92涉及签到设备、院端、云端、同步队列和下行激活等多部署角色之间的状态与事务协作。
  • domain_knowledge90需要理解透前透后评估、签到时间、透析单状态、冲突留存及医院设置的临床业务规则。
  • impact_scope86功能面向所有部署院端的医院,影响设备认证、体征写入、云端回传和临床资料同步。
  • risk_level91改动直接写入患者体征和签到记录,并依赖离线重试、去重、并发锁定与跨端一致性控制。

完成分

84
  • correctness60最终风险固定扣分:high 1×40;合计 -40
  • completeness100本次静态审核未发现该维度的确认问题;不代表绝对完善
  • code_quality80最终风险固定扣分:medium 1×20;合计 -20
  • security100本次静态审核未发现该维度的确认问题;不代表绝对完善
  • details100本次静态审核未发现该维度的确认问题;不代表绝对完善

固定范围

目标分支 SHA
fb6a884b2dbf162798d37d18b8cfbca00d3f3ba5
共同祖先 SHA
910268048ae9cc79789cd652a40c4fc5f3117e5b
PR head SHA
0bad63bd27e295d5b0d3ac3f7e07e67c487ae5ff
轻量检查
passed · 轻量检查通过

风险与证据

high · 已确认 · 已计入完成分

次日透析单可被提前写入签到体征

当天的签到体重或血压可能被写入次日透析记录,并在后续回传到云端,造成未来治疗记录提前签到和体征错误,影响护士对患者当次治疗的判断。

证据:src/main/java/com/data/hemodialysis/service/edge/EdgeSignService.java:149 if (record == null || !hospital.equals(record.getClientCode()) || !patient.getCode().equals(record.getPatientCode()) || record.getMedState() == null || record.getMedState() >= 4d || record.getScheduleDate() == null || new DateTime(record.getScheduleDate()).isAfter( DateTime.now().withTimeAtStartOfDay().plusDays(1).minusMillis(1))) { throw new EdgeSignError.Rejected(EdgeSignError.EDGE_SIGN_RECORD_INVALID); }

建议:将允许的日期上限改为今日结束,或直接校验排班日期不得晚于今日,并补充次日及更晚排班均被拒绝的接口和集成测试。

medium · 已确认 · 已计入完成分

下行激活会无界锁定全部未确认签到事件

离线积压或云端长期拒绝事件较多时,院端数据同步可能明显变慢并扩大事务锁定范围,影响签到数据回传和最新临床资料下发。

证据:src/main/java/com/data/hemodialysis/service/edge/EdgeSignSnapshotProtection.java:51 List<Map<String, Object>> events = jdbc.queryForList("SELECT id, record_code, status, payload_json, " + "cloud_result_json FROM edge_event_outbox WHERE client_code=? AND event_kind='SIGN' " + "AND snapshot_confirmed=0 ORDER BY id FOR UPDATE", hospital);

建议:按事件主键或透析单分批处理待确认事件,限制单次读取和锁定量;在与生产结构及代表性积压量相当的环境使用 EXPLAIN 或 EXPLAIN ANALYZE 核对索引、扫描行数、锁等待和同步耗时。