PR REVIEW EVIDENCE

feat(entity-log): 公司旧备份其余11库导入工具(禅道 #3442)

hemo-backend #1387

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

难度分

80
  • code_volume72改动覆盖备份脚本、远程运行脚本、Java 导入命令、参数表、文档及多组测试。
  • architecture_complexity84涉及对象存储、SSH 远程执行、独立数据库恢复、生产路由写入和断点重跑等多系统协作。
  • domain_knowledge81需要理解历史日志审计、排班机构可见范围、归档对象约束和医疗数据查询一致性。
  • impact_scope74功能面向公司历史日志接入并会影响线上查询路由,但材料未提供可核对的具体医院范围。
  • risk_level88流程处理大量历史日志并最终写入生产查询路由,来源校验、数据一致性和运行恢复均具有较高风险。

完成分

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

固定范围

目标分支 SHA
832315c1f41bdb25a79bd3614227e0e5d8960e03
共同祖先 SHA
f1f6abfe2dc7b54046a2d165617b6706e9e37957
PR head SHA
29b6b7bc6b75114d32325492289b4b16c0e91307
轻量检查
passed · 轻量检查通过

风险与证据

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

下载工具未校验备份来源服务器,其他服务器的同名备份可被发布为旧库日志

错误来源的历史操作日志可能被标记为公司旧库数据并进入在线查询,造成审计记录错配或展示不正确的患者相关操作历史。

证据:src/main/java/com/data/hemodialysis/service/entitylogarchive/EntityUpdateLogLegacyBackupDownloadCommand.java:50 String prefix = req(env, "LEGACY_BACKUP_PREFIX"); java.util.regex.Matcher m = PREFIX.matcher(prefix); if (!m.matches() || !m.group(1).equals(req(env, "LEGACY_SOURCE_DATABASE"))) { throw new IllegalArgumentException("旧库备份前缀格式或源库名不符"); }

建议:向下载命令传入预期来源服务器 UUID,并同时校验备份前缀和清单中的来源 UUID;任一处不一致时在下载或恢复前拒绝。

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

已存在排班映射文件的重跑仍会扫描全部排班日志

服务器重启或任务重跑时,历史日志导入会反复执行大范围去重扫描,可能明显延长恢复时间,并增加导入无法按计划完成的风险。

证据:src/main/java/com/data/hemodialysis/service/entitylogarchive/EntityUpdateLogLegacyImportCommand.java:255 if (Files.exists(file)) {

建议:在映射文件完整性校验通过后立即加载并返回;如需输出源库排班编号总数,可将该统计随映射文件持久化,避免重跑时再次扫描历史日志表。