diff --git a/apps/chat/views/v2/chat.py b/apps/chat/views/v2/chat.py index 151bd284a10..5037ec488d5 100644 --- a/apps/chat/views/v2/chat.py +++ b/apps/chat/views/v2/chat.py @@ -303,6 +303,14 @@ class CaptchaView(APIView): description=_("Get Chat captcha"), operation_id=_("Get Chat captcha"), # type: ignore tags=[_("Chat")], # type: ignore + parameters=[ + OpenApiParameter( + name="accessToken", + type=OpenApiTypes.STR, + location=OpenApiParameter.QUERY, + required=False, + ) + ], responses=CaptchaAPI.get_response(), ) def get(self, request: Request): diff --git a/apps/system_manage/api/chat_user.py b/apps/system_manage/api/chat_user.py index 3c259464c08..fab9000ace3 100644 --- a/apps/system_manage/api/chat_user.py +++ b/apps/system_manage/api/chat_user.py @@ -104,12 +104,6 @@ class ChatUserListResponse(serializers.Serializer): email = serializers.EmailField(required=False, allow_blank=True, label=_("Email")) phone = serializers.CharField(required=False, allow_blank=True, label=_("Phone")) is_active = serializers.BooleanField(required=False, default=True, label=_("Is Active")) - user_group_ids = serializers.ListField( - child=serializers.CharField(required=True), required=True, label=_("User Group IDs") - ) - user_group_names = serializers.ListField( - child=serializers.CharField(required=True), required=True, label=_("User Group Names") - ) class ChatUsersListResponse(ResultSerializer): diff --git a/apps/system_manage/api/resource_mapping.py b/apps/system_manage/api/resource_mapping.py index 8539e099a1a..8acb9dfce15 100644 --- a/apps/system_manage/api/resource_mapping.py +++ b/apps/system_manage/api/resource_mapping.py @@ -1,32 +1,46 @@ # coding=utf-8 """ - @project: MaxKB - @Author:虎虎 - @file: resource_mapping.py - @date:2025/12/26 14:07 - @desc: +@project: MaxKB +@Author:虎虎 +@file: resource_mapping.py +@date:2025/12/26 14:07 +@desc: """ + from django.utils.translation import gettext_lazy as _ from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiParameter from rest_framework import serializers from common.mixins.api_mixin import APIMixin +from common.result import ResultPageSerializer -class ResourceMappingResponse(serializers.Serializer): +class ResourceMappingItemResponse(serializers.Serializer): id = serializers.UUIDField(required=True, label="主键id") - target_id = serializers.CharField(required=True, label="被关联资源名称") + target_id = serializers.CharField(required=True, label="被关联资源Id") target_type = serializers.CharField(required=True, label="被关联资源类型") source_id = serializers.CharField(required=True, label="关联资源Id") source_type = serializers.CharField(required=True, label="关联资源类型") name = serializers.CharField(required=True, label="名称") - desc = serializers.CharField(required=False, label="描述") + desc = serializers.CharField(required=False, allow_blank=True, allow_null=True, label="描述") user_id = serializers.UUIDField(required=True, label="主键id") + workspace_id = serializers.CharField(required=True, label="工作空间id") + icon = serializers.CharField(required=False, allow_blank=True, allow_null=True, label="资源图标") + type = serializers.CharField(required=False, allow_blank=True, allow_null=True, label="资源类型") + folder_id = serializers.CharField(required=False, allow_blank=True, allow_null=True, label="文件夹id") + username = serializers.CharField(required=False, allow_blank=True, allow_null=True, label="创建人") + workspace_name = serializers.CharField(required=False, allow_blank=True, allow_null=True, label="工作空间名称") + create_time = serializers.DateTimeField(required=True, label="创建时间") + update_time = serializers.DateTimeField(required=True, label="更新时间") -class ResourceMappingAPI(APIMixin): +class ResourceMappingResponse(ResultPageSerializer): + def get_data(self): + return ResourceMappingItemResponse(many=True) + +class ResourceMappingAPI(APIMixin): @staticmethod def get_parameters(): return [ @@ -34,47 +48,57 @@ def get_parameters(): name="workspace_id", description="工作空间id", type=OpenApiTypes.STR, - location='path', + location="path", required=True, ), OpenApiParameter( - name="source", + name="resource", description="资源类型", type=OpenApiTypes.STR, - location='path', + location="path", required=True, ), OpenApiParameter( - name="source_id", + name="resource_id", description="资源id", type=OpenApiTypes.STR, - location='path', + location="path", required=True, ), OpenApiParameter( name="current_page", description=_("Current page"), type=OpenApiTypes.INT, - location='path', + location="path", required=True, ), OpenApiParameter( name="page_size", description=_("Page size"), type=OpenApiTypes.INT, - location='path', + location="path", required=True, ), OpenApiParameter( - name="resource_name", - description="名称", + name="resource_name", description="名称", type=OpenApiTypes.STR, location="query", required=False + ), + OpenApiParameter( + name="user_name", + description="创建人", type=OpenApiTypes.STR, - location='query', - required=False + location="query", + required=False, + ), + OpenApiParameter( + name="source_type[]", + description="关联资源类型", + type=OpenApiTypes.STR, + location="query", + many=True, + required=False, ), - ] @staticmethod def get_response(): - return ResourceMappingResponse(many=True) + return ResourceMappingResponse diff --git a/apps/system_manage/api/user_resource_permission.py b/apps/system_manage/api/user_resource_permission.py index 5d140014f66..7f8e4b8c542 100644 --- a/apps/system_manage/api/user_resource_permission.py +++ b/apps/system_manage/api/user_resource_permission.py @@ -1,11 +1,12 @@ # coding=utf-8 """ - @project: MaxKB - @Author:虎虎 - @file: workspace_user_resource_permission.py - @date:2025/4/28 18:13 - @desc: +@project: MaxKB +@Author:虎虎 +@file: workspace_user_resource_permission.py +@date:2025/4/28 18:13 +@desc: """ + from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiParameter from rest_framework import serializers @@ -13,29 +14,42 @@ from common.mixins.api_mixin import APIMixin from common.result import ResultSerializer, ResultPageSerializer, PageDataResponse -from system_manage.serializers.user_resource_permission import ResourceUserPermissionEditRequest, UpdateTeamMemberItemPermissionSerializer +from system_manage.serializers.user_resource_permission import ( + ResourceUserPermissionEditRequest, + UpdateTeamMemberItemPermissionSerializer, +) class UserResourcePermissionResponse0(serializers.Serializer): id = serializers.UUIDField(required=True, label="主键id") name = serializers.CharField(required=True, label="资源名称") auth_target_type = serializers.CharField(required=True, label="授权资源") + resource_type = serializers.CharField(required=True, label="资源类型") user_id = serializers.UUIDField(required=True, label="用户id") + workspace_id = serializers.CharField(required=True, label="工作空间id") icon = serializers.CharField(required=True, label="资源图标") - auth_type = serializers.CharField(required=True, label="授权类型") - permission = serializers.ChoiceField(required=False, allow_null=True, allow_blank=True, - choices=['NOT_AUTH', 'MANAGE', 'VIEW', 'ROLE'], - label=_('permission')) + folder_id = serializers.CharField(required=False, allow_null=True, allow_blank=True, label="文件夹id") + create_time = serializers.DateTimeField(required=True, label="创建时间") + auth_type = serializers.CharField(required=False, label="授权类型") + permission = serializers.ChoiceField( + required=False, + allow_null=True, + allow_blank=True, + choices=["NOT_AUTH", "MANAGE", "VIEW", "ROLE"], + label=_("permission"), + ) + class NewAPIUserResourcePermissionResponse(ResultSerializer): def get_data(self): return UserResourcePermissionResponse0(many=True) -class NewAPIUserResourcePermissionPageResponse(ResultPageSerializer): +class NewAPIUserResourcePermissionPageResponse(ResultPageSerializer): def get_data(self): return UserResourcePermissionResponse0(many=True) + class UserResourcePermissionAPI(APIMixin): @staticmethod def get_parameters(): @@ -44,30 +58,24 @@ def get_parameters(): name="workspace_id", description="工作空间id", type=OpenApiTypes.STR, - location='path', + location="path", required=True, ), OpenApiParameter( name="user_id", description="用户id", type=OpenApiTypes.STR, - location='path', + location="path", required=True, ), - OpenApiParameter( - name="name", - description="名称", - type=OpenApiTypes.STR, - location='query', - required=False - ), + OpenApiParameter(name="name", description="名称", type=OpenApiTypes.STR, location="query", required=False), OpenApiParameter( name="permission", description="权限", type=OpenApiTypes.STR, - location='query', + location="query", many=True, - required=False + required=False, ), ] @@ -84,22 +92,18 @@ def get_parameters(): name="workspace_id", description="工作空间id", type=OpenApiTypes.STR, - location='path', + location="path", required=True, ), OpenApiParameter( name="user_id", description="用户id", type=OpenApiTypes.STR, - location='path', + location="path", required=True, ), OpenApiParameter( - name="resource", - description="资源类型", - type=OpenApiTypes.STR, - location='path', - required=True + name="resource", description="资源类型", type=OpenApiTypes.STR, location="path", required=True ), ] @@ -113,10 +117,10 @@ def get_response(): class ResourceUserPermissionResponse(serializers.Serializer): - id = serializers.CharField(required=True, label=_('user id')) - nick_name = serializers.CharField(required=True, allow_null=True, allow_blank=True, label=_('nick_name')) - username = serializers.CharField(required=True, allow_null=True, allow_blank=True, label=_('username')) - permission = serializers.CharField(required=True, label=_('permission')) + id = serializers.CharField(required=True, label=_("user id")) + nick_name = serializers.CharField(required=True, allow_null=True, allow_blank=True, label=_("nick_name")) + username = serializers.CharField(required=True, allow_null=True, allow_blank=True, label=_("username")) + permission = serializers.CharField(required=True, label=_("permission")) class APIResourceUserPermissionResponse(ResultSerializer): @@ -129,47 +133,27 @@ class ResourceUserPermissionAPI(APIMixin): def get_parameters(): return [ OpenApiParameter( - name="workspace_id", - description="工作空间id", - type=OpenApiTypes.STR, - location='path', - required=True + name="workspace_id", description="工作空间id", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="target", - description="资源id", - type=OpenApiTypes.STR, - location='path', - required=True + name="target", description="资源id", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="resource", - description="资源类型", - type=OpenApiTypes.STR, - location='path', - required=True + name="resource", description="资源类型", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="username", - description="用户名", - type=OpenApiTypes.STR, - location='query', - required=False + name="username", description="用户名", type=OpenApiTypes.STR, location="query", required=False ), OpenApiParameter( - name="nick_name", - description="姓名", - type=OpenApiTypes.STR, - location='query', - required=False + name="nick_name", description="姓名", type=OpenApiTypes.STR, location="query", required=False ), OpenApiParameter( name="permission", description="权限", type=OpenApiTypes.STR, - location='query', + location="query", many=True, - required=False + required=False, ), ] @@ -177,59 +161,44 @@ def get_parameters(): def get_response(): return APIResourceUserPermissionResponse + class UserResourcePermissionPageAPI(APIMixin): @staticmethod def get_parameters(): return [ OpenApiParameter( - name="workspace_id", - description="工作空间id", - type=OpenApiTypes.STR, - location='path', - required=True + name="workspace_id", description="工作空间id", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="user_id", - description="用户id", - type=OpenApiTypes.STR, - location='path', - required=True + name="user_id", description="用户id", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="resource", - description="资源类型", - type=OpenApiTypes.STR, - location='path', - required=True + name="resource", description="资源类型", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( name="current_page", description=_("Current page"), type=OpenApiTypes.INT, - location='path', + location="path", required=True, ), OpenApiParameter( name="page_size", description=_("Page size"), type=OpenApiTypes.INT, - location='path', + location="path", required=True, ), OpenApiParameter( - name="name", - description="资源名称", - type=OpenApiTypes.STR, - location='query', - required=False + name="name", description="资源名称", type=OpenApiTypes.STR, location="query", required=False ), OpenApiParameter( name="permission[]", description="权限", type=OpenApiTypes.STR, - location='query', + location="query", many=True, - required=False + required=False, ), ] @@ -248,61 +217,41 @@ class ResourceUserPermissionPageAPI(APIMixin): def get_parameters(): return [ OpenApiParameter( - name="workspace_id", - description="工作空间id", - type=OpenApiTypes.STR, - location='path', - required=True + name="workspace_id", description="工作空间id", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="target", - description="资源id", - type=OpenApiTypes.STR, - location='path', - required=True + name="target", description="资源id", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="resource", - description="资源类型", - type=OpenApiTypes.STR, - location='path', - required=True + name="resource", description="资源类型", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( name="current_page", description=_("Current page"), type=OpenApiTypes.INT, - location='path', + location="path", required=True, ), OpenApiParameter( name="page_size", description=_("Page size"), type=OpenApiTypes.INT, - location='path', + location="path", required=True, ), OpenApiParameter( - name="username", - description="用户名", - type=OpenApiTypes.STR, - location='query', - required=False + name="username", description="用户名", type=OpenApiTypes.STR, location="query", required=False ), OpenApiParameter( - name="nick_name", - description="姓名", - type=OpenApiTypes.STR, - location='query', - required=False + name="nick_name", description="姓名", type=OpenApiTypes.STR, location="query", required=False ), OpenApiParameter( name="permission[]", description="权限", type=OpenApiTypes.STR, - location='query', + location="query", many=True, - required=False + required=False, ), ] @@ -311,37 +260,25 @@ def get_response(): return APIResourceUserPermissionPageResponse - class ResourceUserPermissionEditAPI(APIMixin): @staticmethod def get_parameters(): return [ OpenApiParameter( - name="workspace_id", - description="工作空间id", - type=OpenApiTypes.STR, - location='path', - required=True + name="workspace_id", description="工作空间id", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="target", - description="资源id", - type=OpenApiTypes.STR, - location='path', - required=True + name="target", description="资源id", type=OpenApiTypes.STR, location="path", required=True ), OpenApiParameter( - name="resource", - description="资源类型", - type=OpenApiTypes.STR, - location='path', - required=True + name="resource", description="资源类型", type=OpenApiTypes.STR, location="path", required=True ), ] + @staticmethod def get_request(): - return ResourceUserPermissionEditRequest(required=True, many=True, label=_('users_permission')) + return ResourceUserPermissionEditRequest(required=True, many=True, label=_("users_permission")) @staticmethod def get_response(): - return APIResourceUserPermissionResponse() \ No newline at end of file + return APIResourceUserPermissionResponse() diff --git a/apps/tools/api/tool.py b/apps/tools/api/tool.py index 600d74d6a57..4ba2e44a05a 100644 --- a/apps/tools/api/tool.py +++ b/apps/tools/api/tool.py @@ -5,6 +5,7 @@ from common.mixins.api_mixin import APIMixin from common.result import ResultSerializer, DefaultResultSerializer from knowledge.serializers.common import BatchSerializer, BatchMoveSerializer +from rest_framework import serializers from tools.serializers.tool import ( ToolModelSerializer, ToolCreateRequest, @@ -15,9 +16,13 @@ ) +class ToolModelResponseSerializer(ToolModelSerializer): + init_params = serializers.DictField(required=False, allow_null=True, label="初始化参数") + + class ToolCreateResponse(ResultSerializer): def get_data(self): - return ToolModelSerializer() + return ToolModelResponseSerializer() class ToolCreateAPI(APIMixin): diff --git a/apps/trigger/api/trigger.py b/apps/trigger/api/trigger.py index 6acdb4ea3f2..d7cf7564733 100644 --- a/apps/trigger/api/trigger.py +++ b/apps/trigger/api/trigger.py @@ -18,18 +18,34 @@ from trigger.serializers.trigger import TriggerCreateRequest, TriggerResponse, BatchActiveSerializer +class TriggerTaskResponseSerializer(serializers.Serializer): + type = serializers.CharField(required=True, help_text="任务类型", label="任务类型") + name = serializers.CharField(required=True, help_text="任务名称", label="任务名称") + icon = serializers.CharField( + required=False, allow_null=True, allow_blank=True, help_text="任务图标", label="任务图标" + ) + + class TriggerQueryResponseSerializer(serializers.Serializer): id = serializers.UUIDField(required=True, help_text="触发器id", label="触发器id") workspace_id = serializers.CharField(required=True, help_text="触发器工作空间", label="触发器工作空间") name = serializers.CharField(required=True, help_text="触发器名称", label="触发器名称") - desc = serializers.CharField(required=True, help_text="触发器描述", label="触发器描述") + desc = serializers.CharField( + required=False, allow_null=True, allow_blank=True, help_text="触发器描述", label="触发器描述" + ) trigger_type = serializers.CharField(required=True, help_text="触发器类型", label="触发器类型") - type = serializers.CharField(required=True, help_text="资源类型", label="资源类型") + trigger_setting = serializers.DictField(required=True, help_text="触发器配置", label="触发器配置") + meta = serializers.DictField(required=False, allow_null=True, help_text="触发器元数据", label="触发器元数据") is_active = serializers.BooleanField(required=True, help_text="是否激活", label="是否激活") - source_name = serializers.CharField(required=True, help_text="资源类型", label="资源类型") - source_icon = serializers.CharField(required=True, help_text="资源图标", label="资源图标") - create_time = serializers.CharField(required=True, help_text="创建时间", label="创建时间") - update_time = serializers.CharField(required=True, help_text="修改时间", label="修改时间") + create_time = serializers.DateTimeField(required=True, help_text="创建时间", label="创建时间") + update_time = serializers.DateTimeField(required=True, help_text="修改时间", label="修改时间") + user_id = serializers.UUIDField(required=True, help_text="创建人id", label="创建人id") + create_user = serializers.CharField(required=False, allow_null=True, help_text="创建人", label="创建人") + next_run_time = serializers.DateTimeField( + required=False, allow_null=True, help_text="下次执行时间", label="下次执行时间" + ) + trigger_task = TriggerTaskResponseSerializer(many=True, required=True, help_text="任务列表", label="任务列表") + trigger_task_str = serializers.CharField(required=False, allow_null=True, help_text="任务名称", label="任务名称") class TriggerListResponse(ResultSerializer):