paragraph.py 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. from drf_spectacular.types import OpenApiTypes
  2. from drf_spectacular.utils import OpenApiParameter
  3. from common.mixins.api_mixin import APIMixin
  4. from common.result import DefaultResultSerializer, ResultSerializer
  5. from knowledge.serializers.common import BatchSerializer
  6. from knowledge.serializers.paragraph import ParagraphSerializer, ParagraphBatchGenerateRelatedSerializer
  7. from knowledge.serializers.problem import ProblemSerializer
  8. class ParagraphReadResponse(ResultSerializer):
  9. @staticmethod
  10. def get_data():
  11. return ParagraphSerializer(many=True)
  12. class ParagraphReadAPI(APIMixin):
  13. @staticmethod
  14. def get_parameters():
  15. return [
  16. OpenApiParameter(
  17. name="workspace_id",
  18. description="工作空间id",
  19. type=OpenApiTypes.STR,
  20. location='path',
  21. required=True,
  22. ),
  23. OpenApiParameter(
  24. name="knowledge_id",
  25. description="知识库id",
  26. type=OpenApiTypes.STR,
  27. location='path',
  28. required=True,
  29. ),
  30. OpenApiParameter(
  31. name="document_id",
  32. description="文档id",
  33. type=OpenApiTypes.STR,
  34. location='path',
  35. required=True,
  36. ),
  37. OpenApiParameter(
  38. name="title",
  39. description="标题",
  40. type=OpenApiTypes.STR,
  41. location='query',
  42. required=False,
  43. ),
  44. OpenApiParameter(
  45. name="content",
  46. description="内容",
  47. type=OpenApiTypes.STR,
  48. location='query',
  49. required=False,
  50. ),
  51. ]
  52. @staticmethod
  53. def get_response():
  54. return ParagraphReadResponse
  55. class ParagraphCreateAPI(APIMixin):
  56. @staticmethod
  57. def get_parameters():
  58. return [
  59. OpenApiParameter(
  60. name="workspace_id",
  61. description="工作空间id",
  62. type=OpenApiTypes.STR,
  63. location='path',
  64. required=True,
  65. ),
  66. OpenApiParameter(
  67. name="knowledge_id",
  68. description="知识库id",
  69. type=OpenApiTypes.STR,
  70. location='path',
  71. required=True,
  72. ),
  73. OpenApiParameter(
  74. name="document_id",
  75. description="文档id",
  76. type=OpenApiTypes.STR,
  77. location='path',
  78. required=True,
  79. ),
  80. ]
  81. @staticmethod
  82. def get_request():
  83. return ParagraphSerializer
  84. @staticmethod
  85. def get_response():
  86. return ParagraphReadResponse
  87. class ParagraphBatchDeleteAPI(ParagraphCreateAPI):
  88. @staticmethod
  89. def get_request():
  90. return BatchSerializer
  91. @staticmethod
  92. def get_response():
  93. return DefaultResultSerializer
  94. class ParagraphBatchGenerateRelatedAPI(ParagraphCreateAPI):
  95. @staticmethod
  96. def get_request():
  97. return ParagraphBatchGenerateRelatedSerializer
  98. @staticmethod
  99. def get_response():
  100. return DefaultResultSerializer
  101. class ParagraphGetAPI(APIMixin):
  102. @staticmethod
  103. def get_parameters():
  104. return [
  105. OpenApiParameter(
  106. name="workspace_id",
  107. description="工作空间id",
  108. type=OpenApiTypes.STR,
  109. location='path',
  110. required=True,
  111. ),
  112. OpenApiParameter(
  113. name="knowledge_id",
  114. description="知识库id",
  115. type=OpenApiTypes.STR,
  116. location='path',
  117. required=True,
  118. ),
  119. OpenApiParameter(
  120. name="document_id",
  121. description="文档id",
  122. type=OpenApiTypes.STR,
  123. location='path',
  124. required=True,
  125. ),
  126. OpenApiParameter(
  127. name="paragraph_id",
  128. description="段落id",
  129. type=OpenApiTypes.STR,
  130. location='path',
  131. required=True,
  132. ),
  133. ]
  134. class ParagraphEditAPI(ParagraphGetAPI):
  135. @staticmethod
  136. def get_request():
  137. return ParagraphSerializer
  138. @staticmethod
  139. def get_response():
  140. return DefaultResultSerializer
  141. class ProblemCreateAPI(ParagraphGetAPI):
  142. @staticmethod
  143. def get_request():
  144. return ProblemSerializer
  145. @staticmethod
  146. def get_response():
  147. return DefaultResultSerializer
  148. class UnAssociationAPI(APIMixin):
  149. @staticmethod
  150. def get_parameters():
  151. return [
  152. OpenApiParameter(
  153. name="workspace_id",
  154. description="工作空间id",
  155. type=OpenApiTypes.STR,
  156. location='path',
  157. required=True,
  158. ),
  159. OpenApiParameter(
  160. name="knowledge_id",
  161. description="知识库id",
  162. type=OpenApiTypes.STR,
  163. location='path',
  164. required=True,
  165. ),
  166. OpenApiParameter(
  167. name="document_id",
  168. description="文档id",
  169. type=OpenApiTypes.STR,
  170. location='path',
  171. required=True,
  172. ),
  173. OpenApiParameter(
  174. name="paragraph_id",
  175. description="段落id",
  176. type=OpenApiTypes.STR,
  177. location='query',
  178. required=True,
  179. ),
  180. OpenApiParameter(
  181. name="problem_id",
  182. description="问题id",
  183. type=OpenApiTypes.STR,
  184. location='query',
  185. required=True,
  186. )
  187. ]
  188. class AssociationAPI(UnAssociationAPI):
  189. pass
  190. class ParagraphPageAPI(APIMixin):
  191. @staticmethod
  192. def get_parameters():
  193. return [
  194. OpenApiParameter(
  195. name="workspace_id",
  196. description="工作空间id",
  197. type=OpenApiTypes.STR,
  198. location='path',
  199. required=True,
  200. ),
  201. OpenApiParameter(
  202. name="knowledge_id",
  203. description="知识库id",
  204. type=OpenApiTypes.STR,
  205. location='path',
  206. required=True,
  207. ),
  208. OpenApiParameter(
  209. name="document_id",
  210. description="文档id",
  211. type=OpenApiTypes.STR,
  212. location='path',
  213. required=True,
  214. ),
  215. OpenApiParameter(
  216. name="current_page",
  217. description="当前页",
  218. type=OpenApiTypes.INT,
  219. location='path',
  220. required=True,
  221. ),
  222. OpenApiParameter(
  223. name="page_size",
  224. description="每页大小",
  225. type=OpenApiTypes.INT,
  226. location='path',
  227. required=True,
  228. ),
  229. ]
  230. class ParagraphMigrateAPI(APIMixin):
  231. @staticmethod
  232. def get_parameters():
  233. return [
  234. OpenApiParameter(
  235. name="workspace_id",
  236. description="工作空间id",
  237. type=OpenApiTypes.STR,
  238. location='path',
  239. required=True,
  240. ),
  241. OpenApiParameter(
  242. name="knowledge_id",
  243. description="知识库id",
  244. type=OpenApiTypes.STR,
  245. location='path',
  246. required=True,
  247. ),
  248. OpenApiParameter(
  249. name="document_id",
  250. description="文档id",
  251. type=OpenApiTypes.STR,
  252. location='path',
  253. required=True,
  254. ),
  255. OpenApiParameter(
  256. name="target_knowledge_id",
  257. description="目标知识库id",
  258. type=OpenApiTypes.STR,
  259. location='path',
  260. required=True,
  261. ),
  262. OpenApiParameter(
  263. name="target_document_id",
  264. description="目标文档id",
  265. type=OpenApiTypes.STR,
  266. location='path',
  267. required=True,
  268. ),
  269. ]
  270. @staticmethod
  271. def get_request():
  272. return BatchSerializer
  273. class ParagraphAdjustOrderAPI(APIMixin):
  274. @staticmethod
  275. def get_parameters():
  276. return [
  277. OpenApiParameter(
  278. name="workspace_id",
  279. description="工作空间id",
  280. type=OpenApiTypes.STR,
  281. location='path',
  282. required=True,
  283. ),
  284. OpenApiParameter(
  285. name="knowledge_id",
  286. description="知识库id",
  287. type=OpenApiTypes.STR,
  288. location='path',
  289. required=True,
  290. ),
  291. OpenApiParameter(
  292. name="document_id",
  293. description="文档id",
  294. type=OpenApiTypes.STR,
  295. location='path',
  296. required=True,
  297. ),
  298. OpenApiParameter(
  299. name="paragraph_id",
  300. description="段落id",
  301. type=OpenApiTypes.STR,
  302. location='query',
  303. required=True,
  304. ),
  305. OpenApiParameter(
  306. name="new_position",
  307. description="新的顺序",
  308. type=OpenApiTypes.INT,
  309. location='query',
  310. required=True,
  311. ),
  312. ]
  313. @staticmethod
  314. def get_response():
  315. return DefaultResultSerializer