diff --git a/apps/trigger/api/trigger.py b/apps/trigger/api/trigger.py index 1117ebb7feb..c2d59dc16a0 100644 --- a/apps/trigger/api/trigger.py +++ b/apps/trigger/api/trigger.py @@ -9,13 +9,105 @@ from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import OpenApiParameter from rest_framework import serializers - +from django.utils.translation import gettext_lazy as _ from common.mixins.api_mixin import APIMixin +from common.result import ResultSerializer from knowledge.serializers.common import BatchSerializer from trigger.serializers.task_source_trigger import TaskSourceTriggerEditRequest from trigger.serializers.trigger import TriggerCreateRequest, TriggerResponse, BatchActiveSerializer +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="触发器描述") + trigger_type = serializers.CharField(required=True, help_text="触发器类型", label="触发器类型") + type = serializers.CharField(required=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="修改时间") + + +class TriggerTaskRecordResponse(ResultSerializer): + def get_data(self): + return TriggerQueryResponseSerializer(many=True) + + +class TriggerQueryAPI(APIMixin): + @staticmethod + def get_parameters(): + return [ + OpenApiParameter( + name="workspace_id", + description="工作空间id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="name", + description="触发器名称", + type=OpenApiTypes.STR, + required=True, + ), + OpenApiParameter( + name="type", + description="触发器类型", + type=OpenApiTypes.STR, + required=True, + ), + OpenApiParameter( + name="task", + description="任务名称", + type=OpenApiTypes.STR, + required=True, + ), + OpenApiParameter( + name="is_active", + description="启用状态", + type=OpenApiTypes.STR, + required=True, + ), + OpenApiParameter( + name="create_user", + description="创建者", + type=OpenApiTypes.STR, + required=True, + ), + ] + + @staticmethod + def get_response(): + return TriggerTaskRecordResponse + + +class TriggerQueryPageAPI(APIMixin): + @staticmethod + def get_parameters(): + return [TriggerQueryAPI.get_parameters(), + OpenApiParameter( + name="current_page", + description=_("Current page"), + type=OpenApiTypes.INT, + location='path', + required=True, + ), + OpenApiParameter( + name="page_size", + description=_("Page size"), + type=OpenApiTypes.INT, + location='path', + required=True, + )] + + @staticmethod + def get_response(): + return TriggerQueryAPI.get_response() + + class TriggerCreateAPI(APIMixin): @staticmethod def get_parameters(): @@ -37,6 +129,7 @@ def get_request(): def get_response(): return TriggerResponse + class TaskSourceTriggerCreateAPI(APIMixin): @staticmethod def get_parameters(): @@ -73,8 +166,6 @@ def get_response(): return TriggerResponse - - class TriggerBatchDeleteAPI(APIMixin): @staticmethod def get_parameters(): @@ -87,10 +178,12 @@ def get_parameters(): required=True, ) ] + @staticmethod def get_request(): return BatchSerializer + class TriggerBatchActiveAPI(APIMixin): @staticmethod def get_request(): @@ -124,8 +217,11 @@ def get_request(): @staticmethod def get_response(): return TriggerResponse + + class RequestSE(serializers.Serializer): - pass + pass + class TriggerEditAPI(APIMixin): @staticmethod diff --git a/apps/trigger/api/trigger_task.py b/apps/trigger/api/trigger_task.py new file mode 100644 index 00000000000..07354454a3c --- /dev/null +++ b/apps/trigger/api/trigger_task.py @@ -0,0 +1,161 @@ +# coding=utf-8 +""" + @project: MaxKB + @Author:虎虎 + @file: trigger_task.py + @date:2026/1/28 16:37 + @desc: +""" +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import OpenApiParameter +from django.utils.translation import gettext_lazy as _ +from rest_framework import serializers + +from common.mixins.api_mixin import APIMixin +from common.result import ResultSerializer +from trigger.serializers.trigger_task import ChatRecordSerializerModel, TriggerTaskResponse + + +class TriggerTaskRecordResultSerializer(serializers.Serializer): + id = serializers.UUIDField(required=True, help_text="任务记录id", label='任务记录id') + state = serializers.CharField(required=True, help_text="任务记录状态", label='任务记录状态') + source_type = serializers.CharField(required=True, help_text="资源类型", label='资源类型') + source_name = serializers.CharField(required=True, help_text="资源名称", label="资源名称") + source_id = serializers.CharField(required=True, help_text="资源id", label="资源id") + task_record_id = serializers.CharField(required=True, help_text="资源任务记录id", label="资源任务记录id") + trigger_id = serializers.CharField(required=True, help_text="触发器id", label="触发器id") + type = 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="修改时间") + + +class TriggerTaskRecordResponse(ResultSerializer): + def get_data(self): + return TriggerTaskRecordResultSerializer(many=True) + + +class TriggerTaskRecordExecutionDetailsResponse(ResultSerializer): + def get_data(self): + return ChatRecordSerializerModel() + + +class TriggerTaskResultSerializer(ResultSerializer): + def get_data(self): + return TriggerTaskResponse(many=True) + + +class TriggerTaskAPI(APIMixin): + @staticmethod + def get_parameters(): + return [ + OpenApiParameter( + name="workspace_id", + description="工作空间id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="trigger_id", + description="触发器id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + ] + + @staticmethod + def get_response(): + return TriggerTaskResultSerializer + + +class TriggerTaskRecordPageAPI(APIMixin): + @staticmethod + def get_parameters(): + return [ + OpenApiParameter( + name="workspace_id", + description="工作空间id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="trigger_id", + description="触发器id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="current_page", + description=_("Current page"), + type=OpenApiTypes.INT, + location='path', + required=True, + ), + OpenApiParameter( + name="page_size", + description=_("Page size"), + type=OpenApiTypes.INT, + location='path', + required=True, + ), + OpenApiParameter( + name="name", + description="任务名称", + type=OpenApiTypes.STR, + location='query', + required=True, + ), + OpenApiParameter( + name="state", + description="状态", + type=OpenApiTypes.STR, + location='query', + required=True, + ), + OpenApiParameter( + name="order", + description="排序字段", + type=OpenApiTypes.STR, + location='query', + required=True, + ), + ] + + @staticmethod + def get_response(): + return TriggerTaskRecordResponse + + +class TriggerTaskRecordExecutionDetailsAPI(APIMixin): + @staticmethod + def get_parameters(): + return [ + OpenApiParameter( + name="workspace_id", + description="工作空间id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="trigger_id", + description="触发器id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + OpenApiParameter( + name="trigger_task_id", + description="触发器任务id", + type=OpenApiTypes.STR, + location='path', + required=True, + ), + ] + + @staticmethod + def get_response(): + return TriggerTaskRecordExecutionDetailsResponse diff --git a/apps/trigger/views/trigger.py b/apps/trigger/views/trigger.py index 7329e0b8032..c55fec80633 100644 --- a/apps/trigger/views/trigger.py +++ b/apps/trigger/views/trigger.py @@ -26,7 +26,8 @@ from trigger.serializers.trigger import TriggerQuerySerializer, TriggerOperateSerializer from trigger.api.trigger import TriggerCreateAPI, TriggerOperateAPI, TriggerEditAPI, TriggerBatchDeleteAPI, \ - TriggerBatchActiveAPI, TaskSourceTriggerOperateAPI, TaskSourceTriggerAPI, TaskSourceTriggerCreateAPI + TriggerBatchActiveAPI, TaskSourceTriggerOperateAPI, TaskSourceTriggerAPI, TaskSourceTriggerCreateAPI, \ + TriggerQueryAPI, TriggerQueryPageAPI from trigger.serializers.trigger import TriggerSerializer @@ -78,9 +79,8 @@ def post(self, request: Request, workspace_id: str): description=_('Get the trigger list'), summary=_('Get the trigger list'), operation_id=_('Get the trigger list'), # type: ignore - parameters=ApplicationCreateAPI.get_parameters(), - request=ApplicationCreateAPI.get_request(), - responses=ApplicationCreateAPI.get_response(), + parameters=TriggerQueryAPI.get_parameters(), + responses=TriggerQueryAPI.get_response(), tags=[_('Trigger')] # type: ignore ) @has_permissions( @@ -227,9 +227,8 @@ class Page(APIView): description=_('Get the trigger list by page'), summary=_('Get the trigger list by page'), operation_id=_('Get the trigger list by page'), # type: ignore - parameters=ApplicationCreateAPI.get_parameters(), - request=ApplicationCreateAPI.get_request(), - responses=ApplicationCreateAPI.get_response(), + parameters=TriggerQueryPageAPI.get_parameters(), + responses=TriggerQueryPageAPI.get_response(), tags=[_('Trigger')] # type: ignore ) @has_permissions( @@ -344,7 +343,6 @@ def get(self, request: Request, workspace_id: str, source_type: str, source_id: responses=result.DefaultResultSerializer, tags=[_('Trigger')] # type: ignore ) - @has_permissions( lambda r, kwargs: Permission(group=Group(kwargs.get("source_type")), operate=Operate.TRIGGER_EDIT, resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE" diff --git a/apps/trigger/views/trigger_task.py b/apps/trigger/views/trigger_task.py index cd1222e9cb3..b78a53583f2 100644 --- a/apps/trigger/views/trigger_task.py +++ b/apps/trigger/views/trigger_task.py @@ -11,8 +11,8 @@ from rest_framework.request import Request from rest_framework.views import APIView -from application.api.application_api import ApplicationCreateAPI from common import result +from trigger.api.trigger_task import TriggerTaskRecordExecutionDetailsAPI, TriggerTaskRecordPageAPI, TriggerTaskAPI from trigger.serializers.trigger_task import TriggerTaskQuerySerializer, TriggerTaskRecordQuerySerializer, \ TriggerTaskRecordOperateSerializer @@ -23,9 +23,8 @@ class TriggerTaskView(APIView): description=_('Get the task list of triggers'), summary=_('Get the task list of triggers'), operation_id=_('Get the task list of triggers'), # type: ignore - parameters=ApplicationCreateAPI.get_parameters(), - request=ApplicationCreateAPI.get_request(), - responses=ApplicationCreateAPI.get_response(), + parameters=TriggerTaskAPI.get_parameters(), + responses=TriggerTaskAPI.get_response(), tags=[_('Trigger')] # type: ignore ) def get(self, request: Request, workspace_id: str, trigger_id: str): @@ -43,9 +42,8 @@ class TriggerTaskRecordExecutionDetailsView(APIView): description=_('Retrieve detailed records of tasks executed by the trigger.'), summary=_('Retrieve detailed records of tasks executed by the trigger.'), operation_id=_('Retrieve detailed records of tasks executed by the trigger.'), # type: ignore - parameters=ApplicationCreateAPI.get_parameters(), - request=ApplicationCreateAPI.get_request(), - responses=ApplicationCreateAPI.get_response(), + parameters=TriggerTaskRecordExecutionDetailsAPI.get_parameters(), + responses=TriggerTaskRecordExecutionDetailsAPI.get_response(), tags=[_('Trigger')] # type: ignore ) def get(self, request: Request, workspace_id: str, trigger_id: str, trigger_task_id: str, @@ -63,9 +61,8 @@ class TriggerTaskRecordPageView(APIView): description=_('Get a paginated list of execution records for trigger tasks.'), summary=_('Get a paginated list of execution records for trigger tasks.'), operation_id=_('Get a paginated list of execution records for trigger tasks.'), # type: ignore - parameters=ApplicationCreateAPI.get_parameters(), - request=ApplicationCreateAPI.get_request(), - responses=ApplicationCreateAPI.get_response(), + parameters=TriggerTaskRecordPageAPI.get_parameters(), + responses=TriggerTaskRecordPageAPI.get_response(), tags=[_('Trigger')] # type: ignore ) def get(self, request: Request, workspace_id: str, trigger_id: str, current_page: int, page_size: int):