Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions apps/application/workflow/nodes/loop_node/loop_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ def on_next(wf_manage, content):

def on_complete(wf_manage, error):
self._loop_node_data.append(wf_manage.context)
self._loop_answer_data.append(chunk_list)
self._loop_answer_data.append([c.to_dict() for c in chunk_list])
self.write_context("loop_node_data", self._loop_node_data)
self.write_context("loop_answer_data", self._loop_answer_data)
self.write_context("index", index)
Expand Down Expand Up @@ -211,26 +211,28 @@ def get_details(self, index: int = 0, position: dict = None, old_details: dict =
old_iteration_details = old_details.get("iteration_details", [])

# 1. 先把 old_iteration_details 全部复制过来,记录断点位置
if old_iteration_details and position and position.id == self.node.id:
if old_iteration_details and position and position.get("id") == self.node.id:
for i, value in enumerate(old_iteration_details):
loop_details.append(value)
if position.index == i:
if position.get("index") == i:
position_index = i

# 2. 遍历当前新执行的迭代
for new_iter_index, iteration_context in enumerate(loop_node_data):
iteration_result = []

# 第一个新迭代且是断点:传入旧详情
if new_iter_index == 0 and position and position.id == self.node.id:
if new_iter_index == 0 and position and position.get("id") == self.node.id:
# 续跑迭代:先复制旧详情
if position_index < len(old_iteration_details):
for old_item in old_iteration_details[position_index]:
iteration_result.append(old_item)

# 遍历当前迭代的节点 context
child_position = (
position.children if new_iter_index == 0 and position and position.id == self.node.id else None
position.get("children")
if new_iter_index == 0 and position and position.get("id") == self.node.id
else None
)
child_position_index = 0
for node_id, node_context in iteration_context.items():
Expand All @@ -239,13 +241,13 @@ def get_details(self, index: int = 0, position: dict = None, old_details: dict =
**node_context,
}
# 断点节点:插入到 child_position_index 位置
if child_position and child_position.id == node_id:
if child_position and child_position.get("id") == node_id:
iteration_result.insert(child_position_index, node_details)
else:
iteration_result.append(node_details)

# 第一个新迭代且是断点:插入到 position_index,否则追加
if new_iter_index == 0 and position and position.id == self.node.id:
if new_iter_index == 0 and position and position.get("id") == self.node.id:
loop_details.insert(position_index, iteration_result)
else:
loop_details.append(iteration_result)
Expand Down
Loading