Skip to content

Commit 3378b54

Browse files
authored
fix: AI conversation nodes connected after parallel nodes have different contexts when they first arrive at AI conversation nodes in different branches #4778 (#4797)
1 parent 16a8084 commit 3378b54

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

apps/application/flow/common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ def get_up_nodes(self, node_id) -> List[Node]:
170170
@param node_id: 节点id
171171
@return: 节点列表
172172
"""
173-
return [en.node for en in self.up_node_map.get(node_id)]
173+
return [en.node for en in (self.up_node_map.get(node_id) or [])]
174174

175175
def get_next_nodes(self, node_id) -> List[Node]:
176176
"""
@@ -243,7 +243,7 @@ def is_valid_start_node(self):
243243

244244
def is_valid_model_params(self):
245245
node_list = [node for node in self.nodes if (
246-
node.type == 'ai-chat-node' or node.type == 'question-node' or node.type == 'parameter-extraction-node')]
246+
node.type == 'ai-chat-node' or node.type == 'question-node' or node.type == 'parameter-extraction-node')]
247247
for node in node_list:
248248
model = QuerySet(Model).filter(id=node.properties.get('node_data', {}).get('model_id')).first()
249249
if model is None:

apps/application/flow/workflow_manage.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -664,9 +664,16 @@ def get_next_node_list(self, current_node, current_node_result):
664664
f"{edge.sourceNodeId}_{current_node_result.node_variable.get('branch_id')}_right" == edge.sourceAnchorId):
665665
if next_node.properties.get('condition', "AND") == 'AND':
666666
if self.dependent_node_been_executed(edge.targetNodeId):
667+
up_nodes = self.flow.get_up_nodes(edge.targetNodeId)
668+
up_node_id_list = current_node.up_node_id_list
669+
if up_nodes and len(up_nodes) > 1:
670+
up_nodes.sort(key=lambda node: node.id)
671+
first = up_nodes[0]
672+
up_node_id_list = [n_c for n_c in self.node_context if n_c.node.id == first.id][
673+
0].up_node_id_list
667674
node_list.append(
668675
self.get_node_cls_by_id(edge.targetNodeId,
669-
[*current_node.up_node_id_list, current_node.node.id]))
676+
[*up_node_id_list, current_node.node.id]))
670677
else:
671678
node_list.append(
672679
self.get_node_cls_by_id(edge.targetNodeId,
@@ -678,9 +685,16 @@ def get_next_node_list(self, current_node, current_node_result):
678685
next_node = edge_node.node
679686
if next_node.properties.get('condition', "AND") == 'AND':
680687
if self.dependent_node_been_executed(edge.targetNodeId):
688+
up_nodes = self.flow.get_up_nodes(edge.targetNodeId)
689+
up_node_id_list = current_node.up_node_id_list
690+
if up_nodes and len(up_nodes) > 1:
691+
up_nodes.sort(key=lambda node: node.id)
692+
first = up_nodes[0]
693+
up_node_id_list = [n_c for n_c in self.node_context if n_c.node.id == first.id][
694+
0].up_node_id_list
681695
node_list.append(
682696
self.get_node_cls_by_id(edge.targetNodeId,
683-
[*current_node.up_node_id_list, current_node.node.id]))
697+
[*up_node_id_list, current_node.node.id]))
684698
else:
685699
node_list.append(
686700
self.get_node_cls_by_id(edge.targetNodeId,

0 commit comments

Comments
 (0)