From bca5e07cdda8b7d585ae352a03007d7cb41cd5b6 Mon Sep 17 00:00:00 2001 From: cocos02 Date: Thu, 11 Jun 2026 21:58:34 +0800 Subject: [PATCH] fix: use path-based unique Dagre IDs so convergent scenes appear per branch --- src/components/TreeFlow.vue | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/components/TreeFlow.vue b/src/components/TreeFlow.vue index a7ef563..06dc66a 100644 --- a/src/components/TreeFlow.vue +++ b/src/components/TreeFlow.vue @@ -38,8 +38,9 @@ function buildFlow(root: PlayerTreeNode) { function walk(node: PlayerTreeNode, parentId: string | null) { if (node.visited) { + const dagreId = parentId ? `${parentId}/${node.sceneId}` : node.sceneId dagreNodes.push({ - id: node.sceneId, + id: dagreId, parent: parentId, label: node.label, visited: true, @@ -48,29 +49,29 @@ function buildFlow(root: PlayerTreeNode) { lockHint: node.lockHint, }) if (parentId) { - dagreEdges.push({ from: parentId, to: node.sceneId, visited: true }) + dagreEdges.push({ from: parentId, to: dagreId, visited: true }) } const unvisited: PlayerTreeNode[] = [] for (const child of node.children) { if (child.visited) { - walk(child, node.sceneId) + walk(child, dagreId) } else { unvisited.push(child) } } if (unvisited.length > 0) { - const mysteryId = `${node.sceneId}__mystery` + const mysteryId = `${dagreId}/__mystery` dagreNodes.push({ id: mysteryId, - parent: node.sceneId, + parent: dagreId, label: '? ?', visited: false, isMystery: true, locked: true, }) - dagreEdges.push({ from: node.sceneId, to: mysteryId, visited: false }) + dagreEdges.push({ from: dagreId, to: mysteryId, visited: false }) } } }