Skip to content

Commit 0a85ff8

Browse files
authored
fix: Trigger api (#4729)
1 parent cfa8ae4 commit 0a85ff8

File tree

4 files changed

+274
-22
lines changed

4 files changed

+274
-22
lines changed

apps/trigger/api/trigger.py

Lines changed: 100 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,105 @@
99
from drf_spectacular.types import OpenApiTypes
1010
from drf_spectacular.utils import OpenApiParameter
1111
from rest_framework import serializers
12-
12+
from django.utils.translation import gettext_lazy as _
1313
from common.mixins.api_mixin import APIMixin
14+
from common.result import ResultSerializer
1415
from knowledge.serializers.common import BatchSerializer
1516
from trigger.serializers.task_source_trigger import TaskSourceTriggerEditRequest
1617
from trigger.serializers.trigger import TriggerCreateRequest, TriggerResponse, BatchActiveSerializer
1718

1819

20+
class TriggerQueryResponseSerializer(serializers.Serializer):
21+
id = serializers.UUIDField(required=True, help_text="触发器id", label='触发器id')
22+
workspace_id = serializers.CharField(required=True, help_text="触发器工作空间", label='触发器工作空间')
23+
name = serializers.CharField(required=True, help_text="触发器名称", label='触发器名称')
24+
desc = serializers.CharField(required=True, help_text="触发器描述", label="触发器描述")
25+
trigger_type = serializers.CharField(required=True, help_text="触发器类型", label="触发器类型")
26+
type = serializers.CharField(required=True, help_text="资源类型", label="资源类型")
27+
is_active = serializers.BooleanField(required=True, help_text="是否激活", label="是否激活")
28+
source_name = serializers.CharField(required=True, help_text="资源类型", label="资源类型")
29+
source_icon = serializers.CharField(required=True, help_text="资源图标", label="资源图标")
30+
create_time = serializers.CharField(required=True, help_text="创建时间", label="创建时间")
31+
update_time = serializers.CharField(required=True, help_text="修改时间", label="修改时间")
32+
33+
34+
class TriggerTaskRecordResponse(ResultSerializer):
35+
def get_data(self):
36+
return TriggerQueryResponseSerializer(many=True)
37+
38+
39+
class TriggerQueryAPI(APIMixin):
40+
@staticmethod
41+
def get_parameters():
42+
return [
43+
OpenApiParameter(
44+
name="workspace_id",
45+
description="工作空间id",
46+
type=OpenApiTypes.STR,
47+
location='path',
48+
required=True,
49+
),
50+
OpenApiParameter(
51+
name="name",
52+
description="触发器名称",
53+
type=OpenApiTypes.STR,
54+
required=True,
55+
),
56+
OpenApiParameter(
57+
name="type",
58+
description="触发器类型",
59+
type=OpenApiTypes.STR,
60+
required=True,
61+
),
62+
OpenApiParameter(
63+
name="task",
64+
description="任务名称",
65+
type=OpenApiTypes.STR,
66+
required=True,
67+
),
68+
OpenApiParameter(
69+
name="is_active",
70+
description="启用状态",
71+
type=OpenApiTypes.STR,
72+
required=True,
73+
),
74+
OpenApiParameter(
75+
name="create_user",
76+
description="创建者",
77+
type=OpenApiTypes.STR,
78+
required=True,
79+
),
80+
]
81+
82+
@staticmethod
83+
def get_response():
84+
return TriggerTaskRecordResponse
85+
86+
87+
class TriggerQueryPageAPI(APIMixin):
88+
@staticmethod
89+
def get_parameters():
90+
return [TriggerQueryAPI.get_parameters(),
91+
OpenApiParameter(
92+
name="current_page",
93+
description=_("Current page"),
94+
type=OpenApiTypes.INT,
95+
location='path',
96+
required=True,
97+
),
98+
OpenApiParameter(
99+
name="page_size",
100+
description=_("Page size"),
101+
type=OpenApiTypes.INT,
102+
location='path',
103+
required=True,
104+
)]
105+
106+
@staticmethod
107+
def get_response():
108+
return TriggerQueryAPI.get_response()
109+
110+
19111
class TriggerCreateAPI(APIMixin):
20112
@staticmethod
21113
def get_parameters():
@@ -37,6 +129,7 @@ def get_request():
37129
def get_response():
38130
return TriggerResponse
39131

132+
40133
class TaskSourceTriggerCreateAPI(APIMixin):
41134
@staticmethod
42135
def get_parameters():
@@ -73,8 +166,6 @@ def get_response():
73166
return TriggerResponse
74167

75168

76-
77-
78169
class TriggerBatchDeleteAPI(APIMixin):
79170
@staticmethod
80171
def get_parameters():
@@ -87,10 +178,12 @@ def get_parameters():
87178
required=True,
88179
)
89180
]
181+
90182
@staticmethod
91183
def get_request():
92184
return BatchSerializer
93185

