fix: Fix variable availability resolution for child nodes in workflow

This commit is contained in:
zhsama
2026-02-05 15:20:48 +08:00
parent b60f9c7703
commit 8235ad9e62

View File

@ -31,6 +31,13 @@ const mergeAvailableNodes = (baseNodes: Node[], extraNodes: Node[]) => {
return Array.from(merged.values())
}
const resolveAvailabilityNodeId = (node: Node, nodes: Node[]) => {
const parentNodeId = (node.data as { parent_node_id?: string })?.parent_node_id
if (parentNodeId && nodes.some(n => n.id === parentNodeId))
return parentNodeId
return node.id
}
const getNodeInfo = (nodeId: string, nodes: Node[]) => {
const allNodes = nodes
const node = allNodes.find(n => n.id === nodeId)
@ -66,7 +73,8 @@ const useNodesAvailableVarList = (nodes: Node[], {
nodes.forEach((node) => {
const nodeId = node.id
const baseAvailableNodes = passedInAvailableNodes || (onlyLeafNodeVar ? getTreeLeafNodes(nodeId) : getBeforeNodesInSameBranchIncludeParent(nodeId))
const availabilityNodeId = resolveAvailabilityNodeId(node, nodes)
const baseAvailableNodes = passedInAvailableNodes || (onlyLeafNodeVar ? getTreeLeafNodes(availabilityNodeId) : getBeforeNodesInSameBranchIncludeParent(availabilityNodeId))
const availableNodes = mergeAvailableNodes(baseAvailableNodes, parentAvailableNodes)
if (node.data.type === BlockEnum.Loop)
availableNodes.push(node)
@ -112,7 +120,8 @@ export const useGetNodesAvailableVarList = () => {
nodes.forEach((node) => {
const nodeId = node.id
const baseAvailableNodes = passedInAvailableNodes || (onlyLeafNodeVar ? getTreeLeafNodes(nodeId) : getBeforeNodesInSameBranchIncludeParent(nodeId))
const availabilityNodeId = resolveAvailabilityNodeId(node, nodes)
const baseAvailableNodes = passedInAvailableNodes || (onlyLeafNodeVar ? getTreeLeafNodes(availabilityNodeId) : getBeforeNodesInSameBranchIncludeParent(availabilityNodeId))
const availableNodes = mergeAvailableNodes(baseAvailableNodes, parentAvailableNodes)
if (node.data.type === BlockEnum.Loop)
availableNodes.push(node)