From 3333349af43ff2c19b829d1f01bd32a5a0530c18 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 Date: Tue, 25 Jun 2024 15:17:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9edge=E7=82=B9=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/application/flow/workflow_manage.py | 8 +++++++ .../serializers/application_serializers.py | 2 +- .../serializers/chat_serializers.py | 2 ++ ui/src/workflow/common/edge.ts | 24 +++++++++++++------ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/apps/application/flow/workflow_manage.py b/apps/application/flow/workflow_manage.py index e1b28f57d..bc59521ae 100644 --- a/apps/application/flow/workflow_manage.py +++ b/apps/application/flow/workflow_manage.py @@ -60,6 +60,14 @@ class Flow: start_node_list = [node for node in self.nodes if node.id == 'start-node'] return start_node_list[0] + def is_valid(self): + """ + 校验工作流数据 + """ + self.is_valid_start_node() + self.is_valid_base_node() + self.is_valid_work_flow() + @staticmethod def is_valid_node_params(node: Node): get_node(node.type)(node, None, None) diff --git a/apps/application/serializers/application_serializers.py b/apps/application/serializers/application_serializers.py index 6bcad2cda..937512d25 100644 --- a/apps/application/serializers/application_serializers.py +++ b/apps/application/serializers/application_serializers.py @@ -540,7 +540,7 @@ class ApplicationSerializer(serializers.Serializer): work_flow = instance.get('work_flow') if work_flow is None: raise AppApiException(500, "work_flow是必填字段") - Flow.new_instance(work_flow).is_valid_work_flow() + Flow.new_instance(work_flow).is_valid() base_node = get_base_node_work_flow(work_flow) if base_node is not None: node_data = base_node.get('properties').get('node_data') diff --git a/apps/application/serializers/chat_serializers.py b/apps/application/serializers/chat_serializers.py index 8c37caaf7..402eff691 100644 --- a/apps/application/serializers/chat_serializers.py +++ b/apps/application/serializers/chat_serializers.py @@ -22,6 +22,7 @@ from django.db.models import QuerySet, Q from django.http import HttpResponse from rest_framework import serializers +from application.flow.workflow_manage import Flow from application.models import Chat, Application, ApplicationDatasetMapping, VoteChoices, ChatRecord, WorkFlowVersion, \ ApplicationTypeChoices from application.models.api_key_model import ApplicationAccessToken @@ -262,6 +263,7 @@ class ChatSerializers(serializers.Serializer): def open(self): self.is_valid(raise_exception=True) work_flow = self.data.get('work_flow') + Flow.new_instance(work_flow).is_valid() chat_id = str(uuid.uuid1()) application = Application(id=None, dialogue_number=3, model=None, dataset_setting={}, diff --git a/ui/src/workflow/common/edge.ts b/ui/src/workflow/common/edge.ts index 8e5bbba28..856bf0149 100644 --- a/ui/src/workflow/common/edge.ts +++ b/ui/src/workflow/common/edge.ts @@ -71,13 +71,23 @@ class CustomEdge2 extends BezierEdge { } : {}) }), - h('foreignObject', { ...positionData, style: { overflow: 'visible' } }, [ - h('div', { - id, - style: wrapperStyle, - className: 'lf-custom-edge-wrapper' - }) - ]) + h( + 'foreignObject', + { + ...positionData, + y: positionData.y + 5, + x: positionData.x + 11, + style: { overflow: 'visible' } + }, + [ + h('div', { + id, + style: wrapperStyle, + + className: 'lf-custom-edge-wrapper' + }) + ] + ) ]) } }