186+
94187
class TriggerBatchActiveAPI(APIMixin):
95188
@staticmethod
96189
def get_request():
@@ -124,8 +217,11 @@ def get_request():
124217
@staticmethod
125218
def get_response():
126219
return TriggerResponse
220+
221+
127222
class RequestSE(serializers.Serializer):
128-
pass
223+
pass
224+
129225

130226
class TriggerEditAPI(APIMixin):
131227
@staticmethod

apps/trigger/api/trigger_task.py

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
# coding=utf-8
2+
"""
3+
@project: MaxKB
4+
@Author:虎虎
5+
@file: trigger_task.py
6+
@date:2026/1/28 16:37
7+
@desc:
8+
"""
9+
from drf_spectacular.types import OpenApiTypes
10+
from drf_spectacular.utils import OpenApiParameter
11+
from django.utils.translation import gettext_lazy as _
12+
from rest_framework import serializers
13+
14+
from common.mixins.api_mixin import APIMixin
15+
from common.result import ResultSerializer
16+
from trigger.serializers.trigger_task import ChatRecordSerializerModel, TriggerTaskResponse
17+
18+
19+
class TriggerTaskRecordResultSerializer(serializers.Serializer):
20+
id = serializers.UUIDField(required=True, help_text="任务记录id", label='任务记录id')
21+
state = serializers.CharField(required=True, help_text="任务记录状态", label='任务记录状态')
22+
source_type = serializers.CharField(required=True, help_text="资源类型", label='资源类型')
23+
source_name = serializers.CharField(required=True, help_text="资源名称", label="资源名称")
24+
source_id = serializers.CharField(required=True, help_text="资源id", label="资源id")
25+
task_record_id = serializers.CharField(required=True, help_text="资源任务记录id", label="资源任务记录id")
26+
trigger_id = serializers.CharField(required=True, help_text="触发器id", label="触发器id")
27+
type = serializers.CharField(required=True, help_text="资源类型", label="资源类型")
28+
create_time = serializers.CharField(required=True, help_text="创建时间", label="创建时间")
29+
update_time = serializers.CharField(required=True, help_text="修改时间", label="修改时间")
30+
31+
32+
class TriggerTaskRecordResponse(ResultSerializer):
33+
def get_data(self):
34+
return TriggerTaskRecordResultSerializer(many=True)
35+
36+
37+
class TriggerTaskRecordExecutionDetailsResponse(ResultSerializer):
38+
def get_data(self):
39+
return ChatRecordSerializerModel()
40+
41+
42+
class TriggerTaskResultSerializer(ResultSerializer):
43+
def get_data(self):
44+
return TriggerTaskResponse(many=True)
45+
46+
47+
class TriggerTaskAPI(APIMixin):
48+
@staticmethod
49+
def get_parameters():
50+
return [
51+
OpenApiParameter(
52+
name="workspace_id",
53+
description="工作空间id",
54+
type=OpenApiTypes.STR,
55+
location='path',
56+
required=True,
57+
),
58+
OpenApiParameter(
59+
name="trigger_id",
60+
description="触发器id",
61+
type=OpenApiTypes.STR,
62+
location='path',
63+
required=True,
64+
),
65+
]
66+
67+
@staticmethod
68+
def get_response():
69+
return TriggerTaskResultSerializer
70+
71+
72+
class TriggerTaskRecordPageAPI(APIMixin):
73+
@staticmethod
74+
def get_parameters():
75+
return [
76+
OpenApiParameter(
77+
name="workspace_id",
78+
description="工作空间id",
79+
type=OpenApiTypes.STR,
80+
location='path',
81+
required=True,
82+
),
83+
OpenApiParameter(
84+
name="trigger_id",
85+
description="触发器id",
86+
type=OpenApiTypes.STR,
87+
location='path',
88+
required=True,
89+
),
90+
OpenApiParameter(
91+
name="current_page",
92+
description=_("Current page"),
93+
type=OpenApiTypes.INT,
94+
location='path',
95+
required=True,
96+
),
97+
OpenApiParameter(
98+
name="page_size",
99+
description=_("Page size"),
100+
type=OpenApiTypes.INT,
101+
location='path',
102+
required=True,
103+
),
104+
OpenApiParameter(
105+
name="name",
106+
description="任务名称",
107+
type=OpenApiTypes.STR,
108+
location='query',
109+
required=True,
110+
),
111+
OpenApiParameter(
112+
name="state",
113+
description="状态",
114+
type=OpenApiTypes.STR,
115+
location='query',
116+
required=True,
117+
),
118+
OpenApiParameter(
119+
name="order",
120+
description="排序字段",
121+
type=OpenApiTypes.STR,
122+
location='query',
123+
required=True,
124+
),
125+
]
126+
127+
@staticmethod
128+
def get_response():
129+
return TriggerTaskRecordResponse
130+
131+
132+
class TriggerTaskRecordExecutionDetailsAPI(APIMixin):
133+
@staticmethod
134+
def get_parameters():
135+
return [
136+
OpenApiParameter(
137+
name="workspace_id",
138+
description="工作空间id",
139+
type=OpenApiTypes.STR,
140+
location='path',
141+
required=True,
142+
),
143+
OpenApiParameter(
144+
name="trigger_id",
145+
description="触发器id",
146+
type=OpenApiTypes.STR,
147+
location='path',
148+
required=True,
149+
),
150+
OpenApiParameter(
151+
name="trigger_task_id",
152+
description="触发器任务id",
153+
type=OpenApiTypes.STR,
154+
location='path',
155+
required=True,
156+
),
157+
]
158+
159+
@staticmethod
160+
def get_response():
161+
return TriggerTaskRecordExecutionDetailsResponse

