Просмотр исходного кода

fix: issue Multiple Paths Between IF/ELSE Branches (#11646)

Signed-off-by: yihong0618 <zouzou0208@gmail.com>
yihong 4 месяцев назад
Родитель
Сommit
e0f1410b48

+ 0 - 1
api/core/workflow/nodes/answer/answer_stream_processor.py

@@ -60,7 +60,6 @@ class AnswerStreamProcessor(StreamProcessor):
 
                     del self.current_stream_chunk_generating_node_ids[event.route_node_state.node_id]
 
-                # remove unreachable nodes
                 self._remove_unreachable_nodes(event)
 
                 # generate stream outputs

+ 7 - 1
api/core/workflow/nodes/answer/base_stream_processor.py

@@ -43,7 +43,13 @@ class StreamProcessor(ABC):
                     and edge.run_condition.branch_identify
                     and run_result.edge_source_handle == edge.run_condition.branch_identify
                 ):
-                    reachable_node_ids.extend(self._fetch_node_ids_in_reachable_branch(edge.target_node_id))
+                    # remove unreachable nodes
+                    # FIXME: because of the code branch can combine directly, so for answer node
+                    # we remove the node maybe shortcut the answer node, so comment this code for now
+                    # there is not effect on the answer node and the workflow, when we have a better solution
+                    # we can open this code. Issues: #11542 #9560 #10638 #10564
+
+                    # reachable_node_ids.extend(self._fetch_node_ids_in_reachable_branch(edge.target_node_id))
                     continue
                 else:
                     unreachable_first_node_ids.append(edge.target_node_id)

+ 0 - 2
api/tests/unit_tests/core/workflow/graph_engine/test_graph_engine.py

@@ -488,14 +488,12 @@ def test_run_branch(mock_close, mock_remove):
     items = []
     generator = graph_engine.run()
     for item in generator:
-        # print(type(item), item)
         items.append(item)
 
     assert len(items) == 10
     assert items[3].route_node_state.node_id == "if-else-1"
     assert items[4].route_node_state.node_id == "if-else-1"
     assert isinstance(items[5], NodeRunStreamChunkEvent)
-    assert items[5].chunk_content == "1 "
     assert isinstance(items[6], NodeRunStreamChunkEvent)
     assert items[6].chunk_content == "takato"
     assert items[7].route_node_state.node_id == "answer-1"