From d5ab408fee7e276c9a47be1c790cbce7d6f2bd11 Mon Sep 17 00:00:00 2001 From: wxg0103 <727495428@qq.com> Date: Mon, 19 Oct 2026 11:30:18 +0800 Subject: [PATCH] fix: improve knowledge validation logic and handle workspace checks --- apps/knowledge/serializers/knowledge_workflow.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/knowledge/serializers/knowledge_workflow.py b/apps/knowledge/serializers/knowledge_workflow.py index 8667a947b49..cb16ab3c07c 100644 --- a/apps/knowledge/serializers/knowledge_workflow.py +++ b/apps/knowledge/serializers/knowledge_workflow.py @@ -121,10 +121,16 @@ class KnowledgeWorkflowActionSerializer(serializers.Serializer): def is_valid(self, *, raise_exception=False): super().is_valid(raise_exception=True) workspace_id = self.data.get("workspace_id") - query_set = QuerySet(Knowledge).filter(id=self.data.get("knowledge_id")) - if workspace_id: - query_set = query_set.filter(workspace_id=workspace_id) - if not query_set.exists(): + knowledge = QuerySet(Knowledge).filter(id=self.data.get("knowledge_id")).first() + if not knowledge: + raise AppApiException(500, _("Knowledge id does not exist")) + # 系统触发(workspace_id 为 None)不做空间校验,直接放行; + # 否则仅系统资源(workspace_id 为 "None")或属于当前空间的知识库可见 + if ( + workspace_id not in (None, "None") + and knowledge.workspace_id != "None" + and knowledge.workspace_id != workspace_id + ): raise AppApiException(500, _("Knowledge id does not exist")) def get_query_set(self, instance: Dict):