From a4b657011089862a1025825c0f6162d79a9eb206 Mon Sep 17 00:00:00 2001 From: CaptainB Date: Thu, 5 Jun 2025 16:27:54 +0800 Subject: [PATCH] feat: rename tool_type to scope and update related query parameters for tool filtering --- apps/tools/api/tool.py | 4 ++-- apps/tools/serializers/tool.py | 34 ++++++++++++++++++---------------- apps/tools/sql/list_tool.sql | 2 +- apps/tools/views/tool.py | 2 +- ui/src/views/tool/index.vue | 2 +- 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/apps/tools/api/tool.py b/apps/tools/api/tool.py index 9bd982c11..70e567702 100644 --- a/apps/tools/api/tool.py +++ b/apps/tools/api/tool.py @@ -202,10 +202,10 @@ class ToolPageAPI(ToolReadAPI): required=False, ), OpenApiParameter( - name="tool_type", + name="scope", description="工具类型", type=OpenApiTypes.STR, - enum=["CUSTOM", "INTERNAL"], + enum=["SHARED", "WORKSPACE"], location='query', required=True, ), diff --git a/apps/tools/serializers/tool.py b/apps/tools/serializers/tool.py index 76fada5e0..f47f463f3 100644 --- a/apps/tools/serializers/tool.py +++ b/apps/tools/serializers/tool.py @@ -102,7 +102,7 @@ class ToolModelSerializer(serializers.ModelSerializer): class Meta: model = Tool fields = ['id', 'name', 'icon', 'desc', 'code', 'input_field_list', 'init_field_list', 'init_params', - 'scope', 'is_active', 'user_id', 'template_id', 'workspace_id', 'folder_id', 'tool_type', + 'scope', 'is_active', 'user_id', 'template_id', 'workspace_id', 'folder_id', 'create_time', 'update_time'] @@ -464,7 +464,7 @@ class ToolTreeSerializer(serializers.Serializer): folder_id = serializers.CharField(required=True, label=_('folder id')) name = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_('tool name')) user_id = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_('user id')) - tool_type = serializers.CharField(required=True, label=_('tool type')) + scope = serializers.CharField(required=True, label=_('scope')) def page_tool(self, current_page: int, page_size: int): self.is_valid(raise_exception=True) @@ -477,25 +477,27 @@ class ToolTreeSerializer(serializers.Serializer): all_folders = root.get_descendants(include_self=True) if self.data.get('name'): - tools = QuerySet(Tool).filter(Q(workspace_id=self.data.get('workspace_id')) & - Q(folder_id__in=all_folders) & - Q(tool_type=self.data.get('tool_type')) & - Q(user_id=self.data.get('user_id')) & - Q(name__contains=self.data.get('name'))) + tools = QuerySet(Tool).filter( + Q(workspace_id=self.data.get('workspace_id')) & + Q(folder_id__in=all_folders) & + Q(user_id=self.data.get('user_id')) & + Q(name__contains=self.data.get('name')) + ) else: - tools = QuerySet(Tool).filter(Q(workspace_id=self.data.get('workspace_id')) & - Q(folder_id__in=all_folders) & - Q(user_id=self.data.get('user_id')) & - Q(tool_type=self.data.get('tool_type'))) + tools = QuerySet(Tool).filter( + Q(workspace_id=self.data.get('workspace_id')) & + Q(folder_id__in=all_folders) & + Q(user_id=self.data.get('user_id')) + ) return page_search(current_page, page_size, tools, lambda record: ToolModelSerializer(record).data) def get_query_set(self): tool_query_set = QuerySet(Tool) - tool_type_query_set = QuerySet(Tool) + tool_scope_query_set = QuerySet(Tool) folder_query_set = QuerySet(ToolFolder) workspace_id = self.data.get('workspace_id') user_id = self.data.get('user_id') - tool_type = self.data.get('tool_type') + scope = self.data.get('scope') desc = self.data.get('desc') name = self.data.get('name') folder_id = self.data.get('folder_id') @@ -517,13 +519,13 @@ class ToolTreeSerializer(serializers.Serializer): tool_query_set = tool_query_set.filter(desc__contains=desc) tool_query_set = tool_query_set.order_by("-update_time") - if tool_type is not None: - tool_type_query_set = tool_type_query_set.filter(tool_type=tool_type) + if scope is not None: + tool_scope_query_set = tool_scope_query_set.filter(scope=scope) return { 'folder_query_set': folder_query_set, 'tool_query_set': tool_query_set, - 'tool_type_query_set': tool_type_query_set + 'tool_scope_query_set': tool_scope_query_set } def page_tool_with_folders(self, current_page: int, page_size: int): diff --git a/apps/tools/sql/list_tool.sql b/apps/tools/sql/list_tool.sql index 8b7160323..8997cd221 100644 --- a/apps/tools/sql/list_tool.sql +++ b/apps/tools/sql/list_tool.sql @@ -9,7 +9,7 @@ from (select "id"::text, "user_id", "create_time", "update_time" - from tool ${tool_type_query_set} + from tool ${tool_scope_query_set} UNION select "id", "name", diff --git a/apps/tools/views/tool.py b/apps/tools/views/tool.py index d05c1e596..bd15cae5c 100644 --- a/apps/tools/views/tool.py +++ b/apps/tools/views/tool.py @@ -152,7 +152,7 @@ class ToolView(APIView): 'workspace_id': workspace_id, 'folder_id': request.query_params.get('folder_id'), 'name': request.query_params.get('name'), - 'tool_type': request.query_params.get('tool_type'), + 'scope': request.query_params.get('scope'), } ).page_tool_with_folders(current_page, page_size)) diff --git a/ui/src/views/tool/index.vue b/ui/src/views/tool/index.vue index c973428c9..7fc112984 100644 --- a/ui/src/views/tool/index.vue +++ b/ui/src/views/tool/index.vue @@ -248,7 +248,7 @@ function openCreateDialog(data?: any) { function getList() { const params = { folder_id: currentFolder.value?.id || 'root', - tool_type: 'CUSTOM', + scope: 'WORKSPACE', } ToolApi.getToolList('default', paginationConfig, params, loading).then((res) => { paginationConfig.total = res.data?.total