Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 100 additions & 4 deletions apps/trigger/api/trigger.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand All @@ -37,6 +129,7 @@ def get_request():
def get_response():
return TriggerResponse


class TaskSourceTriggerCreateAPI(APIMixin):
@staticmethod
def get_parameters():
Expand Down Expand Up @@ -73,8 +166,6 @@ def get_response():
return TriggerResponse




class TriggerBatchDeleteAPI(APIMixin):
@staticmethod
def get_parameters():
Expand All @@ -87,10 +178,12 @@ def get_parameters():
required=True,
)
]

@staticmethod
def get_request():
return BatchSerializer


class TriggerBatchActiveAPI(APIMixin):
@staticmethod
def get_request():
Expand Down Expand Up @@ -124,8 +217,11 @@ def get_request():
@staticmethod
def get_response():
return TriggerResponse


class RequestSE(serializers.Serializer):
pass
pass


class TriggerEditAPI(APIMixin):
@staticmethod
Expand Down
161 changes: 161 additions & 0 deletions apps/trigger/api/trigger_task.py
Original file line number Diff line number Diff line change
@@ -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
14 changes: 6 additions & 8 deletions apps/trigger/views/trigger.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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"
Expand Down
17 changes: 7 additions & 10 deletions apps/trigger/views/trigger_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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):
Expand All @@ -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,
Expand All @@ -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):
Expand Down