规范了update data的构建方式,统一使用build_update_request_data方法来处理更新数据的构建和过滤逻辑。这个方法会根据提供的原始数据、更新数据和对应的schema来生成最终的更新请求数据,同时会自动排除掉未变化的字段和空值字段,从而确保只发送必要的更新信息到后端接口。这种方式不仅简化了代码逻辑,还提高了代码的可维护性和一致性。

This commit is contained in:
strepsiades
2026-03-30 14:51:01 +08:00
parent f50dc1aed0
commit bdc7bd5069
28 changed files with 416 additions and 129 deletions
@@ -45,6 +45,7 @@ class BaseSyncStrategy(Generic[T]):
skip_sync: bool - 如果为 True,则跳过该类型的 bind/create/update/sync 阶段
数据仍会被加载,但不会执行任何同步操作
适用于只需要加载数据供其他类型引用的场景(如 supplier)
skip_post_check: bool - 如果为 True,则跳过该类型最终 post-check 的 reload 与一致性校验
"""
# 类变量:默认配置(子类可覆盖)
default_config: StrategyConfig = StrategyConfig()
@@ -52,6 +53,8 @@ class BaseSyncStrategy(Generic[T]):
schema: Type[T] = None # type: ignore
# 类变量:是否默认跳过同步(子类可覆盖)
default_skip_sync: bool = False
# 类变量:是否默认跳过 post-check(子类可覆盖)
default_skip_post_check: bool = False
def __init__(
self,
@@ -71,6 +74,8 @@ class BaseSyncStrategy(Generic[T]):
self.config = self.default_config.model_copy(deep=True)
# 是否跳过同步(可运行时修改)
self.skip_sync = self.default_skip_sync
# 是否跳过 post-check(可运行时修改)
self.skip_post_check = self.default_skip_post_check
# 统一由 Pipeline 注入 runtime;未注入时在执行阶段显式报错
self.sm_runtime: Optional[StateMachineRuntime] = None
self._schema_diff_validator: Optional[SchemaDiffValidator] = None