api.ts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /**
  2. * API 路径常量
  3. */
  4. export const API_PATHS = {
  5. // 认证相关
  6. AUTH: {
  7. LOGIN: '/api/auth/login',
  8. REGISTER: '/api/auth/register',
  9. REFRESH: '/api/auth/refresh',
  10. LOGOUT: '/api/auth/logout',
  11. ME: '/api/auth/me',
  12. PASSWORD: '/api/auth/password',
  13. PROFILE: '/api/auth/profile',
  14. },
  15. // 用户管理
  16. USERS: {
  17. LIST: '/api/users',
  18. CREATE: '/api/users',
  19. UPDATE: (id: number) => `/api/users/${id}`,
  20. DELETE: (id: number) => `/api/users/${id}`,
  21. },
  22. // 平台账号
  23. ACCOUNTS: {
  24. LIST: '/api/accounts',
  25. CREATE: '/api/accounts',
  26. UPDATE: (id: number) => `/api/accounts/${id}`,
  27. DELETE: (id: number) => `/api/accounts/${id}`,
  28. REFRESH: (id: number) => `/api/accounts/${id}/refresh`,
  29. QR_CODE: '/api/accounts/qrcode',
  30. QR_STATUS: '/api/accounts/qrcode/status',
  31. },
  32. // 账号分组
  33. ACCOUNT_GROUPS: {
  34. LIST: '/api/account-groups',
  35. CREATE: '/api/account-groups',
  36. UPDATE: (id: number) => `/api/account-groups/${id}`,
  37. DELETE: (id: number) => `/api/account-groups/${id}`,
  38. },
  39. // 发布任务
  40. PUBLISH: {
  41. LIST: '/api/publish',
  42. CREATE: '/api/publish',
  43. DETAIL: (id: number) => `/api/publish/${id}`,
  44. CANCEL: (id: number) => `/api/publish/${id}/cancel`,
  45. RETRY: (id: number) => `/api/publish/${id}/retry`,
  46. DELETE: (id: number) => `/api/publish/${id}`,
  47. },
  48. // 作品管理
  49. WORKS: {
  50. LIST: '/api/works',
  51. DELETE_PLATFORM: (id: number) => `/api/works/${id}/delete-platform`,
  52. },
  53. // 评论管理
  54. COMMENTS: {
  55. LIST: '/api/comments',
  56. STATS: '/api/comments/stats',
  57. MARK_READ: '/api/comments/read',
  58. REPLY: '/api/comments/reply',
  59. BATCH_REPLY: '/api/comments/batch-reply',
  60. },
  61. // 数据分析
  62. ANALYTICS: {
  63. SUMMARY: '/api/analytics/summary',
  64. TREND: '/api/analytics/trend',
  65. PLATFORMS: '/api/analytics/platforms',
  66. RANKING: '/api/analytics/ranking',
  67. EXPORT: '/api/analytics/export',
  68. },
  69. // 定时任务
  70. TASKS: {
  71. LIST: '/api/tasks',
  72. CREATE: '/api/tasks',
  73. UPDATE: (id: number) => `/api/tasks/${id}`,
  74. DELETE: (id: number) => `/api/tasks/${id}`,
  75. LOGS: (id: number) => `/api/tasks/${id}/logs`,
  76. },
  77. // 系统
  78. SYSTEM: {
  79. HEALTH: '/api/health',
  80. CONFIG: '/api/system/config',
  81. },
  82. // 文件上传
  83. UPLOAD: {
  84. VIDEO: '/api/upload/video',
  85. IMAGE: '/api/upload/image',
  86. },
  87. } as const;
  88. /**
  89. * WebSocket 事件
  90. */
  91. export const WS_EVENTS = {
  92. // 连接
  93. CONNECT: 'connect',
  94. DISCONNECT: 'disconnect',
  95. ERROR: 'error',
  96. // 认证
  97. AUTH: 'auth',
  98. AUTH_SUCCESS: 'auth:success',
  99. AUTH_ERROR: 'auth:error',
  100. // 账号
  101. ACCOUNT_ADDED: 'account:added',
  102. ACCOUNT_UPDATED: 'account:updated',
  103. ACCOUNT_DELETED: 'account:deleted',
  104. // 任务
  105. TASK_CREATED: 'task:created',
  106. TASK_STATUS_CHANGED: 'task:status_changed',
  107. TASK_PROGRESS: 'task:progress',
  108. // 发布
  109. PUBLISH_PROGRESS: 'publish:progress',
  110. // 验证码
  111. CAPTCHA_REQUIRED: 'captcha:required',
  112. CAPTCHA_SUBMIT: 'captcha:submit',
  113. CAPTCHA_RESULT: 'captcha:result',
  114. // 登录(AI 辅助)
  115. LOGIN_AI_ANALYSIS: 'login:aiAnalysis',
  116. LOGIN_VERIFICATION_NEEDED: 'login:verificationNeeded',
  117. LOGIN_NAVIGATION_SUGGESTION: 'login:navigationSuggestion',
  118. LOGIN_RESULT: 'login:result',
  119. // 评论
  120. COMMENT_NEW: 'comment:new',
  121. COMMENT_REPLIED: 'comment:replied',
  122. COMMENT_SYNCED: 'comment:synced',
  123. COMMENT_SYNC_STARTED: 'comment:sync_started',
  124. COMMENT_SYNC_PROGRESS: 'comment:sync_progress',
  125. COMMENT_SYNC_FAILED: 'comment:sync_failed',
  126. // 数据
  127. ANALYTICS_UPDATED: 'analytics:updated',
  128. // 心跳
  129. PING: 'ping',
  130. PONG: 'pong',
  131. } as const;
  132. /**
  133. * 错误代码
  134. */
  135. export const ERROR_CODES = {
  136. // 通用
  137. UNKNOWN: 'UNKNOWN_ERROR',
  138. VALIDATION: 'VALIDATION_ERROR',
  139. NOT_FOUND: 'NOT_FOUND',
  140. // 认证
  141. UNAUTHORIZED: 'UNAUTHORIZED',
  142. TOKEN_EXPIRED: 'TOKEN_EXPIRED',
  143. TOKEN_INVALID: 'TOKEN_INVALID',
  144. FORBIDDEN: 'FORBIDDEN',
  145. // 用户
  146. USER_EXISTS: 'USER_EXISTS',
  147. USER_NOT_FOUND: 'USER_NOT_FOUND',
  148. INVALID_CREDENTIALS: 'INVALID_CREDENTIALS',
  149. REGISTRATION_DISABLED: 'REGISTRATION_DISABLED',
  150. // 账号
  151. ACCOUNT_EXISTS: 'ACCOUNT_EXISTS',
  152. ACCOUNT_NOT_FOUND: 'ACCOUNT_NOT_FOUND',
  153. COOKIE_INVALID: 'COOKIE_INVALID',
  154. COOKIE_EXPIRED: 'COOKIE_EXPIRED',
  155. // 发布
  156. PUBLISH_FAILED: 'PUBLISH_FAILED',
  157. VIDEO_TOO_LARGE: 'VIDEO_TOO_LARGE',
  158. VIDEO_FORMAT_UNSUPPORTED: 'VIDEO_FORMAT_UNSUPPORTED',
  159. // 评论
  160. COMMENT_NOT_FOUND: 'COMMENT_NOT_FOUND',
  161. REPLY_FAILED: 'REPLY_FAILED',
  162. // 服务
  163. SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE',
  164. } as const;
  165. /**
  166. * HTTP 状态码
  167. */
  168. export const HTTP_STATUS = {
  169. OK: 200,
  170. CREATED: 201,
  171. NO_CONTENT: 204,
  172. BAD_REQUEST: 400,
  173. UNAUTHORIZED: 401,
  174. FORBIDDEN: 403,
  175. NOT_FOUND: 404,
  176. CONFLICT: 409,
  177. UNPROCESSABLE_ENTITY: 422,
  178. INTERNAL_SERVER_ERROR: 500,
  179. SERVICE_UNAVAILABLE: 503,
  180. } as const;