apps/trigger/views/trigger.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
from trigger.serializers.trigger import TriggerQuerySerializer, TriggerOperateSerializer
2727

2828
from trigger.api.trigger import TriggerCreateAPI, TriggerOperateAPI, TriggerEditAPI, TriggerBatchDeleteAPI, \
29-
TriggerBatchActiveAPI, TaskSourceTriggerOperateAPI, TaskSourceTriggerAPI, TaskSourceTriggerCreateAPI
29+
TriggerBatchActiveAPI, TaskSourceTriggerOperateAPI, TaskSourceTriggerAPI, TaskSourceTriggerCreateAPI, \
30+
TriggerQueryAPI, TriggerQueryPageAPI
3031
from trigger.serializers.trigger import TriggerSerializer
3132

3233

@@ -78,9 +79,8 @@ def post(self, request: Request, workspace_id: str):
7879
description=_('Get the trigger list'),
7980
summary=_('Get the trigger list'),
8081
operation_id=_('Get the trigger list'), # type: ignore
81-
parameters=ApplicationCreateAPI.get_parameters(),
82-
request=ApplicationCreateAPI.get_request(),
83-
responses=ApplicationCreateAPI.get_response(),
82+
parameters=TriggerQueryAPI.get_parameters(),
83+
responses=TriggerQueryAPI.get_response(),
8484
tags=[_('Trigger')] # type: ignore
8585
)
8686
@has_permissions(
@@ -227,9 +227,8 @@ class Page(APIView):
227227
description=_('Get the trigger list by page'),
228228
summary=_('Get the trigger list by page'),
229229
operation_id=_('Get the trigger list by page'), # type: ignore
230-
parameters=ApplicationCreateAPI.get_parameters(),
231-
request=ApplicationCreateAPI.get_request(),
232-
responses=ApplicationCreateAPI.get_response(),
230+
parameters=TriggerQueryPageAPI.get_parameters(),
231+
responses=TriggerQueryPageAPI.get_response(),
233232
tags=[_('Trigger')] # type: ignore
234233
)
235234
@has_permissions(
@@ -344,7 +343,6 @@ def get(self, request: Request, workspace_id: str, source_type: str, source_id:
344343
responses=result.DefaultResultSerializer,
345344
tags=[_('Trigger')] # type: ignore
346345
)
347-
348346
@has_permissions(
349347
lambda r, kwargs: Permission(group=Group(kwargs.get("source_type")), operate=Operate.TRIGGER_EDIT,
350348
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"

apps/trigger/views/trigger_task.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
from rest_framework.request import Request
1212
from rest_framework.views import APIView
1313

14-
from application.api.application_api import ApplicationCreateAPI
1514
from common import result
15+
from trigger.api.trigger_task import TriggerTaskRecordExecutionDetailsAPI, TriggerTaskRecordPageAPI, TriggerTaskAPI
1616
from trigger.serializers.trigger_task import TriggerTaskQuerySerializer, TriggerTaskRecordQuerySerializer, \
1717
TriggerTaskRecordOperateSerializer
1818

@@ -23,9 +23,8 @@ class TriggerTaskView(APIView):
2323
description=_('Get the task list of triggers'),
2424
summary=_('Get the task list of triggers'),
2525
operation_id=_('Get the task list of triggers'), # type: ignore
26-
parameters=ApplicationCreateAPI.get_parameters(),
27-
request=ApplicationCreateAPI.get_request(),
28-
responses=ApplicationCreateAPI.get_response(),
26+
parameters=TriggerTaskAPI.get_parameters(),
27+
responses=TriggerTaskAPI.get_response(),
2928
tags=[_('Trigger')] # type: ignore
3029
)
3130
def get(self, request: Request, workspace_id: str, trigger_id: str):
@@ -43,9 +42,8 @@ class TriggerTaskRecordExecutionDetailsView(APIView):
4342
description=_('Retrieve detailed records of tasks executed by the trigger.'),
4443
summary=_('Retrieve detailed records of tasks executed by the trigger.'),
4544
operation_id=_('Retrieve detailed records of tasks executed by the trigger.'), # type: ignore
46-
parameters=ApplicationCreateAPI.get_parameters(),
47-
request=ApplicationCreateAPI.get_request(),
48-
responses=ApplicationCreateAPI.get_response(),
45+
parameters=TriggerTaskRecordExecutionDetailsAPI.get_parameters(),
46+
responses=TriggerTaskRecordExecutionDetailsAPI.get_response(),
4947
tags=[_('Trigger')] # type: ignore
5048
)
5149
def get(self, request: Request, workspace_id: str, trigger_id: str, trigger_task_id: str,
@@ -63,9 +61,8 @@ class TriggerTaskRecordPageView(APIView):
6361
description=_('Get a paginated list of execution records for trigger tasks.'),
6462
summary=_('Get a paginated list of execution records for trigger tasks.'),
6563
operation_id=_('Get a paginated list of execution records for trigger tasks.'), # type: ignore
66-
parameters=ApplicationCreateAPI.get_parameters(),
67-
request=ApplicationCreateAPI.get_request(),
68-
responses=ApplicationCreateAPI.get_response(),
64+
parameters=TriggerTaskRecordPageAPI.get_parameters(),
65+
responses=TriggerTaskRecordPageAPI.get_response(),
6966
tags=[_('Trigger')] # type: ignore
7067
)
7168
def get(self, request: Request, workspace_id: str, trigger_id: str, current_page: int, page_size: int):

0 commit comments

Comments
 (0)