PR REVIEW EVIDENCE

fix/2026/07/fix_3683_仁寿医院辜文华监测记录最后一条ktv异常

hemo-backend #1385

  1. PR 提交时间2026-10-09 17:43:27
  2. 审核结束时间2026-10-09 17:52:53
  3. 固定版本5b2c15d3eaff
  4. 模型链gpt-5.6-terra → gpt-5.6-sol
  5. 门禁blocked
  6. 结果success

难度分

80
  • code_volume68跨 12 个提交修改了 Kt/V 计算、监测保存、上下机入口、Mapper SQL 和多组回归测试。
  • architecture_complexity82变更同时涉及分段累计、持久化来源标记、条件更新、审计、异步同步和多个调用入口。
  • domain_knowledge88需要理解透析开始/结束阶段、血流量口径、人工确认优先级及 Kt/V 累计计算语义。
  • impact_scope78影响透析中监测录入、历史修正、护理端下机和开放接口下机等核心流程。
  • risk_level84计算结果直接影响临床透析记录;并发写入和历史重算还会影响数据一致性与保存链路性能。

完成分

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

固定范围

目标分支 SHA
0effc12b1fb5bb52e10d017e76ce8b971a2e4efe
共同祖先 SHA
f5e51f9cd2fcacd4a376708fadd694af078d90fe
PR head SHA
5b2c15d3eaffb7e6b9eae9c71f73c8ff15daa985
轻量检查
passed · 轻量检查通过

风险与证据

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

历史监测重算在保存链路中形成逐条读写

较早时间点的监测补录或修改会同步重算此后的每条监测记录。监测点较多时,保存操作可能明显变慢、延迟监测数据同步,并增加数据库连接、写入和异步任务压力。

证据:src/main/java/com/data/hemodialysis/service/calc/ktv/KtvRealtimeClacService.java:841 for (int i = anchorIndex + 1; i < timeline.size(); i++) { PatientHemoMedMonitorData current = timeline.get(i); if (isManualKtv(current)) { break; } EndKtvCalcResult result = calculateIncrementFromPrevious( recordCode, record, previous, current.getDataTime(), "监测时间线", inputs); if (!result.isSuccess()) { break; } String rawKtv = KtvOnlineDisplayUtil.formatRawStorage(result.getValue()); // 分段累计没有完整的独立重算输入,清空旧 AUTO 快照并保存 UNKNOWN 来源。 if (!patientHemoMedMonitorDataService.updateIncrementalKtvWithCas(current, rawKtv)) {

建议:保留逐段计算和并发保护,但将后续重算从高频保存请求中解耦,或使用批量持久化、合并审计与合并通知,避免每个后续点触发独立读写链。请在与生产结构和代表性数据量相当的环境使用 EXPLAIN 或 EXPLAIN ANALYZE,核对时间线查询和条件更新的索引、扫描行数及单次保存触发的读写次数。