"""源增量与目标一致性检查;只读报告不构成切换、发布或整包交付授权。""" from __future__ import annotations from 建立映射 import 旧快照, 检查目标快照 from 核对结果 import 核对迁移结果 def 核对快照变化(基线: list[旧快照], 当前: list[旧快照]) -> dict: def 指纹(记录): 结果 = {} for 项 in 记录: 结果.setdefault(项.source.对象键, set()).add((项.source.revision, 项.源哈希)) return 结果 旧, 新 = 指纹(基线), 指纹(当前) return { "added": sorted(set(新) - set(旧)), "removed": sorted(set(旧) - set(新)), "changed": sorted(k for k in set(旧) & set(新) if 旧[k] != 新[k]), } def 检查切换条件(装配, 身份, 基线: list[旧快照], 当前: list[旧快照], 映射, **目标参数) -> dict: 检查目标快照(基线, 范围名称="基线") 检查目标快照(当前, 范围名称="当前") 核对 = 核对迁移结果(装配, 身份, 基线, 映射, **目标参数) 增量 = 核对快照变化(基线, 当前) return { "reconciliation": 核对, "source_delta": 增量, "data_checks_passed": 核对["data_checks_passed"] and not any(增量.values()), "production_switch_authorized": False, "package_acceptance_claimed": False, }