同步用户相关修改

This commit is contained in:
strepsiades
2026-03-24 15:13:46 +08:00
parent 8ee0131d47
commit 67370657db
5 changed files with 171 additions and 85 deletions
@@ -155,6 +155,14 @@ def check_dependency_satisfied(
return True
def _normalize_dependency_field_values(value: Any) -> list[Any]:
if isinstance(value, list):
return [item for item in value if item not in (None, "")]
if value in (None, ""):
return []
return [value]
def collect_dependency_errors(
dependency_nodes: List[Optional["SyncNode"]],
field_names: List[str],
@@ -211,23 +219,29 @@ async def check_dependencies_for_nodes(strategy, nodes: List["SyncNode"], collec
if has_depend_fields and data_present:
for field_name, dep_node_type in strategy.config.depend_fields.items():
dep_data_id = node_data.get(field_name)
if not dep_data_id:
dep_data_values = _normalize_dependency_field_values(node_data.get(field_name))
if not dep_data_values:
continue
is_list_field = isinstance(node_data.get(field_name), list)
dep_node = collection.get_by_data_id(dep_node_type, dep_data_id)
if dep_node is None:
maybe_node_id_ref = collection.get_by_node_id(str(dep_data_id))
if maybe_node_id_ref is not None and maybe_node_id_ref.node_type == dep_node_type:
semantic_errors.append(f"依赖字段 {field_name} 使用了 node_id={dep_data_id},期望 data_id 引用")
for dep_data_id in dep_data_values:
dep_node = collection.get_by_data_id(dep_node_type, dep_data_id)
if dep_node is None:
maybe_node_id_ref = collection.get_by_node_id(str(dep_data_id))
if maybe_node_id_ref is not None and maybe_node_id_ref.node_type == dep_node_type:
semantic_errors.append(
f"依赖字段 {field_name} 使用了 node_id={dep_data_id},期望 data_id 引用"
)
if is_list_field:
continue
depend_nodes.append(dep_node)
depend_field_names.append(field_name)
depend_field_types.append(dep_node_type)
depend_field_values.append(str(dep_data_id))
depend_nodes.append(dep_node)
depend_field_names.append(field_name)
depend_field_types.append(dep_node_type)
depend_field_values.append(str(dep_data_id))
if dep_node:
depend_ids.append(dep_node.node_id)
if dep_node:
depend_ids.append(dep_node.node_id)
node.depend_ids = depend_ids