From 7cc33d9b863c6dcd3dd5a03b4e4ead1e38f26ebd Mon Sep 17 00:00:00 2001 From: zhangzhanwei Date: Mon, 29 Dec 2025 14:10:32 +0800 Subject: [PATCH] fix: Support shared knowledge workflow --- apps/common/constants/permission_constants.py | 4 +++ .../serializers/knowledge_workflow.py | 8 ++--- ui/src/api/system-shared/knowledge.ts | 35 +++++++++++++++++++ ui/src/views/knowledge-workflow/index.vue | 1 - 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/apps/common/constants/permission_constants.py b/apps/common/constants/permission_constants.py index 2fe17a182..6f3bbbf11 100644 --- a/apps/common/constants/permission_constants.py +++ b/apps/common/constants/permission_constants.py @@ -1308,6 +1308,10 @@ class PermissionConstants(Enum): group=Group.SYSTEM_KNOWLEDGE_WORKFLOW, operate=Operate.EDIT, role_list=[RoleConstants.ADMIN], parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE" ) + SHARED_KNOWLEDGE_WORKFLOW_EXPORT = Permission( + group=Group.SYSTEM_KNOWLEDGE_WORKFLOW, operate=Operate.EXPORT, role_list=[RoleConstants.ADMIN], + parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE" + ) SHARED_KNOWLEDGE_DOCUMENT_READ = Permission( group=Group.SYSTEM_KNOWLEDGE_DOCUMENT, operate=Operate.READ, role_list=[RoleConstants.ADMIN], parent_group=[SystemGroup.SHARED_KNOWLEDGE], is_ee=settings.edition == "EE" diff --git a/apps/knowledge/serializers/knowledge_workflow.py b/apps/knowledge/serializers/knowledge_workflow.py index 9af67b445..882fd2bec 100644 --- a/apps/knowledge/serializers/knowledge_workflow.py +++ b/apps/knowledge/serializers/knowledge_workflow.py @@ -283,7 +283,7 @@ class KnowledgeWorkflowSerializer(serializers.Serializer): class Import(serializers.Serializer): user_id = serializers.UUIDField(required=True, label=_('user id')) - workspace_id = serializers.CharField(required=True, label=_('workspace id')) + workspace_id = serializers.CharField(required=False, label=_('workspace id')) knowledge_id = serializers.UUIDField(required=True, label=_('knowledge id')) @transaction.atomic @@ -364,13 +364,13 @@ class KnowledgeWorkflowSerializer(serializers.Serializer): input_field_list=tool.get('input_field_list'), init_field_list=tool.get('init_field_list'), is_active=False if len((tool.get('init_field_list') or [])) > 0 else tool.get('is_active'), - scope=ToolScope.WORKSPACE, - folder_id=workspace_id, + scope=ToolScope.SHARED if workspace_id == 'None' else ToolScope.WORKSPACE, + folder_id='default' if workspace_id == 'None' else workspace_id, workspace_id=workspace_id) class Export(serializers.Serializer): user_id = serializers.UUIDField(required=True, label=_('user id')) - workspace_id = serializers.CharField(required=True, label=_('workspace id')) + workspace_id = serializers.CharField(required=False, label=_('workspace id')) knowledge_id = serializers.UUIDField(required=True, label=_('knowledge id')) def export(self, with_valid=True): diff --git a/ui/src/api/system-shared/knowledge.ts b/ui/src/api/system-shared/knowledge.ts index 008454d2f..01753b514 100644 --- a/ui/src/api/system-shared/knowledge.ts +++ b/ui/src/api/system-shared/knowledge.ts @@ -388,6 +388,39 @@ const putKnowledgeWorkflow: ( return put(`${prefix}/${knowledge_id}/workflow`, data, undefined, loading) } +/** * 导出知识库工作流 + * @param knowledge_id + * @param knowledge_name + * @param loading + * @returns + */ +const exportKnowledgeWorkflow = ( + knowledge_id: string, + knowledge_name: string, + loading?: Ref, +) => { + return exportFile( + knowledge_name + '.kbwf', + `${prefix}/${knowledge_id}/workflow/export`, + undefined, + loading, + ) +} + +/** * 导入知识库工作流 + * @param knowledge_id + * @param data + * @param loading + * @returns + */ +const importKnowledgeWorkflow: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return post(`${prefix}/${knowledge_id}/workflow/import`, data, undefined, loading) +} + const workflowUpload: ( knowledge_id: string, instance: Dict, @@ -443,6 +476,8 @@ export default { listKnowledgeVersion, workflowUpload, getWorkflowActionPage, + exportKnowledgeWorkflow, + importKnowledgeWorkflow, } as { [key: string]: any } diff --git a/ui/src/views/knowledge-workflow/index.vue b/ui/src/views/knowledge-workflow/index.vue index d4bd604f0..139c9d6d1 100644 --- a/ui/src/views/knowledge-workflow/index.vue +++ b/ui/src/views/knowledge-workflow/index.vue @@ -411,7 +411,6 @@ const importKnowledgeWorkflow = (file: any) => { formData.append('file', file.raw) const name = file.name.replace('.kbwf', '') elUploadRef.value.clearFiles() - debugger MsgConfirm( t('common.tip'), `${t('views.application.tip.confirmUse')} ${name} ${t('views.application.tip.overwrite')}?`,