trigger.py 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. # coding=utf-8
  2. """
  3. @project: MaxKB
  4. @Author:niu
  5. @file: trigger.py
  6. @date:2026/1/14 15:49
  7. @desc:
  8. """
  9. from drf_spectacular.types import OpenApiTypes
  10. from drf_spectacular.utils import OpenApiParameter
  11. from rest_framework import serializers
  12. from django.utils.translation import gettext_lazy as _
  13. from common.mixins.api_mixin import APIMixin
  14. from common.result import ResultSerializer
  15. from knowledge.serializers.common import BatchSerializer
  16. from trigger.serializers.task_source_trigger import TaskSourceTriggerEditRequest
  17. from trigger.serializers.trigger import TriggerCreateRequest, TriggerResponse, BatchActiveSerializer
  18. class TriggerQueryResponseSerializer(serializers.Serializer):
  19. id = serializers.UUIDField(required=True, help_text="触发器id", label='触发器id')
  20. workspace_id = serializers.CharField(required=True, help_text="触发器工作空间", label='触发器工作空间')
  21. name = serializers.CharField(required=True, help_text="触发器名称", label='触发器名称')
  22. desc = serializers.CharField(required=True, help_text="触发器描述", label="触发器描述")
  23. trigger_type = serializers.CharField(required=True, help_text="触发器类型", label="触发器类型")
  24. type = serializers.CharField(required=True, help_text="资源类型", label="资源类型")
  25. is_active = serializers.BooleanField(required=True, help_text="是否激活", label="是否激活")
  26. source_name = serializers.CharField(required=True, help_text="资源类型", label="资源类型")
  27. source_icon = 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. class TriggerTaskRecordResponse(ResultSerializer):
  31. def get_data(self):
  32. return TriggerQueryResponseSerializer(many=True)
  33. class TriggerQueryAPI(APIMixin):
  34. @staticmethod
  35. def get_parameters():
  36. return [
  37. OpenApiParameter(
  38. name="workspace_id",
  39. description="工作空间id",
  40. type=OpenApiTypes.STR,
  41. location='path',
  42. required=True,
  43. ),
  44. OpenApiParameter(
  45. name="name",
  46. description="触发器名称",
  47. type=OpenApiTypes.STR,
  48. required=True,
  49. ),
  50. OpenApiParameter(
  51. name="type",
  52. description="触发器类型",
  53. type=OpenApiTypes.STR,
  54. required=True,
  55. ),
  56. OpenApiParameter(
  57. name="task",
  58. description="任务名称",
  59. type=OpenApiTypes.STR,
  60. required=True,
  61. ),
  62. OpenApiParameter(
  63. name="is_active",
  64. description="启用状态",
  65. type=OpenApiTypes.STR,
  66. required=True,
  67. ),
  68. OpenApiParameter(
  69. name="create_user",
  70. description="创建者",
  71. type=OpenApiTypes.STR,
  72. required=True,
  73. ),
  74. ]
  75. @staticmethod
  76. def get_response():
  77. return TriggerTaskRecordResponse
  78. class TriggerQueryPageAPI(APIMixin):
  79. @staticmethod
  80. def get_parameters():
  81. return [TriggerQueryAPI.get_parameters(),
  82. OpenApiParameter(
  83. name="current_page",
  84. description=_("Current page"),
  85. type=OpenApiTypes.INT,
  86. location='path',
  87. required=True,
  88. ),
  89. OpenApiParameter(
  90. name="page_size",
  91. description=_("Page size"),
  92. type=OpenApiTypes.INT,
  93. location='path',
  94. required=True,
  95. )]
  96. @staticmethod
  97. def get_response():
  98. return TriggerQueryAPI.get_response()
  99. class TriggerCreateAPI(APIMixin):
  100. @staticmethod
  101. def get_parameters():
  102. return [
  103. OpenApiParameter(
  104. name="workspace_id",
  105. description="工作空间id",
  106. type=OpenApiTypes.STR,
  107. location='path',
  108. required=True,
  109. ),
  110. ]
  111. @staticmethod
  112. def get_request():
  113. return TriggerCreateRequest
  114. @staticmethod
  115. def get_response():
  116. return TriggerResponse
  117. class TaskSourceTriggerCreateAPI(APIMixin):
  118. @staticmethod
  119. def get_parameters():
  120. return [
  121. OpenApiParameter(
  122. name="workspace_id",
  123. description="工作空间id",
  124. type=OpenApiTypes.STR,
  125. location='path',
  126. required=True,
  127. ),
  128. OpenApiParameter(
  129. name="source_id",
  130. description="资源id",
  131. type=OpenApiTypes.STR,
  132. location='path',
  133. required=True,
  134. ),
  135. OpenApiParameter(
  136. name="source_type",
  137. description="资源类型",
  138. type=OpenApiTypes.STR,
  139. location='path',
  140. required=True,
  141. ),
  142. ]
  143. @staticmethod
  144. def get_request():
  145. return TriggerCreateRequest
  146. @staticmethod
  147. def get_response():
  148. return TriggerResponse
  149. class TriggerBatchDeleteAPI(APIMixin):
  150. @staticmethod
  151. def get_parameters():
  152. return [
  153. OpenApiParameter(
  154. name="workspace_id",
  155. description="工作空间id",
  156. type=OpenApiTypes.STR,
  157. location='path',
  158. required=True,
  159. )
  160. ]
  161. @staticmethod
  162. def get_request():
  163. return BatchSerializer
  164. class TriggerBatchActiveAPI(APIMixin):
  165. @staticmethod
  166. def get_request():
  167. return BatchActiveSerializer
  168. class TriggerOperateAPI(APIMixin):
  169. @staticmethod
  170. def get_parameters():
  171. return [
  172. OpenApiParameter(
  173. name="workspace_id",
  174. description="工作空间id",
  175. type=OpenApiTypes.STR,
  176. location='path',
  177. required=True,
  178. ),
  179. OpenApiParameter(
  180. name="trigger_id",
  181. description="触发器id",
  182. type=OpenApiTypes.STR,
  183. location='path',
  184. required=True,
  185. ),
  186. ]
  187. @staticmethod
  188. def get_request():
  189. return TriggerCreateRequest
  190. @staticmethod
  191. def get_response():
  192. return TriggerResponse
  193. class RequestSE(serializers.Serializer):
  194. pass
  195. class TriggerEditAPI(APIMixin):
  196. @staticmethod
  197. def get_request():
  198. return TriggerCreateRequest
  199. class TaskSourceTriggerAPI(APIMixin):
  200. @staticmethod
  201. def get_parameters():
  202. return [
  203. OpenApiParameter(
  204. name="workspace_id",
  205. description="工作空间id",
  206. type=OpenApiTypes.STR,
  207. location='path',
  208. required=True,
  209. ),
  210. OpenApiParameter(
  211. name="source_id",
  212. description="资源id",
  213. type=OpenApiTypes.STR,
  214. location='path',
  215. required=True,
  216. ),
  217. OpenApiParameter(
  218. name="source_type",
  219. description="资源类型",
  220. type=OpenApiTypes.STR,
  221. location='path',
  222. required=True,
  223. ),
  224. ]
  225. @staticmethod
  226. def get_response():
  227. return TriggerResponse
  228. class TaskSourceTriggerOperateAPI(APIMixin):
  229. @staticmethod
  230. def get_parameters():
  231. return [
  232. OpenApiParameter(
  233. name="workspace_id",
  234. description="工作空间id",
  235. type=OpenApiTypes.STR,
  236. location='path',
  237. required=True,
  238. ),
  239. OpenApiParameter(
  240. name="source_id",
  241. description="资源id",
  242. type=OpenApiTypes.STR,
  243. location='path',
  244. required=True,
  245. ),
  246. OpenApiParameter(
  247. name="source_type",
  248. description="资源类型",
  249. type=OpenApiTypes.STR,
  250. location='path',
  251. required=True,
  252. ),
  253. OpenApiParameter(
  254. name="trigger_id",
  255. description="触发器id",
  256. type=OpenApiTypes.STR,
  257. location='path',
  258. required=True,
  259. ),
  260. ]
  261. @staticmethod
  262. def get_request():
  263. return TaskSourceTriggerEditRequest