From 703bff4f375206afc99840560cbe777a8594c03b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=8D=9A?= <1016318004@qq.com> Date: Thu, 27 Feb 2025 17:27:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor(flow):=20=E4=BC=98=E5=8C=96=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E9=85=8D=E7=BD=AE=E4=BF=9D=E5=AD=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在保存流程配置前,增加与旧流程配置的比较逻辑 - 主要比较除节点位置外的其他内容是否发生变化 - 如果流程配置未变化,保留原有的调试状态 - 优化代码结构,提高可读性和可维护性 --- apps/manager/flow.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/apps/manager/flow.py b/apps/manager/flow.py index f0b3c8d33..f3d2ba559 100644 --- a/apps/manager/flow.py +++ b/apps/manager/flow.py @@ -343,8 +343,35 @@ class FlowManager: edge_type=EdgeType(edge_item.type) if edge_item.type else EdgeType.NORMAL, ) flow_config.edges.append(edge_config) - await FlowLoader().save(app_id, flow_id, flow_config) - flow_config = await FlowLoader().load(app_id, flow_id) + flow_loader = FlowLoader() + old_flow = await flow_loader.load(app_id, flow_id) + # 比较old_flow和flow_config的内容除了node.pos以外是否相同 + # TODO: clean_code, 提取成函数 + debuged = False + if type(old_flow) is Flow: + debuged = old_flow.debug + if debuged is True: + debuged = True + if len(flow_config.steps) != len(old_flow.steps): + debuged = False + if len(flow_config.edges) != len(old_flow.edges): + debuged = False + for _id, step in flow_config.steps.items(): + if _id not in old_flow.steps: + debuged = False + else: + old_flow.steps[_id].pos = step.pos + old_flow.steps[_id].description = step.description + old_flow.steps[_id].name = step.name + old_flow.steps[_id].type = step.type + if old_flow.steps[_id] != step: + debuged = False + for _id in flow_config.edges: + if _id not in old_flow.edges: + debuged = False + flow_config.debug = debuged + await flow_loader.save(app_id, flow_id, flow_config) + flow_config = await flow_loader.load(app_id, flow_id) app_loader = AppLoader() file_checker = FileChecker() app_path = Path(config["SEMANTICS_DIR"]) / APP_DIR / app_id -- Gitee