1010import json
1111import threading
1212import traceback
13+ import uuid
1314from concurrent .futures import ThreadPoolExecutor
1415from functools import reduce
1516from typing import List , Dict
@@ -575,7 +576,7 @@ def get_runtime_details(self):
575576 details ['node_id' ] = node .id
576577 details ['up_node_id_list' ] = node .up_node_id_list
577578 details ['runtime_node_id' ] = node .runtime_node_id
578- details_result [node . runtime_node_id ] = details
579+ details_result [str ( uuid . uuid1 ()) ] = details
579580 return details_result
580581
581582 def get_answer_text_list (self ):
@@ -664,9 +665,18 @@ def get_next_node_list(self, current_node, current_node_result):
664665 for edge in self .flow .edges :
665666 if (edge .sourceNodeId == current_node .id and
666667 f"{ edge .sourceNodeId } _{ current_node_result .node_variable .get ('branch_id' )} _right" == edge .sourceAnchorId ):
667- if self .dependent_node_been_executed (edge .targetNodeId ):
668+ next_node = [node for node in self .flow .nodes if node .id == edge .targetNodeId ]
669+ if len (next_node ) == 0 :
670+ continue
671+ if next_node [0 ].properties .get ('condition' , "AND" ) == 'AND' :
672+ if self .dependent_node_been_executed (edge .targetNodeId ):
673+ node_list .append (
674+ self .get_node_cls_by_id (edge .targetNodeId ,
675+ [* current_node .up_node_id_list , current_node .node .id ]))
676+ else :
668677 node_list .append (
669- self .get_node_cls_by_id (edge .targetNodeId , self .get_up_node_id_list (edge .targetNodeId )))
678+ self .get_node_cls_by_id (edge .targetNodeId ,
679+ [* current_node .up_node_id_list , current_node .node .id ]))
670680 else :
671681 for edge in self .flow .edges :
672682 if edge .sourceNodeId == current_node .id :
@@ -676,10 +686,12 @@ def get_next_node_list(self, current_node, current_node_result):
676686 if next_node [0 ].properties .get ('condition' , "AND" ) == 'AND' :
677687 if self .dependent_node_been_executed (edge .targetNodeId ):
678688 node_list .append (
679- self .get_node_cls_by_id (edge .targetNodeId , self .get_up_node_id_list (edge .targetNodeId )))
689+ self .get_node_cls_by_id (edge .targetNodeId ,
690+ [* current_node .up_node_id_list , current_node .node .id ]))
680691 else :
681692 node_list .append (
682- self .get_node_cls_by_id (edge .targetNodeId , [current_node .node .id ]))
693+ self .get_node_cls_by_id (edge .targetNodeId ,
694+ [* current_node .up_node_id_list , current_node .node .id ]))
683695 return node_list
684696
685697 def get_reference_field (self , node_id : str , fields : List [str ]):
0 commit comments