medium · 已确认 · 已计入完成分回滚脚本会跨批次恢复历史 TO_PREV 记录
回滚当前批次时,先前批次中仍保持修复值的下机 Kt/V 也可能被恢复为旧值,导致已经完成修复的透析记录回退,并使临床数据和核对结果失真。
证据:scripts/ktv-end-repair/gen_to_previous_sql.py:89 f.write('UPDATE patient_hemo_med_monitor_data m JOIN %s b ON m.id = b.id\n'
'SET m.data_kt_v = b.old_data_kt_v, m.ktv_source_type = b.old_ktv_source_type,\n'
' m.ktv_hct_percent_snapshot = b.old_ktv_hct_percent_snapshot,\n'
' m.ktv_blood_flow_snapshot = b.old_ktv_blood_flow_snapshot,\n'
' m.ktv_start_time_snapshot = b.old_ktv_start_time_snapshot,\n'
' m.update_time = b.old_update_time\n'
'WHERE %s AND b.backed_up_at IS NOT NULL AND m.data_kt_v = b.new_ktv;\n' % (table, only))
建议:为每次生成写入唯一批次标识,并在备份、更新、回滚、核对和校验语句中统一按该标识过滤;回滚前核对目标批次的记录数。