create-pardx-scaffold 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/README.md +45 -0
  2. package/cli.js +104 -0
  3. package/package.json +15 -0
  4. package/template/.cursorrules +479 -0
  5. package/template/.prettierignore +29 -0
  6. package/template/.prettierrc +11 -0
  7. package/template/.vscode/extensions.json +8 -0
  8. package/template/.vscode/settings.json +122 -0
  9. package/template/CLAUDE.md +762 -0
  10. package/template/README.md +125 -0
  11. package/template/apps/api/.env.example +11 -0
  12. package/template/apps/api/.eslintrc.js +222 -0
  13. package/template/apps/api/config.local.yaml +397 -0
  14. package/template/apps/api/libs/domain/auth/package.json +11 -0
  15. package/template/apps/api/libs/domain/auth/src/README.md +189 -0
  16. package/template/apps/api/libs/domain/auth/src/auth-validation.service.ts +37 -0
  17. package/template/apps/api/libs/domain/auth/src/auth.guard.ts +173 -0
  18. package/template/apps/api/libs/domain/auth/src/auth.module.ts +23 -0
  19. package/template/apps/api/libs/domain/auth/src/auth.service.ts +198 -0
  20. package/template/apps/api/libs/domain/auth/src/auth.ts +66 -0
  21. package/template/apps/api/libs/domain/auth/src/decorators/presets.decorator.ts +50 -0
  22. package/template/apps/api/libs/domain/auth/src/decorators/rbac.decorator.ts +67 -0
  23. package/template/apps/api/libs/domain/auth/src/decorators/resource-owner.decorator.ts +67 -0
  24. package/template/apps/api/libs/domain/auth/src/dto/auth.dto.ts +10 -0
  25. package/template/apps/api/libs/domain/auth/src/guards/streaming-asr-session.guard.ts +179 -0
  26. package/template/apps/api/libs/domain/auth/src/index.ts +12 -0
  27. package/template/apps/api/libs/domain/auth/src/types/auth.interface.ts +52 -0
  28. package/template/apps/api/libs/domain/auth/tsconfig.lib.json +9 -0
  29. package/template/apps/api/libs/domain/db/package.json +11 -0
  30. package/template/apps/api/libs/domain/db/src/index.ts +14 -0
  31. package/template/apps/api/libs/domain/db/src/modules/country-code/country-code.module.ts +12 -0
  32. package/template/apps/api/libs/domain/db/src/modules/country-code/country-code.service.ts +140 -0
  33. package/template/apps/api/libs/domain/db/src/modules/country-code/index.ts +2 -0
  34. package/template/apps/api/libs/domain/db/src/modules/discord-auth/discord-auth.module.ts +12 -0
  35. package/template/apps/api/libs/domain/db/src/modules/discord-auth/discord-auth.service.ts +101 -0
  36. package/template/apps/api/libs/domain/db/src/modules/discord-auth/index.ts +2 -0
  37. package/template/apps/api/libs/domain/db/src/modules/email-auth/email-auth.module.ts +12 -0
  38. package/template/apps/api/libs/domain/db/src/modules/email-auth/email-auth.service.ts +101 -0
  39. package/template/apps/api/libs/domain/db/src/modules/email-auth/index.ts +2 -0
  40. package/template/apps/api/libs/domain/db/src/modules/file-source/file-source.module.ts +12 -0
  41. package/template/apps/api/libs/domain/db/src/modules/file-source/file-source.service.ts +109 -0
  42. package/template/apps/api/libs/domain/db/src/modules/file-source/index.ts +2 -0
  43. package/template/apps/api/libs/domain/db/src/modules/google-auth/google-auth.module.ts +12 -0
  44. package/template/apps/api/libs/domain/db/src/modules/google-auth/google-auth.service.ts +101 -0
  45. package/template/apps/api/libs/domain/db/src/modules/google-auth/index.ts +2 -0
  46. package/template/apps/api/libs/domain/db/src/modules/message/index.ts +2 -0
  47. package/template/apps/api/libs/domain/db/src/modules/message/message.module.ts +10 -0
  48. package/template/apps/api/libs/domain/db/src/modules/message/message.service.ts +314 -0
  49. package/template/apps/api/libs/domain/db/src/modules/mobile-auth/index.ts +2 -0
  50. package/template/apps/api/libs/domain/db/src/modules/mobile-auth/mobile-auth.module.ts +12 -0
  51. package/template/apps/api/libs/domain/db/src/modules/mobile-auth/mobile-auth.service.ts +101 -0
  52. package/template/apps/api/libs/domain/db/src/modules/risk-detection-record/index.ts +2 -0
  53. package/template/apps/api/libs/domain/db/src/modules/risk-detection-record/risk-detection-record.module.ts +12 -0
  54. package/template/apps/api/libs/domain/db/src/modules/risk-detection-record/risk-detection-record.service.ts +101 -0
  55. package/template/apps/api/libs/domain/db/src/modules/system-task-queue/index.ts +2 -0
  56. package/template/apps/api/libs/domain/db/src/modules/system-task-queue/system-task-queue.module.ts +12 -0
  57. package/template/apps/api/libs/domain/db/src/modules/system-task-queue/system-task-queue.service.ts +101 -0
  58. package/template/apps/api/libs/domain/db/src/modules/user-info/index.ts +2 -0
  59. package/template/apps/api/libs/domain/db/src/modules/user-info/user-info.module.ts +12 -0
  60. package/template/apps/api/libs/domain/db/src/modules/user-info/user-info.service.ts +139 -0
  61. package/template/apps/api/libs/domain/db/src/modules/wechat-auth/index.ts +2 -0
  62. package/template/apps/api/libs/domain/db/src/modules/wechat-auth/wechat-auth.module.ts +12 -0
  63. package/template/apps/api/libs/domain/db/src/modules/wechat-auth/wechat-auth.service.ts +101 -0
  64. package/template/apps/api/libs/domain/db/tsconfig.lib.json +9 -0
  65. package/template/apps/api/libs/infra/clients/internal/ai/index.ts +2 -0
  66. package/template/apps/api/libs/infra/clients/internal/ai/risk-detection.client.ts +301 -0
  67. package/template/apps/api/libs/infra/clients/internal/ai/risk-detection.module.ts +22 -0
  68. package/template/apps/api/libs/infra/clients/internal/crypt/crypt-client.service.spec.ts +18 -0
  69. package/template/apps/api/libs/infra/clients/internal/crypt/crypt.client.ts +37 -0
  70. package/template/apps/api/libs/infra/clients/internal/crypt/crypt.module.ts +10 -0
  71. package/template/apps/api/libs/infra/clients/internal/crypt/index.ts +2 -0
  72. package/template/apps/api/libs/infra/clients/internal/email/dto/email.dto.ts +75 -0
  73. package/template/apps/api/libs/infra/clients/internal/email/index.ts +11 -0
  74. package/template/apps/api/libs/infra/clients/internal/email/sendcloud.client.ts +400 -0
  75. package/template/apps/api/libs/infra/clients/internal/file-cdn/README.md +255 -0
  76. package/template/apps/api/libs/infra/clients/internal/file-cdn/dto/file-cdn.dto.ts +96 -0
  77. package/template/apps/api/libs/infra/clients/internal/file-cdn/file-cdn-client.service.spec.ts +18 -0
  78. package/template/apps/api/libs/infra/clients/internal/file-cdn/file-cdn.client.ts +620 -0
  79. package/template/apps/api/libs/infra/clients/internal/file-cdn/file-cdn.module.ts +19 -0
  80. package/template/apps/api/libs/infra/clients/internal/file-cdn/index.ts +40 -0
  81. package/template/apps/api/libs/infra/clients/internal/file-storage/config/file.config.ts +14 -0
  82. package/template/apps/api/libs/infra/clients/internal/file-storage/dto/file.dto.ts +127 -0
  83. package/template/apps/api/libs/infra/clients/internal/file-storage/file-gcs.client.ts +154 -0
  84. package/template/apps/api/libs/infra/clients/internal/file-storage/file-qiniu.client.ts +729 -0
  85. package/template/apps/api/libs/infra/clients/internal/file-storage/file-s3.client.ts +1097 -0
  86. package/template/apps/api/libs/infra/clients/internal/file-storage/file-storage.interface.ts +114 -0
  87. package/template/apps/api/libs/infra/clients/internal/file-storage/file-tos.client.ts +767 -0
  88. package/template/apps/api/libs/infra/clients/internal/file-storage/file-us3.client.ts +176 -0
  89. package/template/apps/api/libs/infra/clients/internal/file-storage/index.ts +16 -0
  90. package/template/apps/api/libs/infra/clients/internal/ocr/dto/ocr.dto.ts +61 -0
  91. package/template/apps/api/libs/infra/clients/internal/ocr/index.ts +3 -0
  92. package/template/apps/api/libs/infra/clients/internal/ocr/ocr.client.ts +123 -0
  93. package/template/apps/api/libs/infra/clients/internal/ocr/ocr.module.ts +15 -0
  94. package/template/apps/api/libs/infra/clients/internal/openai/index.ts +2 -0
  95. package/template/apps/api/libs/infra/clients/internal/openai/openai.client.ts +135 -0
  96. package/template/apps/api/libs/infra/clients/internal/openai/openai.module.ts +17 -0
  97. package/template/apps/api/libs/infra/clients/internal/openspeech/README.md +508 -0
  98. package/template/apps/api/libs/infra/clients/internal/openspeech/index.ts +44 -0
  99. package/template/apps/api/libs/infra/clients/internal/openspeech/openspeech.client.ts +441 -0
  100. package/template/apps/api/libs/infra/clients/internal/openspeech/openspeech.factory.ts +450 -0
  101. package/template/apps/api/libs/infra/clients/internal/openspeech/openspeech.module.ts +56 -0
  102. package/template/apps/api/libs/infra/clients/internal/openspeech/providers/aliyun.provider.ts +308 -0
  103. package/template/apps/api/libs/infra/clients/internal/openspeech/providers/base.provider.ts +114 -0
  104. package/template/apps/api/libs/infra/clients/internal/openspeech/providers/index.ts +10 -0
  105. package/template/apps/api/libs/infra/clients/internal/openspeech/providers/volcengine-streaming.provider.ts +1689 -0
  106. package/template/apps/api/libs/infra/clients/internal/openspeech/providers/volcengine.provider.ts +387 -0
  107. package/template/apps/api/libs/infra/clients/internal/openspeech/types.ts +467 -0
  108. package/template/apps/api/libs/infra/clients/internal/sms/dto/sms.dto.ts +97 -0
  109. package/template/apps/api/libs/infra/clients/internal/sms/index.ts +15 -0
  110. package/template/apps/api/libs/infra/clients/internal/sms/sms-aliyun.client.ts +52 -0
  111. package/template/apps/api/libs/infra/clients/internal/sms/sms-http.client.ts +111 -0
  112. package/template/apps/api/libs/infra/clients/internal/sms/sms-tencent.client.ts +54 -0
  113. package/template/apps/api/libs/infra/clients/internal/sms/sms-volcengine.client.ts +165 -0
  114. package/template/apps/api/libs/infra/clients/internal/sms/sms-zxjc.client.ts +47 -0
  115. package/template/apps/api/libs/infra/clients/internal/sse/index.ts +2 -0
  116. package/template/apps/api/libs/infra/clients/internal/sse/sse-client.service.spec.ts +18 -0
  117. package/template/apps/api/libs/infra/clients/internal/sse/sse.client.ts +360 -0
  118. package/template/apps/api/libs/infra/clients/internal/sse/sse.module.ts +17 -0
  119. package/template/apps/api/libs/infra/clients/internal/third-party-sse/index.ts +2 -0
  120. package/template/apps/api/libs/infra/clients/internal/third-party-sse/third-party-sse.client.ts +51 -0
  121. package/template/apps/api/libs/infra/clients/internal/third-party-sse/third-party-sse.module.ts +10 -0
  122. package/template/apps/api/libs/infra/clients/internal/third-party-sse/third-party-sse.service.spec.ts +18 -0
  123. package/template/apps/api/libs/infra/clients/internal/verify/index.ts +2 -0
  124. package/template/apps/api/libs/infra/clients/internal/verify/verify.client.ts +42 -0
  125. package/template/apps/api/libs/infra/clients/internal/verify/verify.module.ts +10 -0
  126. package/template/apps/api/libs/infra/clients/internal/volcengine-tts/dto/tts.dto.ts +64 -0
  127. package/template/apps/api/libs/infra/clients/internal/volcengine-tts/index.ts +3 -0
  128. package/template/apps/api/libs/infra/clients/internal/volcengine-tts/volcengine-tts.client.ts +846 -0
  129. package/template/apps/api/libs/infra/clients/internal/volcengine-tts/volcengine-tts.module.ts +21 -0
  130. package/template/apps/api/libs/infra/clients/internal/wechat/index.ts +2 -0
  131. package/template/apps/api/libs/infra/clients/internal/wechat/wechat-client.service.spec.ts +18 -0
  132. package/template/apps/api/libs/infra/clients/internal/wechat/wechat.client.ts +4 -0
  133. package/template/apps/api/libs/infra/clients/internal/wechat/wechat.module.ts +8 -0
  134. package/template/apps/api/libs/infra/clients/plugin/decorators/inject-client.decorator.ts +60 -0
  135. package/template/apps/api/libs/infra/clients/plugin/index.ts +21 -0
  136. package/template/apps/api/libs/infra/clients/plugin/interceptors/http-logging.interceptor.ts +130 -0
  137. package/template/apps/api/libs/infra/clients/plugin/interfaces/client.interface.ts +86 -0
  138. package/template/apps/api/libs/infra/clients/plugin/utils/retry.util.ts +157 -0
  139. package/template/apps/api/libs/infra/common/adapters/base.adapter.ts +94 -0
  140. package/template/apps/api/libs/infra/common/adapters/index.ts +38 -0
  141. package/template/apps/api/libs/infra/common/config/README.md +254 -0
  142. package/template/apps/api/libs/infra/common/config/agentx.config.ts +91 -0
  143. package/template/apps/api/libs/infra/common/config/configuration.ts +289 -0
  144. package/template/apps/api/libs/infra/common/config/constant/config.constants.ts +92 -0
  145. package/template/apps/api/libs/infra/common/config/dto/config.dto.ts +282 -0
  146. package/template/apps/api/libs/infra/common/config/package.json +11 -0
  147. package/template/apps/api/libs/infra/common/config/validation/env.validation.ts +161 -0
  148. package/template/apps/api/libs/infra/common/config/validation/index.ts +188 -0
  149. package/template/apps/api/libs/infra/common/config/validation/keys.validation.ts +564 -0
  150. package/template/apps/api/libs/infra/common/config/validation/yaml.validation.ts +582 -0
  151. package/template/apps/api/libs/infra/common/decorators/app-version/app-version.controller.ts +135 -0
  152. package/template/apps/api/libs/infra/common/decorators/app-version/app-version.interceptor.ts +36 -0
  153. package/template/apps/api/libs/infra/common/decorators/app-version/app-version.module.ts +27 -0
  154. package/template/apps/api/libs/infra/common/decorators/app-version/app-version.service.ts +252 -0
  155. package/template/apps/api/libs/infra/common/decorators/app-version/index.ts +13 -0
  156. package/template/apps/api/libs/infra/common/decorators/cache/cache.decorator.ts +437 -0
  157. package/template/apps/api/libs/infra/common/decorators/cache/cache.interceptor.ts +268 -0
  158. package/template/apps/api/libs/infra/common/decorators/cache/cache.module.ts +24 -0
  159. package/template/apps/api/libs/infra/common/decorators/cache/index.ts +33 -0
  160. package/template/apps/api/libs/infra/common/decorators/event/event.decorator.ts +229 -0
  161. package/template/apps/api/libs/infra/common/decorators/event/event.interceptor.ts +155 -0
  162. package/template/apps/api/libs/infra/common/decorators/event/event.module.ts +47 -0
  163. package/template/apps/api/libs/infra/common/decorators/event/handlers/cache-event.handler.ts +159 -0
  164. package/template/apps/api/libs/infra/common/decorators/event/index.ts +29 -0
  165. package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.decorator.ts +221 -0
  166. package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.interceptor.ts +150 -0
  167. package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.module.ts +27 -0
  168. package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.service.spec.ts +330 -0
  169. package/template/apps/api/libs/infra/common/decorators/feature-flag/feature-flag.service.ts +423 -0
  170. package/template/apps/api/libs/infra/common/decorators/feature-flag/index.ts +28 -0
  171. package/template/apps/api/libs/infra/common/decorators/rate-limit/dto/rate-limit.dto.ts +201 -0
  172. package/template/apps/api/libs/infra/common/decorators/rate-limit/index.ts +54 -0
  173. package/template/apps/api/libs/infra/common/decorators/rate-limit/rate-limit.decorator.ts +216 -0
  174. package/template/apps/api/libs/infra/common/decorators/rate-limit/rate-limit.exception.ts +74 -0
  175. package/template/apps/api/libs/infra/common/decorators/rate-limit/rate-limit.module.ts +37 -0
  176. package/template/apps/api/libs/infra/common/decorators/rate-limit/rate-limit.service.ts +430 -0
  177. package/template/apps/api/libs/infra/common/decorators/response.decorator.ts +67 -0
  178. package/template/apps/api/libs/infra/common/decorators/skip-version-check.decorator.ts +27 -0
  179. package/template/apps/api/libs/infra/common/decorators/transaction/index.ts +12 -0
  180. package/template/apps/api/libs/infra/common/decorators/transaction/transactional.decorator.ts +677 -0
  181. package/template/apps/api/libs/infra/common/decorators/ts-rest-controller.decorator.ts +63 -0
  182. package/template/apps/api/libs/infra/common/decorators/validation.decorator.ts +120 -0
  183. package/template/apps/api/libs/infra/common/decorators/version/index.ts +24 -0
  184. package/template/apps/api/libs/infra/common/decorators/version/version.decorator.ts +168 -0
  185. package/template/apps/api/libs/infra/common/decorators/version/version.interceptor.ts +97 -0
  186. package/template/apps/api/libs/infra/common/decorators/version/version.module.ts +21 -0
  187. package/template/apps/api/libs/infra/common/enums/action.enum.ts +7 -0
  188. package/template/apps/api/libs/infra/common/enums/error-codes.ts +71 -0
  189. package/template/apps/api/libs/infra/common/enums/role.enum.ts +4 -0
  190. package/template/apps/api/libs/infra/common/filter/exception/api.exception.ts +168 -0
  191. package/template/apps/api/libs/infra/common/filter/exception/exception.ts +47 -0
  192. package/template/apps/api/libs/infra/common/filter/exception/http.exception.ts +126 -0
  193. package/template/apps/api/libs/infra/common/guards/index.ts +1 -0
  194. package/template/apps/api/libs/infra/common/guards/version.guard.ts +312 -0
  195. package/template/apps/api/libs/infra/common/interceptor/mask/index.ts +1 -0
  196. package/template/apps/api/libs/infra/common/interceptor/mask/mask.interceptor.ts +242 -0
  197. package/template/apps/api/libs/infra/common/interceptor/rate-limit/no-rate-limit.interceptor.ts +14 -0
  198. package/template/apps/api/libs/infra/common/interceptor/rate-limit/rate-limit.interceptor.ts +230 -0
  199. package/template/apps/api/libs/infra/common/interceptor/transform/transform.interceptor.spec.ts +7 -0
  200. package/template/apps/api/libs/infra/common/interceptor/transform/transform.interceptor.ts +75 -0
  201. package/template/apps/api/libs/infra/common/interceptor/version/index.ts +1 -0
  202. package/template/apps/api/libs/infra/common/interceptor/version/version-header.interceptor.ts +62 -0
  203. package/template/apps/api/libs/infra/common/middleware/request.middleware.ts +109 -0
  204. package/template/apps/api/libs/infra/common/package.json +11 -0
  205. package/template/apps/api/libs/infra/common/pipes/transform-root.pipe.ts +12 -0
  206. package/template/apps/api/libs/infra/common/ts-rest/index.ts +26 -0
  207. package/template/apps/api/libs/infra/common/ts-rest/response.helper.ts +233 -0
  208. package/template/apps/api/libs/infra/i18n/en/errors.json +77 -0
  209. package/template/apps/api/libs/infra/i18n/en/events.json +1 -0
  210. package/template/apps/api/libs/infra/i18n/package.json +11 -0
  211. package/template/apps/api/libs/infra/i18n/zh-CN/errors.json +77 -0
  212. package/template/apps/api/libs/infra/i18n/zh-CN/events.json +1 -0
  213. package/template/apps/api/libs/infra/jwt/dto/jwt.dto.ts +1 -0
  214. package/template/apps/api/libs/infra/jwt/jwt.module.ts +26 -0
  215. package/template/apps/api/libs/infra/jwt/package.json +11 -0
  216. package/template/apps/api/libs/infra/prisma/db-metrics/package.json +11 -0
  217. package/template/apps/api/libs/infra/prisma/db-metrics/src/db-metrics.module.ts +141 -0
  218. package/template/apps/api/libs/infra/prisma/db-metrics/src/db-metrics.service.ts +456 -0
  219. package/template/apps/api/libs/infra/prisma/db-metrics/src/index.ts +2 -0
  220. package/template/apps/api/libs/infra/prisma/db-metrics/tsconfig.lib.json +9 -0
  221. package/template/apps/api/libs/infra/prisma/middleware/soft-delete.middleware.ts +179 -0
  222. package/template/apps/api/libs/infra/prisma/package.json +11 -0
  223. package/template/apps/api/libs/infra/prisma/prisma/index.ts +3 -0
  224. package/template/apps/api/libs/infra/prisma/prisma/prisma.module.ts +12 -0
  225. package/template/apps/api/libs/infra/prisma/prisma/prisma.service.ts +18 -0
  226. package/template/apps/api/libs/infra/prisma/prisma/types.ts +6 -0
  227. package/template/apps/api/libs/infra/prisma/prisma-read/prisma-read.module.ts +11 -0
  228. package/template/apps/api/libs/infra/prisma/prisma-read/prisma-read.service.ts +280 -0
  229. package/template/apps/api/libs/infra/prisma/prisma-write/prisma-write.module.ts +11 -0
  230. package/template/apps/api/libs/infra/prisma/prisma-write/prisma-write.service.ts +278 -0
  231. package/template/apps/api/libs/infra/prisma/prometheus/index.ts +1 -0
  232. package/template/apps/api/libs/infra/prisma/prometheus/prometheus.module.ts +231 -0
  233. package/template/apps/api/libs/infra/rabbitmq/package.json +11 -0
  234. package/template/apps/api/libs/infra/rabbitmq/src/dto/rabbitmq.dto.ts +13 -0
  235. package/template/apps/api/libs/infra/rabbitmq/src/index.ts +5 -0
  236. package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq-events.module.ts +132 -0
  237. package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq-events.service.ts +199 -0
  238. package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq.module.ts +101 -0
  239. package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq.service.spec.ts +18 -0
  240. package/template/apps/api/libs/infra/rabbitmq/src/rabbitmq.service.ts +543 -0
  241. package/template/apps/api/libs/infra/rabbitmq/tsconfig.lib.json +9 -0
  242. package/template/apps/api/libs/infra/redis/dto/redis.dto.ts +3 -0
  243. package/template/apps/api/libs/infra/redis/package.json +11 -0
  244. package/template/apps/api/libs/infra/redis/src/index.ts +2 -0
  245. package/template/apps/api/libs/infra/redis/src/redis.module.ts +63 -0
  246. package/template/apps/api/libs/infra/redis/src/redis.service.spec.ts +18 -0
  247. package/template/apps/api/libs/infra/redis/src/redis.service.ts +730 -0
  248. package/template/apps/api/libs/infra/redis/tsconfig.lib.json +9 -0
  249. package/template/apps/api/libs/infra/shared-db/index.ts +14 -0
  250. package/template/apps/api/libs/infra/shared-db/transaction-context.ts +51 -0
  251. package/template/apps/api/libs/infra/shared-db/transaction.module.ts +15 -0
  252. package/template/apps/api/libs/infra/shared-db/transaction.perf.spec.ts +226 -0
  253. package/template/apps/api/libs/infra/shared-db/transactional-service.base.ts +102 -0
  254. package/template/apps/api/libs/infra/shared-db/unit-of-work.service.ts +142 -0
  255. package/template/apps/api/libs/infra/shared-services/email/dto/email.dto.ts +87 -0
  256. package/template/apps/api/libs/infra/shared-services/email/email.module.ts +27 -0
  257. package/template/apps/api/libs/infra/shared-services/email/email.service.ts +258 -0
  258. package/template/apps/api/libs/infra/shared-services/email/index.ts +5 -0
  259. package/template/apps/api/libs/infra/shared-services/file-storage/README.md +376 -0
  260. package/template/apps/api/libs/infra/shared-services/file-storage/bucket-resolver.ts +306 -0
  261. package/template/apps/api/libs/infra/shared-services/file-storage/file-storage.factory.ts +347 -0
  262. package/template/apps/api/libs/infra/shared-services/file-storage/file-storage.module.ts +62 -0
  263. package/template/apps/api/libs/infra/shared-services/file-storage/file-storage.service.ts +849 -0
  264. package/template/apps/api/libs/infra/shared-services/file-storage/index.ts +57 -0
  265. package/template/apps/api/libs/infra/shared-services/file-storage/types.ts +210 -0
  266. package/template/apps/api/libs/infra/shared-services/ip-info/index.ts +2 -0
  267. package/template/apps/api/libs/infra/shared-services/ip-info/ip-info.module.ts +18 -0
  268. package/template/apps/api/libs/infra/shared-services/ip-info/ip-info.service.ts +118 -0
  269. package/template/apps/api/libs/infra/shared-services/sms/index.ts +11 -0
  270. package/template/apps/api/libs/infra/shared-services/sms/sms.factory.ts +367 -0
  271. package/template/apps/api/libs/infra/shared-services/sms/sms.module.ts +27 -0
  272. package/template/apps/api/libs/infra/shared-services/sms/sms.service.ts +315 -0
  273. package/template/apps/api/libs/infra/shared-services/sms/types.ts +297 -0
  274. package/template/apps/api/libs/infra/shared-services/streaming-asr/index.ts +50 -0
  275. package/template/apps/api/libs/infra/shared-services/streaming-asr/streaming-asr.module.ts +47 -0
  276. package/template/apps/api/libs/infra/shared-services/streaming-asr/streaming-asr.service.ts +1336 -0
  277. package/template/apps/api/libs/infra/shared-services/streaming-asr/types.ts +208 -0
  278. package/template/apps/api/libs/infra/shared-services/system-health/index.ts +3 -0
  279. package/template/apps/api/libs/infra/shared-services/system-health/system-health.controller.ts +61 -0
  280. package/template/apps/api/libs/infra/shared-services/system-health/system-health.module.ts +16 -0
  281. package/template/apps/api/libs/infra/shared-services/system-health/system-health.service.ts +69 -0
  282. package/template/apps/api/libs/infra/shared-services/uploader/index.ts +2 -0
  283. package/template/apps/api/libs/infra/shared-services/uploader/uploader.module.ts +11 -0
  284. package/template/apps/api/libs/infra/shared-services/uploader/uploader.service.ts +265 -0
  285. package/template/apps/api/libs/infra/utils/array-buffer.util.ts +8 -0
  286. package/template/apps/api/libs/infra/utils/array.util.ts +3 -0
  287. package/template/apps/api/libs/infra/utils/bcrypt.util.ts +3 -0
  288. package/template/apps/api/libs/infra/utils/bigint.util.ts +3 -0
  289. package/template/apps/api/libs/infra/utils/bytes.convert.util.ts +13 -0
  290. package/template/apps/api/libs/infra/utils/crypto.util.ts +206 -0
  291. package/template/apps/api/libs/infra/utils/download.ts +21 -0
  292. package/template/apps/api/libs/infra/utils/enviroment.util.ts +130 -0
  293. package/template/apps/api/libs/infra/utils/ffmpeg.util.ts +29 -0
  294. package/template/apps/api/libs/infra/utils/file.util.ts +448 -0
  295. package/template/apps/api/libs/infra/utils/folder.util.ts +11 -0
  296. package/template/apps/api/libs/infra/utils/frame.util.ts +24 -0
  297. package/template/apps/api/libs/infra/utils/http-client.ts +133 -0
  298. package/template/apps/api/libs/infra/utils/ip.util.ts +22 -0
  299. package/template/apps/api/libs/infra/utils/json.util.ts +3 -0
  300. package/template/apps/api/libs/infra/utils/load-env.util.ts +53 -0
  301. package/template/apps/api/libs/infra/utils/logger.util.ts +121 -0
  302. package/template/apps/api/libs/infra/utils/object.util.ts +3 -0
  303. package/template/apps/api/libs/infra/utils/package.json +11 -0
  304. package/template/apps/api/libs/infra/utils/prisma-error.util.ts +397 -0
  305. package/template/apps/api/libs/infra/utils/response.ts +23 -0
  306. package/template/apps/api/libs/infra/utils/serialize.util.ts +3 -0
  307. package/template/apps/api/libs/infra/utils/string.util.ts +3 -0
  308. package/template/apps/api/libs/infra/utils/timer.util.ts +3 -0
  309. package/template/apps/api/libs/infra/utils/urlencode.util.ts +3 -0
  310. package/template/apps/api/libs/infra/utils/validate.util.ts +3 -0
  311. package/template/apps/api/nest-cli.json +25 -0
  312. package/template/apps/api/package.json +174 -0
  313. package/template/apps/api/prisma/schema.prisma +352 -0
  314. package/template/apps/api/prisma/seed.ts +30 -0
  315. package/template/apps/api/scripts/generate-db-crud.js +344 -0
  316. package/template/apps/api/scripts/insert-country-codes.ts +325 -0
  317. package/template/apps/api/scripts/link-prisma.js +44 -0
  318. package/template/apps/api/scripts/validate-api-versions.ts +273 -0
  319. package/template/apps/api/src/app.module.ts +208 -0
  320. package/template/apps/api/src/main.ts +298 -0
  321. package/template/apps/api/src/modules/health/health.controller.ts +13 -0
  322. package/template/apps/api/src/modules/health/health.module.ts +7 -0
  323. package/template/apps/api/tsconfig.build.json +4 -0
  324. package/template/apps/api/tsconfig.json +123 -0
  325. package/template/apps/web/.env.example +5 -0
  326. package/template/apps/web/app/globals.css +27 -0
  327. package/template/apps/web/app/layout.tsx +19 -0
  328. package/template/apps/web/app/page.tsx +42 -0
  329. package/template/apps/web/hooks/useAspectRatioSize.ts +187 -0
  330. package/template/apps/web/hooks/useDebouncedValue.ts +25 -0
  331. package/template/apps/web/hooks/useErrorHandler.ts +113 -0
  332. package/template/apps/web/hooks/useHotkeys.ts +251 -0
  333. package/template/apps/web/hooks/useI18nToast.ts +240 -0
  334. package/template/apps/web/hooks/useI18nValidation.ts +262 -0
  335. package/template/apps/web/hooks/useNotificationSSE.ts +270 -0
  336. package/template/apps/web/hooks/useOperationFeedback.ts +108 -0
  337. package/template/apps/web/hooks/usePerformanceMonitor.ts +105 -0
  338. package/template/apps/web/hooks/usePermissions.ts +17 -0
  339. package/template/apps/web/hooks/useTask.ts +489 -0
  340. package/template/apps/web/hooks/useVersionCheck.ts +329 -0
  341. package/template/apps/web/i18n/config.ts +50 -0
  342. package/template/apps/web/i18n/index.ts +30 -0
  343. package/template/apps/web/i18n/navigation.ts +26 -0
  344. package/template/apps/web/i18n/request.ts +50 -0
  345. package/template/apps/web/i18n/routing.ts +21 -0
  346. package/template/apps/web/i18n/types.ts +57 -0
  347. package/template/apps/web/lib/actions/auth.ts +81 -0
  348. package/template/apps/web/lib/actions/chat.ts +129 -0
  349. package/template/apps/web/lib/actions/common.ts +13 -0
  350. package/template/apps/web/lib/actions/task.ts +20 -0
  351. package/template/apps/web/lib/agent/chat-client.ts +42 -0
  352. package/template/apps/web/lib/agent/prompts.ts +43 -0
  353. package/template/apps/web/lib/analytics/components/PageTracker.tsx +137 -0
  354. package/template/apps/web/lib/analytics/hooks/usePageTracking.ts +137 -0
  355. package/template/apps/web/lib/analytics/index.ts +180 -0
  356. package/template/apps/web/lib/api/agents.ts +7 -0
  357. package/template/apps/web/lib/api/agno-chat.ts +263 -0
  358. package/template/apps/web/lib/api/auth-server.ts +244 -0
  359. package/template/apps/web/lib/api/avatar-upload.ts +96 -0
  360. package/template/apps/web/lib/api/cache-config.ts +236 -0
  361. package/template/apps/web/lib/api/client.ts +649 -0
  362. package/template/apps/web/lib/api/contracts/client.ts +336 -0
  363. package/template/apps/web/lib/api/contracts/hooks/index.ts +25 -0
  364. package/template/apps/web/lib/api/contracts/hooks/notification.ts +180 -0
  365. package/template/apps/web/lib/api/contracts/hooks/setting.ts +33 -0
  366. package/template/apps/web/lib/api/contracts/index.ts +18 -0
  367. package/template/apps/web/lib/api/contracts/server-client.ts +145 -0
  368. package/template/apps/web/lib/api/hooks/use-python-task.ts +154 -0
  369. package/template/apps/web/lib/api/queries/analytics.ts +51 -0
  370. package/template/apps/web/lib/api/queries/message.ts +75 -0
  371. package/template/apps/web/lib/api.ts +179 -0
  372. package/template/apps/web/lib/aspect-ratio.ts +10 -0
  373. package/template/apps/web/lib/audio-buffer-queue.ts +273 -0
  374. package/template/apps/web/lib/config.ts +163 -0
  375. package/template/apps/web/lib/data/industry.json +369 -0
  376. package/template/apps/web/lib/data/region.json +501 -0
  377. package/template/apps/web/lib/errors/error-handler.ts +194 -0
  378. package/template/apps/web/lib/errors/index.ts +16 -0
  379. package/template/apps/web/lib/errors/streaming-asr-errors.ts +434 -0
  380. package/template/apps/web/lib/form/index.ts +23 -0
  381. package/template/apps/web/lib/form/use-form.ts +143 -0
  382. package/template/apps/web/lib/icons-usage.md +99 -0
  383. package/template/apps/web/lib/icons.tsx +395 -0
  384. package/template/apps/web/lib/performance/monitor.ts +225 -0
  385. package/template/apps/web/lib/requests.ts +177 -0
  386. package/template/apps/web/lib/storage/index.ts +158 -0
  387. package/template/apps/web/lib/upload/api.ts +260 -0
  388. package/template/apps/web/lib/upload/batch-uploader.ts +286 -0
  389. package/template/apps/web/lib/upload/errors.ts +44 -0
  390. package/template/apps/web/lib/upload/folder-utils.ts +295 -0
  391. package/template/apps/web/lib/upload/uploader.ts +439 -0
  392. package/template/apps/web/lib/utils/reconnect.ts +223 -0
  393. package/template/apps/web/lib/utils/transcript-export.ts +321 -0
  394. package/template/apps/web/lib/version-mismatch.ts +147 -0
  395. package/template/apps/web/lib/version.ts +60 -0
  396. package/template/apps/web/next-env.d.ts +6 -0
  397. package/template/apps/web/next.config.ts +97 -0
  398. package/template/apps/web/package.json +89 -0
  399. package/template/apps/web/providers/app-provider.tsx +45 -0
  400. package/template/apps/web/providers/index.tsx +45 -0
  401. package/template/apps/web/providers/query-provider.tsx +181 -0
  402. package/template/apps/web/providers/theme-provider.tsx +26 -0
  403. package/template/apps/web/tsconfig.json +30 -0
  404. package/template/package.json +91 -0
  405. package/template/packages/config/eslint/base.js +32 -0
  406. package/template/packages/config/eslint/next.js +134 -0
  407. package/template/packages/config/eslint/react-internal.js +41 -0
  408. package/template/packages/config/eslint.config.mjs +26 -0
  409. package/template/packages/config/eslint.nestjs.config.mjs +62 -0
  410. package/template/packages/config/index.ts +2 -0
  411. package/template/packages/config/package.json +44 -0
  412. package/template/packages/config/postcss.config.mjs +8 -0
  413. package/template/packages/config/prettier.config.mjs +14 -0
  414. package/template/packages/config/tsconfig.json +19 -0
  415. package/template/packages/config/typescript/base.json +20 -0
  416. package/template/packages/config/typescript/nextjs.json +12 -0
  417. package/template/packages/config/typescript/react-library.json +8 -0
  418. package/template/packages/constants/README.md +111 -0
  419. package/template/packages/constants/package.json +25 -0
  420. package/template/packages/constants/src/index.ts +243 -0
  421. package/template/packages/constants/tsconfig.build.json +13 -0
  422. package/template/packages/constants/tsconfig.json +12 -0
  423. package/template/packages/contracts/ERROR-MIGRATION.md +179 -0
  424. package/template/packages/contracts/README.md +203 -0
  425. package/template/packages/contracts/jest.config.js +11 -0
  426. package/template/packages/contracts/package.json +60 -0
  427. package/template/packages/contracts/src/api/analytics.contract.ts +45 -0
  428. package/template/packages/contracts/src/api/download.contract.ts +66 -0
  429. package/template/packages/contracts/src/api/index.ts +12 -0
  430. package/template/packages/contracts/src/api/message.contract.ts +70 -0
  431. package/template/packages/contracts/src/api/risk-words.contract.ts +44 -0
  432. package/template/packages/contracts/src/api/setting.contract.ts +127 -0
  433. package/template/packages/contracts/src/api/sign.contract.ts +269 -0
  434. package/template/packages/contracts/src/api/sms.contract.ts +95 -0
  435. package/template/packages/contracts/src/api/system.contract.ts +52 -0
  436. package/template/packages/contracts/src/api/task.contract.ts +58 -0
  437. package/template/packages/contracts/src/api/uploader.contract.ts +93 -0
  438. package/template/packages/contracts/src/api/user.contract.ts +60 -0
  439. package/template/packages/contracts/src/api/webhook.contract.ts +73 -0
  440. package/template/packages/contracts/src/base.ts +319 -0
  441. package/template/packages/contracts/src/errors/codes.ts +55 -0
  442. package/template/packages/contracts/src/errors/domains/common.errors.ts +212 -0
  443. package/template/packages/contracts/src/errors/domains/index.ts +7 -0
  444. package/template/packages/contracts/src/errors/domains/user.errors.ts +51 -0
  445. package/template/packages/contracts/src/errors/error-response.ts +145 -0
  446. package/template/packages/contracts/src/errors/index.ts +16 -0
  447. package/template/packages/contracts/src/errors/messages.ts +240 -0
  448. package/template/packages/contracts/src/index.ts +16 -0
  449. package/template/packages/contracts/src/schemas/analytics.schema.ts +81 -0
  450. package/template/packages/contracts/src/schemas/download.schema.ts +59 -0
  451. package/template/packages/contracts/src/schemas/index.ts +18 -0
  452. package/template/packages/contracts/src/schemas/message.schema.ts +83 -0
  453. package/template/packages/contracts/src/schemas/risk-words.schema.ts +25 -0
  454. package/template/packages/contracts/src/schemas/setting.schema.ts +84 -0
  455. package/template/packages/contracts/src/schemas/sign.schema.ts +171 -0
  456. package/template/packages/contracts/src/schemas/sms.schema.ts +53 -0
  457. package/template/packages/contracts/src/schemas/sse.schema.ts +30 -0
  458. package/template/packages/contracts/src/schemas/system.schema.ts +26 -0
  459. package/template/packages/contracts/src/schemas/tag.schema.ts +65 -0
  460. package/template/packages/contracts/src/schemas/task.schema.ts +47 -0
  461. package/template/packages/contracts/src/schemas/uploader.schema.ts +121 -0
  462. package/template/packages/contracts/src/schemas/user.schema.ts +75 -0
  463. package/template/packages/contracts/src/schemas/webhook.schema.ts +72 -0
  464. package/template/packages/contracts/tsconfig.build.json +20 -0
  465. package/template/packages/contracts/tsconfig.json +12 -0
  466. package/template/packages/types/README.md +143 -0
  467. package/template/packages/types/ai.ts +30 -0
  468. package/template/packages/types/auth.ts +99 -0
  469. package/template/packages/types/common.ts +13 -0
  470. package/template/packages/types/creative.ts +68 -0
  471. package/template/packages/types/image-factory.ts +122 -0
  472. package/template/packages/types/index.ts +8 -0
  473. package/template/packages/types/package.json +21 -0
  474. package/template/packages/types/task.ts +27 -0
  475. package/template/packages/types/tsconfig.json +11 -0
  476. package/template/packages/ui/README.md +30 -0
  477. package/template/packages/ui/components.json +22 -0
  478. package/template/packages/ui/eslint.config.js +4 -0
  479. package/template/packages/ui/package.json +58 -0
  480. package/template/packages/ui/postcss.config.mjs +6 -0
  481. package/template/packages/ui/src/components/accordion.tsx +66 -0
  482. package/template/packages/ui/src/components/alert.tsx +61 -0
  483. package/template/packages/ui/src/components/avatar.tsx +57 -0
  484. package/template/packages/ui/src/components/badge.tsx +38 -0
  485. package/template/packages/ui/src/components/button.tsx +60 -0
  486. package/template/packages/ui/src/components/calendar.tsx +71 -0
  487. package/template/packages/ui/src/components/card.tsx +92 -0
  488. package/template/packages/ui/src/components/carousel.tsx +241 -0
  489. package/template/packages/ui/src/components/checkbox.tsx +32 -0
  490. package/template/packages/ui/src/components/command.tsx +184 -0
  491. package/template/packages/ui/src/components/dialog.tsx +134 -0
  492. package/template/packages/ui/src/components/dropdown-menu.tsx +257 -0
  493. package/template/packages/ui/src/components/empty.tsx +104 -0
  494. package/template/packages/ui/src/components/field.tsx +248 -0
  495. package/template/packages/ui/src/components/form.tsx +172 -0
  496. package/template/packages/ui/src/components/input-group.tsx +170 -0
  497. package/template/packages/ui/src/components/input.tsx +21 -0
  498. package/template/packages/ui/src/components/item.tsx +193 -0
  499. package/template/packages/ui/src/components/label.tsx +24 -0
  500. package/template/packages/ui/src/components/password-strength.tsx +248 -0
  501. package/template/packages/ui/src/components/popover.tsx +48 -0
  502. package/template/packages/ui/src/components/progress.tsx +35 -0
  503. package/template/packages/ui/src/components/scroll-area.tsx +48 -0
  504. package/template/packages/ui/src/components/select.tsx +190 -0
  505. package/template/packages/ui/src/components/separator.tsx +28 -0
  506. package/template/packages/ui/src/components/sheet.tsx +139 -0
  507. package/template/packages/ui/src/components/sidebar.tsx +729 -0
  508. package/template/packages/ui/src/components/skeleton.tsx +13 -0
  509. package/template/packages/ui/src/components/slider.tsx +87 -0
  510. package/template/packages/ui/src/components/sonner.tsx +40 -0
  511. package/template/packages/ui/src/components/switch.tsx +31 -0
  512. package/template/packages/ui/src/components/tabs.tsx +66 -0
  513. package/template/packages/ui/src/components/textarea.tsx +18 -0
  514. package/template/packages/ui/src/components/tooltip.tsx +61 -0
  515. package/template/packages/ui/src/hooks/use-mobile.ts +21 -0
  516. package/template/packages/ui/src/index.ts +38 -0
  517. package/template/packages/ui/src/lib/utils.ts +6 -0
  518. package/template/packages/ui/src/styles/globals.css +134 -0
  519. package/template/packages/ui/tsconfig.json +11 -0
  520. package/template/packages/ui/tsconfig.lint.json +8 -0
  521. package/template/packages/utils/README.md +173 -0
  522. package/template/packages/utils/array.util.ts +335 -0
  523. package/template/packages/utils/bcrypt.util.ts +10 -0
  524. package/template/packages/utils/bigint.util.ts +111 -0
  525. package/template/packages/utils/cn.ts +6 -0
  526. package/template/packages/utils/encrypt.ts +104 -0
  527. package/template/packages/utils/fetch.ts +170 -0
  528. package/template/packages/utils/file.ts +275 -0
  529. package/template/packages/utils/headers.ts +116 -0
  530. package/template/packages/utils/index.ts +22 -0
  531. package/template/packages/utils/jest.config.js +28 -0
  532. package/template/packages/utils/json.util.ts +9 -0
  533. package/template/packages/utils/mask.util.ts +348 -0
  534. package/template/packages/utils/object.util.ts +149 -0
  535. package/template/packages/utils/package.json +112 -0
  536. package/template/packages/utils/serialize.util.ts +17 -0
  537. package/template/packages/utils/string.util.ts +159 -0
  538. package/template/packages/utils/timer.util.ts +210 -0
  539. package/template/packages/utils/tsconfig.build.json +17 -0
  540. package/template/packages/utils/tsconfig.json +13 -0
  541. package/template/packages/utils/urlencode.util.ts +18 -0
  542. package/template/packages/utils/validate.util.ts +25 -0
  543. package/template/packages/validators/README.md +149 -0
  544. package/template/packages/validators/jest.config.js +20 -0
  545. package/template/packages/validators/package.json +32 -0
  546. package/template/packages/validators/src/index.ts +178 -0
  547. package/template/packages/validators/tsconfig.build.json +19 -0
  548. package/template/packages/validators/tsconfig.json +12 -0
  549. package/template/pnpm-lock.yaml +21574 -0
  550. package/template/pnpm-workspace.yaml +4 -0
  551. package/template/scripts/generate-i18n-errors.ts +371 -0
  552. package/template/scripts/generate-prisma-enums.js +170 -0
  553. package/template/scripts/generate-prisma-enums.ts +172 -0
  554. package/template/scripts/init-project.js +232 -0
  555. package/template/turbo.json +55 -0
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @repo/contracts
3
+ * Shared API contracts between frontend and backend using ts-rest
4
+ */
5
+
6
+ // Base types and utilities
7
+ export * from './base';
8
+
9
+ // Zod schemas
10
+ export * from './schemas';
11
+
12
+ // API contracts
13
+ export * from './api';
14
+
15
+ // Error codes and types
16
+ export * from './errors';
@@ -0,0 +1,81 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Analytics Event Types
5
+ * 定义所有可追踪的事件类型
6
+ */
7
+ export const AnalyticsEventTypeSchema = z.enum([
8
+ // Page View Events
9
+ 'PAGE_VIEW',
10
+
11
+ // User Engagement Events
12
+ 'SESSION_START', // 会话开始
13
+ 'SESSION_END', // 会话结束
14
+ 'APP_BACKGROUND', // 应用进入后台
15
+ 'APP_FOREGROUND', // 应用回到前台
16
+ ]);
17
+
18
+ export type AnalyticsEventType = z.infer<typeof AnalyticsEventTypeSchema>;
19
+
20
+ /**
21
+ * Base Analytics Event Properties
22
+ * 所有事件的基础属性
23
+ */
24
+ export const BaseEventPropertiesSchema = z.object({
25
+ timestamp: z.number().optional(), // Unix timestamp (ms)
26
+ sessionId: z.string().optional(), // 会话ID
27
+ userId: z.string().optional(), // 用户ID
28
+ locale: z.string().optional(), // 语言环境 (en, zh)
29
+ platform: z.string().optional(), // 平台 (web, ios, android)
30
+ userAgent: z.string().optional(), // User Agent
31
+ referrer: z.string().optional(), // 来源页面
32
+ });
33
+
34
+ /**
35
+ * Page View Event Properties
36
+ */
37
+ export const PageViewPropertiesSchema = BaseEventPropertiesSchema.extend({
38
+ path: z.string(), // 页面路径
39
+ title: z.string().optional(), // 页面标题
40
+ });
41
+
42
+ /**
43
+ * Union of all event properties
44
+ */
45
+ export const EventPropertiesSchema = z.union([
46
+ BaseEventPropertiesSchema,
47
+ PageViewPropertiesSchema,
48
+ ]);
49
+
50
+ export type EventProperties = z.infer<typeof EventPropertiesSchema>;
51
+
52
+ /**
53
+ * Analytics Event Schema
54
+ * 完整的事件数据结构
55
+ */
56
+ export const AnalyticsEventSchema = z.object({
57
+ event: AnalyticsEventTypeSchema,
58
+ properties: EventPropertiesSchema.optional(),
59
+ });
60
+
61
+ export type AnalyticsEvent = z.infer<typeof AnalyticsEventSchema>;
62
+
63
+ /**
64
+ * Batch Analytics Events Schema
65
+ * 批量上报事件
66
+ */
67
+ export const BatchAnalyticsEventsSchema = z.object({
68
+ events: z.array(AnalyticsEventSchema),
69
+ });
70
+
71
+ export type BatchAnalyticsEvents = z.infer<typeof BatchAnalyticsEventsSchema>;
72
+
73
+ /**
74
+ * Analytics Response Schema
75
+ */
76
+ export const AnalyticsResponseSchema = z.object({
77
+ success: z.boolean(),
78
+ eventsProcessed: z.number().optional(),
79
+ });
80
+
81
+ export type AnalyticsResponse = z.infer<typeof AnalyticsResponseSchema>;
@@ -0,0 +1,59 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Download-related Zod schemas
5
+ */
6
+
7
+ // Operation type for file download
8
+ export const DownloadOperationTypeSchema = z.enum([
9
+ 'fileViewOp',
10
+ 'fileDownloadOp',
11
+ ]);
12
+
13
+ export type DownloadOperationType = z.infer<typeof DownloadOperationTypeSchema>;
14
+
15
+ // Single file download params
16
+ export const DownloadFileParamsSchema = z.object({
17
+ spaceId: z.string().uuid(),
18
+ fileId: z.string().uuid(),
19
+ });
20
+
21
+ export type DownloadFileParams = z.infer<typeof DownloadFileParamsSchema>;
22
+
23
+ // Single file download query
24
+ export const DownloadFileQuerySchema = z.object({
25
+ operationType:
26
+ DownloadOperationTypeSchema.optional().default('fileDownloadOp'),
27
+ });
28
+
29
+ export type DownloadFileQuery = z.infer<typeof DownloadFileQuerySchema>;
30
+
31
+ // Single file download response
32
+ export const DownloadFileResponseSchema = z.object({
33
+ url: z.string().url(),
34
+ filename: z.string().optional(),
35
+ contentType: z.string().optional(),
36
+ size: z.number().optional(),
37
+ });
38
+
39
+ export type DownloadFileResponse = z.infer<typeof DownloadFileResponseSchema>;
40
+
41
+ // Batch download request body
42
+ export const BatchDownloadRequestSchema = z.object({
43
+ spaceId: z.string().uuid(),
44
+ // folderId can be "root" (special value for space root) or a UUID
45
+ folderId: z.union([z.literal('root'), z.string().uuid()]).optional(),
46
+ fileId: z.string().uuid().optional(),
47
+ fileSystemIds: z.array(z.string().uuid()).optional(),
48
+ });
49
+
50
+ export type BatchDownloadRequest = z.infer<typeof BatchDownloadRequestSchema>;
51
+
52
+ // Batch download response
53
+ export const BatchDownloadResponseSchema = z.object({
54
+ url: z.string().url(),
55
+ filename: z.string().optional(),
56
+ expiresAt: z.coerce.date().optional(),
57
+ });
58
+
59
+ export type BatchDownloadResponse = z.infer<typeof BatchDownloadResponseSchema>;
@@ -0,0 +1,18 @@
1
+ // Auto-generated Prisma enums (source of truth)
2
+ export * from './prisma-enums.generated';
3
+
4
+ // Domain schemas (alphabetically ordered)
5
+ export * from './analytics.schema';
6
+ export * from './download.schema';
7
+ export * from './message.schema';
8
+ export * from './risk-words.schema';
9
+ export * from './setting.schema';
10
+ export * from './sign.schema';
11
+ export * from './sms.schema';
12
+ export * from './sse.schema';
13
+ export * from './system.schema';
14
+ export * from './tag.schema';
15
+ export * from './task.schema';
16
+ export * from './uploader.schema';
17
+ export * from './user.schema';
18
+ export * from './webhook.schema';
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Message API Schemas
3
+ * 消息相关的 Zod Schema 定义
4
+ */
5
+
6
+ import { z } from 'zod';
7
+ import { PaginationQuerySchema, PaginatedResponseSchema } from '../base';
8
+
9
+ // ============================================================================
10
+ // Message Schemas - 消息
11
+ // ============================================================================
12
+
13
+ /**
14
+ * 消息内容 Schema
15
+ */
16
+ export const MessageContentSchema = z.object({
17
+ id: z.string(),
18
+ type: z.string(),
19
+ content: z.any(),
20
+ });
21
+
22
+ export type MessageContent = z.infer<typeof MessageContentSchema>;
23
+
24
+ /**
25
+ * 消息接收者 Schema
26
+ */
27
+ export const MessageReceiverSchema = z.object({
28
+ id: z.string(),
29
+ nickname: z.string().nullable(),
30
+ headerImg: z.string().nullable(),
31
+ });
32
+
33
+ export type MessageReceiver = z.infer<typeof MessageReceiverSchema>;
34
+
35
+ /**
36
+ * 消息接收记录 Schema
37
+ */
38
+ export const MessageRecipientSchema = z.object({
39
+ id: z.string(),
40
+ createdAt: z.coerce.date(),
41
+ isRead: z.boolean(),
42
+ readAt: z.coerce.date().nullable(),
43
+ message: MessageContentSchema,
44
+ receiver: MessageReceiverSchema,
45
+ });
46
+
47
+ export type MessageRecipient = z.infer<typeof MessageRecipientSchema>;
48
+
49
+ /**
50
+ * 消息列表响应 Schema - 使用标准 PaginatedResponseSchema
51
+ */
52
+ export const MessageListResponseSchema = PaginatedResponseSchema(
53
+ MessageRecipientSchema,
54
+ );
55
+
56
+ export type MessageListResponse = z.infer<typeof MessageListResponseSchema>;
57
+
58
+ /**
59
+ * 消息列表查询参数 Schema
60
+ */
61
+ export const MessageListQuerySchema = PaginationQuerySchema.extend({
62
+ read: z.string().optional(),
63
+ });
64
+
65
+ export type MessageListQuery = z.infer<typeof MessageListQuerySchema>;
66
+
67
+ /**
68
+ * 设置消息已读请求 Schema
69
+ */
70
+ export const SetMessageReadRequestSchema = z.object({
71
+ messageIds: z.array(z.string()),
72
+ });
73
+
74
+ export type SetMessageReadRequest = z.infer<typeof SetMessageReadRequestSchema>;
75
+
76
+ /**
77
+ * 未读消息数量响应 Schema
78
+ */
79
+ export const UnreadCountResponseSchema = z.object({
80
+ total: z.number(),
81
+ });
82
+
83
+ export type UnreadCountResponse = z.infer<typeof UnreadCountResponseSchema>;
@@ -0,0 +1,25 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Risk Words-related Zod schemas
5
+ */
6
+
7
+ // Check risk word request
8
+ export const CheckRiskWordRequestSchema = z.object({
9
+ text: z.string().min(1),
10
+ });
11
+
12
+ // Volcengine risk word detection request
13
+ export const VolcengineRiskWordDetectionRequestSchema = z.object({
14
+ text: z.string().min(1),
15
+ account_id: z.string().min(1),
16
+ biztype: z.string().optional(),
17
+ operate_time: z.number().optional(),
18
+ });
19
+
20
+ // Risk word check response (task result - can be any)
21
+ export const CheckRiskWordResponseSchema = z.any();
22
+
23
+ // Volcengine detection response (can be any)
24
+ export const VolcengineRiskWordDetectionResponseSchema = z.any();
25
+
@@ -0,0 +1,84 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Setting-related Zod schemas
5
+ */
6
+
7
+ // Send verify email request
8
+ export const SendVerifyEmailRequestSchema = z.object({
9
+ email: z.string().email(),
10
+ });
11
+
12
+ // Setting account request
13
+ export const SettingAccountRequestSchema = z.object({
14
+ nickname: z.string().min(1),
15
+ code: z.string().min(1).optional(),
16
+ email: z.string().email().optional(),
17
+ emailCode: z.string().optional(),
18
+ mobile: z.string().optional(),
19
+ mobileCode: z.string().optional(),
20
+ oldPassword: z.string().optional(),
21
+ newPassword: z.string().optional(),
22
+ });
23
+
24
+ // Set password request
25
+ export const SetPasswordRequestSchema = z.object({
26
+ newPassword: z.string().min(6),
27
+ });
28
+
29
+ // Brand schema
30
+ export const BrandSchema = z.object({
31
+ id: z.string().uuid(),
32
+ appearance: z.number().optional().nullable(),
33
+ domain: z.string().optional().nullable(),
34
+ logo: z.string().optional().nullable(),
35
+ wallpaperDomain: z.string().optional().nullable(),
36
+ wallpaper: z.string().optional().nullable(),
37
+ });
38
+
39
+ // Brand setting request
40
+ export const BrandSettingRequestSchema = z.object({
41
+ appearance: z.number().optional(),
42
+ domain: z.string().optional(),
43
+ logo: z.string().optional(),
44
+ wallpaperDomain: z.string().optional(),
45
+ wallpaper: z.string().optional(),
46
+ });
47
+
48
+ // Usage response schema
49
+ export const UsageResponseSchema = z.object({
50
+ storageUsed: z.number().optional(),
51
+ storageLimit: z.number().optional(),
52
+ aiCreditsUsed: z.number().optional(),
53
+ aiCreditsLimit: z.number().optional(),
54
+ });
55
+
56
+ // Email verify request (for binding)
57
+ export const EmailVerifyRequestSchema = z.object({
58
+ email: z.string().email(),
59
+ code: z.string().min(1),
60
+ });
61
+
62
+ // Mobile login request (for binding)
63
+ export const MobileLoginRequestSchema = z.object({
64
+ mobile: z.string().regex(/^1[3-9]\d{9}$/),
65
+ code: z.string().min(1),
66
+ });
67
+
68
+ // Update avatar request
69
+ export const UpdateAvatarRequestSchema = z.object({
70
+ avatarFileId: z.string().uuid(),
71
+ });
72
+
73
+ // Inferred types
74
+ export type SendVerifyEmailRequest = z.infer<
75
+ typeof SendVerifyEmailRequestSchema
76
+ >;
77
+ export type SettingAccountRequest = z.infer<typeof SettingAccountRequestSchema>;
78
+ export type SetPasswordRequest = z.infer<typeof SetPasswordRequestSchema>;
79
+ export type Brand = z.infer<typeof BrandSchema>;
80
+ export type BrandSettingRequest = z.infer<typeof BrandSettingRequestSchema>;
81
+ export type UsageResponse = z.infer<typeof UsageResponseSchema>;
82
+ export type EmailVerifyRequest = z.infer<typeof EmailVerifyRequestSchema>;
83
+ export type MobileLoginRequest = z.infer<typeof MobileLoginRequestSchema>;
84
+ export type UpdateAvatarRequest = z.infer<typeof UpdateAvatarRequestSchema>;
@@ -0,0 +1,171 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Sign/Auth API Schemas
5
+ * 登录认证相关的 Zod Schema 定义
6
+ */
7
+
8
+ // ============================================================================
9
+ // Request Schemas
10
+ // ============================================================================
11
+
12
+ /**
13
+ * Email 登录请求
14
+ */
15
+ export const EmailLoginSchema = z.object({
16
+ email: z.string().email('请输入有效的邮箱地址'),
17
+ password: z.string().min(6, '密码至少6个字符'),
18
+ });
19
+ export type EmailLogin = z.infer<typeof EmailLoginSchema>;
20
+
21
+ /**
22
+ * 手机号密码登录请求
23
+ */
24
+ export const MobilePasswordLoginSchema = z.object({
25
+ mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
26
+ password: z.string().min(6, '密码至少6个字符'),
27
+ });
28
+ export type MobilePasswordLogin = z.infer<typeof MobilePasswordLoginSchema>;
29
+
30
+ /**
31
+ * 手机号验证码登录请求
32
+ */
33
+ export const MobileCodeLoginSchema = z.object({
34
+ mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
35
+ code: z.string().min(4, '请输入验证码'),
36
+ });
37
+ export type MobileCodeLogin = z.infer<typeof MobileCodeLoginSchema>;
38
+
39
+ /**
40
+ * Email 注册请求
41
+ */
42
+ export const EmailRegisterSchema = z.object({
43
+ email: z.string().email('请输入有效的邮箱地址'),
44
+ password: z.string().min(6, '密码至少6个字符'),
45
+ name: z.string().optional(),
46
+ });
47
+ export type EmailRegister = z.infer<typeof EmailRegisterSchema>;
48
+
49
+ /**
50
+ * 手机号注册请求
51
+ */
52
+ export const MobileRegisterSchema = z.object({
53
+ mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
54
+ password: z.string().min(6, '密码至少6个字符'),
55
+ name: z.string().optional(),
56
+ code: z.string().min(4, '请输入验证码'),
57
+ });
58
+ export type MobileRegister = z.infer<typeof MobileRegisterSchema>;
59
+
60
+ /**
61
+ * Email 验证请求
62
+ */
63
+ export const EmailVerifySchema = z.object({
64
+ email: z.string().email('请输入有效的邮箱地址'),
65
+ code: z.string().min(4, '请输入验证码'),
66
+ });
67
+ export type EmailVerify = z.infer<typeof EmailVerifySchema>;
68
+
69
+ /**
70
+ * 手机号验证请求
71
+ */
72
+ export const MobileVerifySchema = z.object({
73
+ mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
74
+ code: z.string().min(4, '请输入验证码'),
75
+ });
76
+ export type MobileVerify = z.infer<typeof MobileVerifySchema>;
77
+
78
+ /**
79
+ * 发送验证码请求
80
+ */
81
+ export const SendCodeSchema = z.object({
82
+ mobile: z.string().regex(/^1[3-9]\d{9}$/, '请输入有效的手机号'),
83
+ });
84
+ export type SendCode = z.infer<typeof SendCodeSchema>;
85
+
86
+ /**
87
+ * 发送邮箱验证码请求
88
+ */
89
+ export const SendEmailCodeSchema = z.object({
90
+ email: z.string().email('请输入有效的邮箱地址'),
91
+ });
92
+ export type SendEmailCode = z.infer<typeof SendEmailCodeSchema>;
93
+
94
+ /**
95
+ * 刷新 Token 请求
96
+ */
97
+ export const RefreshTokenSchema = z.object({
98
+ refresh: z.string().min(1, '请提供 refresh token'),
99
+ });
100
+ export type RefreshToken = z.infer<typeof RefreshTokenSchema>;
101
+
102
+ // ============================================================================
103
+ // Response Schemas
104
+ // ============================================================================
105
+
106
+ export const PlanSchema = z.object({
107
+ id: z.string(),
108
+ type: z.string(),
109
+ name: z.string(),
110
+ duration: z.number(),
111
+ });
112
+ export type Plan = z.infer<typeof PlanSchema>;
113
+
114
+ /**
115
+ * 用户基本信息
116
+ */
117
+ export const UserInfoSchema = z.object({
118
+ id: z.string(),
119
+ isAnonymity: z.boolean().optional(),
120
+ isAdmin: z.boolean().optional(),
121
+ code: z.string().nullable(),
122
+ nickname: z.string().nullable(),
123
+ headerImg: z.string().nullable(),
124
+ sex: z.string().nullable(),
125
+ /** 手机号(已脱敏) */
126
+ mobile: z.string().nullable().optional(),
127
+ /** 邮箱(已脱敏) */
128
+ email: z.string().nullable().optional(),
129
+ });
130
+ export type UserInfo = z.infer<typeof UserInfoSchema>;
131
+
132
+ /**
133
+ * 登录成功响应
134
+ */
135
+ export const LoginSuccessSchema = z.object({
136
+ access: z.string(),
137
+ refresh: z.string(),
138
+ expire: z.number(),
139
+ accessExpire: z.number(),
140
+ isAnonymity: z.boolean().optional(),
141
+ user: UserInfoSchema,
142
+ });
143
+ export type LoginSuccess = z.infer<typeof LoginSuccessSchema>;
144
+
145
+ /**
146
+ * 注册成功响应 - Email
147
+ */
148
+ export const EmailAccountSchema = z.object({
149
+ id: z.string(),
150
+ email: z.string(),
151
+ validator: z.boolean(),
152
+ });
153
+ export type EmailAccount = z.infer<typeof EmailAccountSchema>;
154
+
155
+ /**
156
+ * 注册成功响应 - Mobile
157
+ */
158
+ export const MobileAccountSchema = z.object({
159
+ id: z.string(),
160
+ mobile: z.string(),
161
+ validator: z.boolean(),
162
+ });
163
+ export type MobileAccount = z.infer<typeof MobileAccountSchema>;
164
+
165
+ /**
166
+ * 登出成功响应
167
+ */
168
+ export const SignOutSuccessSchema = z.object({
169
+ success: z.boolean(),
170
+ });
171
+ export type SignOutSuccess = z.infer<typeof SignOutSuccessSchema>;
@@ -0,0 +1,53 @@
1
+ import { z } from 'zod';
2
+ import { LoginSuccessSchema } from './sign.schema';
3
+
4
+ /**
5
+ * SMS-related Zod schemas
6
+ */
7
+
8
+ // Send SMS code request
9
+ export const SendSmsCodeRequestSchema = z.object({
10
+ phoneNumbers: z.string().regex(/^1[3-9]\d{9}$/, 'Invalid phone number'),
11
+ });
12
+
13
+ // Check verify code request
14
+ export const CheckVerifyCodeRequestSchema = z.object({
15
+ phoneNumber: z.string().regex(/^1[3-9]\d{9}$/, 'Invalid phone number'),
16
+ code: z.string().regex(/^\d{4,6}$/, 'Code should be 4-6 digits'),
17
+ });
18
+
19
+ // Mobile code send request
20
+ export const MobileCodeSendRequestSchema = z.object({
21
+ mobile: z.string().regex(/^1[3-9]\d{9}$/, 'Invalid phone number'),
22
+ iddCode: z.string().optional().default('0086'),
23
+ });
24
+
25
+ // Mobile login request (SMS)
26
+ export const SmsMobileLoginRequestSchema = z.object({
27
+ mobile: z.string().regex(/^1[3-9]\d{9}$/, 'Invalid phone number'),
28
+ code: z.string().min(1),
29
+ });
30
+
31
+ // Send SMS code response
32
+ export const SendSmsCodeResponseSchema = z.object({
33
+ success: z.boolean(),
34
+ message: z.string().optional(),
35
+ });
36
+
37
+ // Check verify code response
38
+ export const CheckVerifyCodeResponseSchema = z.object({
39
+ success: z.boolean(),
40
+ result: z.string().optional(),
41
+ });
42
+
43
+ // Send login code response
44
+ export const SendLoginCodeResponseSchema = z.object({
45
+ success: z.boolean(),
46
+ message: z.string().optional(),
47
+ });
48
+
49
+ // Send register code response
50
+ export const SendRegisterCodeResponseSchema = z.object({
51
+ phoneNumber: z.string(),
52
+ expireTime: z.number(),
53
+ });
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Meeting SSE Event Schema
5
+ *
6
+ * @description P1 优化:统一的会议相关 SSE 事件格式
7
+ * 用于转写、摘要生成、知识提取等会议相关任务的实时状态推送
8
+ */
9
+ export const MeetingSSEEventSchema = z.object({
10
+ /** 事件类型 */
11
+ type: z.enum(['transcription', 'summary']),
12
+ /** 会议 ID */
13
+ meetingId: z.string().uuid(),
14
+ /** 任务状态 */
15
+ status: z.enum(['processing', 'success', 'error']),
16
+ /** 事件数据(可选) */
17
+ data: z.any().optional(),
18
+ /** 错误信息(可选,仅在 status='error' 时存在) */
19
+ error: z.string().optional(),
20
+ /** 时间戳(毫秒) */
21
+ timestamp: z.number(),
22
+ /** 任务 ID(可选,用于关联 Python Task) */
23
+ taskId: z.string().uuid().optional(),
24
+ /** 进度(0-100,可选) */
25
+ progress: z.number().min(0).max(100).optional(),
26
+ /** 当前步骤描述(可选) */
27
+ currentStep: z.string().optional(),
28
+ });
29
+
30
+ export type MeetingSSEEvent = z.infer<typeof MeetingSSEEventSchema>;
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * System-related Zod schemas
5
+ */
6
+
7
+ // Permission config response
8
+ export const PermissionConfigResponseSchema = z.object({
9
+ role: z.array(z.enum(['owner', 'admin', 'member', 'guest'])),
10
+ });
11
+
12
+ // Service ready response
13
+ export const ServiceReadyResponseSchema = z.literal('ready');
14
+
15
+ // Health check details
16
+ export const HealthCheckDetailsSchema = z.object({
17
+ db: z.enum(['healthy', 'unhealthy']),
18
+ rabbitmq: z.enum(['healthy', 'unhealthy']),
19
+ redis: z.enum(['healthy', 'unhealthy']),
20
+ });
21
+
22
+ // Health check response
23
+ export const HealthCheckResponseSchema = z.object({
24
+ status: z.enum(['healthy', 'unhealthy']),
25
+ details: HealthCheckDetailsSchema,
26
+ });