feat: rename tool_type to scope and update related query parameters for tool filtering

This commit is contained in:
CaptainB 2025-06-05 16:27:54 +08:00
parent 1817537269
commit a4b6570110
5 changed files with 23 additions and 21 deletions

View File

@ -202,10 +202,10 @@ class ToolPageAPI(ToolReadAPI):
required=False, required=False,
), ),
OpenApiParameter( OpenApiParameter(
name="tool_type", name="scope",
description="工具类型", description="工具类型",
type=OpenApiTypes.STR, type=OpenApiTypes.STR,
enum=["CUSTOM", "INTERNAL"], enum=["SHARED", "WORKSPACE"],
location='query', location='query',
required=True, required=True,
), ),

View File

@ -102,7 +102,7 @@ class ToolModelSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Tool model = Tool
fields = ['id', 'name', 'icon', 'desc', 'code', 'input_field_list', 'init_field_list', 'init_params', 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'] 'create_time', 'update_time']
@ -464,7 +464,7 @@ class ToolTreeSerializer(serializers.Serializer):
folder_id = serializers.CharField(required=True, label=_('folder id')) folder_id = serializers.CharField(required=True, label=_('folder id'))
name = serializers.CharField(required=False, allow_null=True, allow_blank=True, label=_('tool name')) 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')) 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): def page_tool(self, current_page: int, page_size: int):
self.is_valid(raise_exception=True) self.is_valid(raise_exception=True)
@ -477,25 +477,27 @@ class ToolTreeSerializer(serializers.Serializer):
all_folders = root.get_descendants(include_self=True) all_folders = root.get_descendants(include_self=True)
if self.data.get('name'): if self.data.get('name'):
tools = QuerySet(Tool).filter(Q(workspace_id=self.data.get('workspace_id')) & tools = QuerySet(Tool).filter(
Q(folder_id__in=all_folders) & Q(workspace_id=self.data.get('workspace_id')) &
Q(tool_type=self.data.get('tool_type')) & Q(folder_id__in=all_folders) &
Q(user_id=self.data.get('user_id')) & Q(user_id=self.data.get('user_id')) &
Q(name__contains=self.data.get('name'))) Q(name__contains=self.data.get('name'))
)
else: else:
tools = QuerySet(Tool).filter(Q(workspace_id=self.data.get('workspace_id')) & tools = QuerySet(Tool).filter(
Q(folder_id__in=all_folders) & Q(workspace_id=self.data.get('workspace_id')) &
Q(user_id=self.data.get('user_id')) & Q(folder_id__in=all_folders) &
Q(tool_type=self.data.get('tool_type'))) Q(user_id=self.data.get('user_id'))
)
return page_search(current_page, page_size, tools, lambda record: ToolModelSerializer(record).data) return page_search(current_page, page_size, tools, lambda record: ToolModelSerializer(record).data)
def get_query_set(self): def get_query_set(self):
tool_query_set = QuerySet(Tool) tool_query_set = QuerySet(Tool)
tool_type_query_set = QuerySet(Tool) tool_scope_query_set = QuerySet(Tool)
folder_query_set = QuerySet(ToolFolder) folder_query_set = QuerySet(ToolFolder)
workspace_id = self.data.get('workspace_id') workspace_id = self.data.get('workspace_id')
user_id = self.data.get('user_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') desc = self.data.get('desc')
name = self.data.get('name') name = self.data.get('name')
folder_id = self.data.get('folder_id') 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.filter(desc__contains=desc)
tool_query_set = tool_query_set.order_by("-update_time") tool_query_set = tool_query_set.order_by("-update_time")
if tool_type is not None: if scope is not None:
tool_type_query_set = tool_type_query_set.filter(tool_type=tool_type) tool_scope_query_set = tool_scope_query_set.filter(scope=scope)
return { return {
'folder_query_set': folder_query_set, 'folder_query_set': folder_query_set,
'tool_query_set': tool_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): def page_tool_with_folders(self, current_page: int, page_size: int):

View File

@ -9,7 +9,7 @@ from (select "id"::text,
"user_id", "user_id",
"create_time", "create_time",
"update_time" "update_time"
from tool ${tool_type_query_set} from tool ${tool_scope_query_set}
UNION UNION
select "id", select "id",
"name", "name",

View File

@ -152,7 +152,7 @@ class ToolView(APIView):
'workspace_id': workspace_id, 'workspace_id': workspace_id,
'folder_id': request.query_params.get('folder_id'), 'folder_id': request.query_params.get('folder_id'),
'name': request.query_params.get('name'), '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)) ).page_tool_with_folders(current_page, page_size))

View File

@ -248,7 +248,7 @@ function openCreateDialog(data?: any) {
function getList() { function getList() {
const params = { const params = {
folder_id: currentFolder.value?.id || 'root', folder_id: currentFolder.value?.id || 'root',
tool_type: 'CUSTOM', scope: 'WORKSPACE',
} }
ToolApi.getToolList('default', paginationConfig, params, loading).then((res) => { ToolApi.getToolList('default', paginationConfig, params, loading).then((res) => {
paginationConfig.total = res.data?.total paginationConfig.total = res.data?.total