优化sync_system代码质量

This commit is contained in:
strepsiades
2026-04-01 11:52:57 +08:00
parent eb02fd32a5
commit 8f4727a772
46 changed files with 1431 additions and 890 deletions
@@ -20,16 +20,13 @@ class PreparationSyncStrategy(DefaultSyncStrategy[PreparationDetail]):
update_direction=UpdateDirection.PUSH,
)
def _needs_update(self, source_node, target_node, resolved_data=None, data_id_map=None) -> bool:
if resolved_data is None:
raise ValueError(f"[{self.node_type}] resolved_data is required for differential sync.")
target_data = target_node.get_data()
def should_update_pair(self, source_node, target_node, *, source_data, target_data, data_id_map=None) -> bool:
if target_data is None:
return False
# 这里只按 PostPreparation 可写字段判定是否需要 update,避免 response-only 字段差异触发空更新。
update_fields = set(PostPreparation.model_fields.keys())
source_payload = {key: value for key, value in resolved_data.items() if key in update_fields}
source_payload = {key: value for key, value in source_data.items() if key in update_fields}
target_payload = {key: value for key, value in target_data.items() if key in update_fields}
normalized_source = normalized_data_for_compare(source_payload, data_id_map or {})