feat(topology): persist complete diagram semantics

This commit is contained in:
2026-07-09 21:53:00 +08:00
parent e7becba0b0
commit 0dbcd3086e
4 changed files with 139 additions and 44 deletions
+17 -1
View File
@@ -247,10 +247,22 @@ def fetch_layout():
dn.component_id,
c.component_key,
dn.x, dn.y, dn.width, dn.height,
dn.style_key, dn.label_override, dn.z_index
dn.style_key, dn.label_override, dn.z_index,
dn.display_meta, dn.display_hint, dn.decorations,
members.member_keys
FROM diagram_layouts dl
JOIN diagram_nodes dn ON dn.layout_id = dl.id
LEFT JOIN components c ON c.id = dn.component_id
LEFT JOIN LATERAL (
SELECT ARRAY_AGG(
member_component.component_key
ORDER BY member.display_order
) AS member_keys
FROM diagram_node_members member
JOIN components member_component
ON member_component.id = member.component_id
WHERE member.diagram_node_id = dn.id
) members ON true
WHERE dl.base_id = (SELECT id FROM bases WHERE code = 'guanghan')
AND dl.is_default = true
ORDER BY dn.z_index, dn.node_key
@@ -275,5 +287,9 @@ def fetch_layout():
"styleKey": row["style_key"],
"labelOverride": row["label_override"],
"zIndex": row["z_index"],
"displayMeta": row["display_meta"],
"displayHint": row["display_hint"],
"decorations": row["decorations"] or {},
"memberKeys": row["member_keys"] or [],
})
return {"layout": layout_info, "nodes": nodes} if layout_info else None