@stackonward/cli 0.0.1 → 1.0.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 (638) hide show
  1. package/dist/index.js +4588 -205
  2. package/dist/index.js.map +1 -1
  3. package/dist/resources/apple/.claude/docs/architecture-template.md +54 -0
  4. package/dist/resources/apple/.claude/docs/architecture.md +52 -0
  5. package/dist/resources/apple/.claude/docs/index.md +13 -0
  6. package/dist/resources/apple/.claude/docs/security-lifecycle.md +57 -0
  7. package/dist/resources/apple/.claude/docs/stack.md +93 -0
  8. package/dist/resources/apple/.claude/docs/verification.md +63 -0
  9. package/dist/resources/apple/AGENTS.md +397 -0
  10. package/dist/resources/apple/CLAUDE.md +397 -0
  11. package/dist/resources/apple/Gemfile +2 -0
  12. package/dist/resources/apple/Gemfile.lock +365 -0
  13. package/dist/resources/apple/_gitignore +14 -0
  14. package/dist/resources/apple/fastlane/Fastfile +123 -0
  15. package/dist/resources/components/nuxt/site-source/app/app.vue +42 -0
  16. package/dist/resources/components/nuxt/site-source/app/assets/css/site-shell.css +1035 -0
  17. package/dist/resources/components/nuxt/site-source/app/assets/icons/brand/.gitkeep +0 -0
  18. package/dist/resources/components/nuxt/site-source/app/assets/icons/common/.gitkeep +0 -0
  19. package/dist/resources/components/nuxt/site-source/app/components/site/ApplicationHeader.vue +35 -0
  20. package/dist/resources/components/nuxt/site-source/app/components/site/ApplicationShell.vue +56 -0
  21. package/dist/resources/components/nuxt/site-source/app/components/site/ApplicationSidebar.vue +40 -0
  22. package/dist/resources/components/nuxt/site-source/app/components/site/BackToTop.vue +42 -0
  23. package/dist/resources/components/nuxt/site-source/app/components/site/ContentArticlePage.vue +40 -0
  24. package/dist/resources/components/nuxt/site-source/app/components/site/ContentListPage.vue +30 -0
  25. package/dist/resources/components/nuxt/site-source/app/components/site/CookieConsent.vue +18 -0
  26. package/dist/resources/components/nuxt/site-source/app/components/site/MarketingFooter.vue +52 -0
  27. package/dist/resources/components/nuxt/site-source/app/components/site/MarketingHeader.vue +106 -0
  28. package/dist/resources/components/nuxt/site-source/app/components/site/MarketingShell.vue +35 -0
  29. package/dist/resources/components/nuxt/site-source/app/components/site/SiteBrand.vue +10 -0
  30. package/dist/resources/components/nuxt/site-source/app/components/site/StaticPage.vue +21 -0
  31. package/dist/resources/components/nuxt/site-source/app/components/site/ToastViewport.vue +25 -0
  32. package/dist/resources/components/nuxt/site-source/app/components/ui/BaseButton.vue +86 -0
  33. package/dist/resources/components/nuxt/site-source/app/components/ui/BaseGradientBorder.vue +59 -0
  34. package/dist/resources/components/nuxt/site-source/app/components/ui/BaseModal.vue +131 -0
  35. package/dist/resources/components/nuxt/site-source/app/components/ui/BasePopover.vue +150 -0
  36. package/dist/resources/components/nuxt/site-source/app/components/ui/BaseText.vue +138 -0
  37. package/dist/resources/components/nuxt/site-source/app/components/ui/CheckoutStatus.vue +112 -0
  38. package/dist/resources/components/nuxt/site-source/app/components/ui/CheckoutSummary.vue +172 -0
  39. package/dist/resources/components/nuxt/site-source/app/components/ui/GoogleSignInButton.vue +113 -0
  40. package/dist/resources/components/nuxt/site-source/app/components/ui/InfiniteScroll.vue +123 -0
  41. package/dist/resources/components/nuxt/site-source/app/components/ui/YoutubeEmbed.vue +126 -0
  42. package/dist/resources/components/nuxt/site-source/app/composables/useAnalytics.ts +24 -0
  43. package/dist/resources/components/nuxt/site-source/app/composables/useCheckout.ts +121 -0
  44. package/dist/resources/components/nuxt/site-source/app/composables/useConsent.ts +31 -0
  45. package/dist/resources/components/nuxt/site-source/app/composables/useGoogleIdentity.ts +163 -0
  46. package/dist/resources/components/nuxt/site-source/app/composables/useNavigation.ts +11 -0
  47. package/dist/resources/components/nuxt/site-source/app/composables/useSeo.ts +33 -0
  48. package/dist/resources/components/nuxt/site-source/app/composables/useSiteShell.ts +58 -0
  49. package/dist/resources/components/nuxt/site-source/app/composables/useToasts.ts +48 -0
  50. package/dist/resources/components/nuxt/site-source/app/layouts/app.vue +5 -0
  51. package/dist/resources/components/nuxt/site-source/app/layouts/default.vue +5 -0
  52. package/dist/resources/components/nuxt/site-source/app/plugins/analytics.client.ts +121 -0
  53. package/dist/resources/components/nuxt/site-source/app/plugins/google-identity.client.ts +24 -0
  54. package/dist/resources/components/nuxt/site-source/app/theme/accordion.ts +9 -0
  55. package/dist/resources/components/nuxt/site-source/app/theme/breadcrumb.ts +8 -0
  56. package/dist/resources/components/nuxt/site-source/app/theme/button.ts +92 -0
  57. package/dist/resources/components/nuxt/site-source/app/theme/carousel.ts +11 -0
  58. package/dist/resources/components/nuxt/site-source/app/theme/checkbox.ts +12 -0
  59. package/dist/resources/components/nuxt/site-source/app/theme/index.ts +30 -0
  60. package/dist/resources/components/nuxt/site-source/app/theme/input.ts +47 -0
  61. package/dist/resources/components/nuxt/site-source/app/theme/modal.ts +9 -0
  62. package/dist/resources/components/nuxt/site-source/app/theme/pagination.ts +6 -0
  63. package/dist/resources/components/nuxt/site-source/app/theme/select.ts +23 -0
  64. package/dist/resources/components/nuxt/site-source/app/theme/stepper.ts +10 -0
  65. package/dist/resources/components/nuxt/site-source/app/theme/toast.ts +8 -0
  66. package/dist/resources/components/nuxt/site-source/app/theme/tooltip.ts +6 -0
  67. package/dist/resources/components/nuxt/site-source/app/types/site-shell.ts +85 -0
  68. package/dist/resources/components/react/ui/Button.tsx +73 -0
  69. package/dist/resources/components/react/ui/Input.tsx +44 -0
  70. package/dist/resources/components/registry.json +355 -0
  71. package/dist/resources/components/vue/feedback/Toast.vue +120 -0
  72. package/dist/resources/components/vue/feedback/useToast.ts +70 -0
  73. package/dist/resources/components/vue/media/FileUpload.vue +229 -0
  74. package/dist/resources/components/vue/media/VideoPlayer.vue +157 -0
  75. package/dist/resources/components/vue/ui/AppImage.vue +147 -0
  76. package/dist/resources/components/vue/ui/BottomSheet.vue +217 -0
  77. package/dist/resources/components/vue/ui/Button.vue +154 -0
  78. package/dist/resources/components/vue/ui/Card.vue +111 -0
  79. package/dist/resources/components/vue/ui/Input.vue +113 -0
  80. package/dist/resources/components/vue/ui/Modal.vue +193 -0
  81. package/dist/resources/components/vue/ui/ScrollArea.vue +163 -0
  82. package/dist/resources/components/vue/ui/Tooltip.vue +115 -0
  83. package/dist/resources/registry.json +158 -0
  84. package/dist/resources/snippets/node/cache.ts +116 -0
  85. package/dist/resources/snippets/node/date.ts +126 -0
  86. package/dist/resources/snippets/node/logger.ts +104 -0
  87. package/dist/resources/snippets/node/validation.ts +132 -0
  88. package/dist/resources/snippets/react/useDebounce.ts +90 -0
  89. package/dist/resources/snippets/registry.json +65 -0
  90. package/dist/resources/snippets/vue/useAsync.ts +96 -0
  91. package/dist/resources/snippets/vue/usePagination.ts +102 -0
  92. package/dist/resources/templates/base/.claude/docs/architecture-template.md +459 -0
  93. package/dist/resources/templates/base/.claude/docs/architecture.md +137 -0
  94. package/dist/resources/templates/base/.claude/docs/index.md +42 -0
  95. package/dist/resources/templates/base/.claude/docs/security-lifecycle.md +129 -0
  96. package/dist/resources/templates/base/.claude/docs/verification.md +121 -0
  97. package/dist/resources/templates/base/AGENTS.md +415 -0
  98. package/dist/resources/templates/base/CLAUDE.md +415 -0
  99. package/dist/resources/templates/go-backend/.claude/docs/api-design.md +486 -0
  100. package/dist/resources/templates/go-backend/.claude/docs/architecture-template.md +449 -0
  101. package/dist/resources/templates/go-backend/.claude/docs/check-list.md +155 -0
  102. package/dist/resources/templates/go-backend/.claude/docs/database.md +369 -0
  103. package/dist/resources/templates/go-backend/.claude/docs/e2e-standards.md +161 -0
  104. package/dist/resources/templates/go-backend/.claude/docs/error-handling.md +558 -0
  105. package/dist/resources/templates/go-backend/.claude/docs/event-runtime-boundary.md +124 -0
  106. package/dist/resources/templates/go-backend/.claude/docs/identifier-contract.md +195 -0
  107. package/dist/resources/templates/go-backend/.claude/docs/index.md +22 -0
  108. package/dist/resources/templates/go-backend/.claude/docs/logging.md +314 -0
  109. package/dist/resources/templates/go-backend/.claude/docs/mediagen-provider-onboarding-sop.md +917 -0
  110. package/dist/resources/templates/go-backend/.claude/docs/mediagen-provider-quick-reference.md +195 -0
  111. package/dist/resources/templates/go-backend/.claude/docs/module-standards.md +309 -0
  112. package/dist/resources/templates/go-backend/.claude/docs/openapi-contract.md +141 -0
  113. package/dist/resources/templates/go-backend/.claude/docs/payment-gateway-onboarding.md +283 -0
  114. package/dist/resources/templates/go-backend/.claude/docs/platform-boundary.md +191 -0
  115. package/dist/resources/templates/go-backend/.claude/docs/quality-gates.md +112 -0
  116. package/dist/resources/templates/go-backend/.dockerignore +6 -0
  117. package/dist/resources/templates/go-backend/.env.example +13 -0
  118. package/dist/resources/templates/go-backend/.gitattributes +2 -0
  119. package/dist/resources/templates/go-backend/AGENTS.md +1139 -0
  120. package/dist/resources/templates/go-backend/CLAUDE.md +1139 -0
  121. package/dist/resources/templates/go-backend/Dockerfile +14 -0
  122. package/dist/resources/templates/go-backend/Makefile +71 -0
  123. package/dist/resources/templates/go-backend/README.md +66 -0
  124. package/dist/resources/templates/go-backend/_gitignore +10 -0
  125. package/dist/resources/templates/go-backend/api/openapi/README.md +29 -0
  126. package/dist/resources/templates/go-backend/api/openapi/dist/artifact-manifest.json +19 -0
  127. package/dist/resources/templates/go-backend/api/openapi/dist/conformance-matrix.json +276 -0
  128. package/dist/resources/templates/go-backend/api/openapi/document.go +30 -0
  129. package/dist/resources/templates/go-backend/api/openapi/package.json +28 -0
  130. package/dist/resources/templates/go-backend/api/openapi/pnpm-lock.yaml +3052 -0
  131. package/dist/resources/templates/go-backend/api/openapi/redocly-source.yaml +18 -0
  132. package/dist/resources/templates/go-backend/api/openapi/redocly.yaml +8 -0
  133. package/dist/resources/templates/go-backend/api/openapi/sdk-generators.json +16 -0
  134. package/dist/resources/templates/go-backend/api/openapi/service-registry.json +39 -0
  135. package/dist/resources/templates/go-backend/api/openapi/services/product-api/conformance/runtime.arazzo.yaml +65 -0
  136. package/dist/resources/templates/go-backend/api/openapi/services/product-api/dist/internal.openapi.json +327 -0
  137. package/dist/resources/templates/go-backend/api/openapi/services/product-api/dist/runtime-contract.json +56 -0
  138. package/dist/resources/templates/go-backend/api/openapi/services/product-api/openapi.yaml +222 -0
  139. package/dist/resources/templates/go-backend/api/openapi/services/worker/conformance/runtime.arazzo.yaml +65 -0
  140. package/dist/resources/templates/go-backend/api/openapi/services/worker/dist/internal.openapi.json +327 -0
  141. package/dist/resources/templates/go-backend/api/openapi/services/worker/dist/runtime-contract.json +56 -0
  142. package/dist/resources/templates/go-backend/api/openapi/services/worker/openapi.yaml +222 -0
  143. package/dist/resources/templates/go-backend/api/openapi/tooling/breaking.mjs +416 -0
  144. package/dist/resources/templates/go-backend/api/openapi/tooling/build.mjs +103 -0
  145. package/dist/resources/templates/go-backend/api/openapi/tooling/conformance_coverage.mjs +111 -0
  146. package/dist/resources/templates/go-backend/api/openapi/tooling/contract_compiler.mjs +62 -0
  147. package/dist/resources/templates/go-backend/api/openapi/tooling/contract_policy.mjs +208 -0
  148. package/dist/resources/templates/go-backend/api/openapi/tooling/delegated_contract.mjs +302 -0
  149. package/dist/resources/templates/go-backend/api/openapi/tooling/deterministic_archive.mjs +69 -0
  150. package/dist/resources/templates/go-backend/api/openapi/tooling/documentation_example_privacy.mjs +93 -0
  151. package/dist/resources/templates/go-backend/api/openapi/tooling/documentation_projection.mjs +498 -0
  152. package/dist/resources/templates/go-backend/api/openapi/tooling/documentation_quality.mjs +346 -0
  153. package/dist/resources/templates/go-backend/api/openapi/tooling/git_artifact_history.mjs +188 -0
  154. package/dist/resources/templates/go-backend/api/openapi/tooling/manifest.mjs +170 -0
  155. package/dist/resources/templates/go-backend/api/openapi/tooling/overlay.mjs +98 -0
  156. package/dist/resources/templates/go-backend/api/openapi/tooling/project.mjs +549 -0
  157. package/dist/resources/templates/go-backend/api/openapi/tooling/route_contract.mjs +156 -0
  158. package/dist/resources/templates/go-backend/api/openapi/tooling/runtime_conformance.mjs +193 -0
  159. package/dist/resources/templates/go-backend/api/openapi/tooling/scalar_asset_localization.mjs +164 -0
  160. package/dist/resources/templates/go-backend/api/openapi/tooling/sdk_generator.mjs +229 -0
  161. package/dist/resources/templates/go-backend/api/openapi/tooling/semantic_version.mjs +64 -0
  162. package/dist/resources/templates/go-backend/api/openapi/tooling/service_contract_inputs.mjs +16 -0
  163. package/dist/resources/templates/go-backend/api/openapi/tooling/test/breaking.test.mjs +365 -0
  164. package/dist/resources/templates/go-backend/api/openapi/tooling/test/build.test.mjs +42 -0
  165. package/dist/resources/templates/go-backend/api/openapi/tooling/test/conformance_coverage.test.mjs +88 -0
  166. package/dist/resources/templates/go-backend/api/openapi/tooling/test/contract_policy.test.mjs +257 -0
  167. package/dist/resources/templates/go-backend/api/openapi/tooling/test/delegated_contract.test.mjs +205 -0
  168. package/dist/resources/templates/go-backend/api/openapi/tooling/test/documentation_example_privacy.test.mjs +51 -0
  169. package/dist/resources/templates/go-backend/api/openapi/tooling/test/documentation_projection.test.mjs +368 -0
  170. package/dist/resources/templates/go-backend/api/openapi/tooling/test/documentation_quality.test.mjs +151 -0
  171. package/dist/resources/templates/go-backend/api/openapi/tooling/test/git_artifact_history.test.mjs +60 -0
  172. package/dist/resources/templates/go-backend/api/openapi/tooling/test/head_policy.test.mjs +8 -0
  173. package/dist/resources/templates/go-backend/api/openapi/tooling/test/overlay.test.mjs +44 -0
  174. package/dist/resources/templates/go-backend/api/openapi/tooling/test/projection.test.mjs +270 -0
  175. package/dist/resources/templates/go-backend/api/openapi/tooling/test/redocly_documentation_rules.test.mjs +146 -0
  176. package/dist/resources/templates/go-backend/api/openapi/tooling/test/release_manifest.test.mjs +76 -0
  177. package/dist/resources/templates/go-backend/api/openapi/tooling/test/route_contract.test.mjs +119 -0
  178. package/dist/resources/templates/go-backend/api/openapi/tooling/test/runtime_conformance.test.mjs +75 -0
  179. package/dist/resources/templates/go-backend/api/openapi/tooling/test/scalar_asset_localization.test.mjs +50 -0
  180. package/dist/resources/templates/go-backend/api/openapi/tooling/test/sdk_generator.test.mjs +31 -0
  181. package/dist/resources/templates/go-backend/api/openapi/tooling/test/semantic_version.test.mjs +60 -0
  182. package/dist/resources/templates/go-backend/api/openapi/tooling/test/service_contract_inputs.test.mjs +27 -0
  183. package/dist/resources/templates/go-backend/cmd/internal/runtime/resources.go +125 -0
  184. package/dist/resources/templates/go-backend/cmd/internal/runtime/runtime.go +102 -0
  185. package/dist/resources/templates/go-backend/cmd/internal/runtime/runtime_test.go +70 -0
  186. package/dist/resources/templates/go-backend/cmd/product-api/lifecycle_test.go +58 -0
  187. package/dist/resources/templates/go-backend/cmd/product-api/main.go +32 -0
  188. package/dist/resources/templates/go-backend/cmd/product-api/wire.go +13 -0
  189. package/dist/resources/templates/go-backend/cmd/product-api/wire_gen.go +94 -0
  190. package/dist/resources/templates/go-backend/cmd/worker/main.go +47 -0
  191. package/dist/resources/templates/go-backend/cmd/worker/wire.go +14 -0
  192. package/dist/resources/templates/go-backend/cmd/worker/wire_gen.go +111 -0
  193. package/dist/resources/templates/go-backend/configs/config.yaml +37 -0
  194. package/dist/resources/templates/go-backend/deployments/compose.yaml +71 -0
  195. package/dist/resources/templates/go-backend/docs/openapi-provenance.json +489 -0
  196. package/dist/resources/templates/go-backend/docs/runtime-provenance.json +175 -0
  197. package/dist/resources/templates/go-backend/docs/source-provenance.json +3568 -0
  198. package/dist/resources/templates/go-backend/docs/standards-provenance.json +1624 -0
  199. package/dist/resources/templates/go-backend/go.mod +256 -0
  200. package/dist/resources/templates/go-backend/go.sum +805 -0
  201. package/dist/resources/templates/go-backend/internal/common/canonicaljson/canonical.go +370 -0
  202. package/dist/resources/templates/go-backend/internal/common/canonicaljson/canonical_test.go +223 -0
  203. package/dist/resources/templates/go-backend/internal/common/checkoutbff/contracts.go +125 -0
  204. package/dist/resources/templates/go-backend/internal/common/checkoutbff/platform_client.go +212 -0
  205. package/dist/resources/templates/go-backend/internal/common/checkoutbff/platform_client_test.go +319 -0
  206. package/dist/resources/templates/go-backend/internal/common/contentaccess/contentaccess.go +50 -0
  207. package/dist/resources/templates/go-backend/internal/common/contracts/contact.go +85 -0
  208. package/dist/resources/templates/go-backend/internal/common/ctxutil/identity.go +20 -0
  209. package/dist/resources/templates/go-backend/internal/common/ctxutil/product.go +53 -0
  210. package/dist/resources/templates/go-backend/internal/common/enumdomain/payment.go +12 -0
  211. package/dist/resources/templates/go-backend/internal/common/enums/dto_admin.go +9 -0
  212. package/dist/resources/templates/go-backend/internal/common/enums/enum.go +1247 -0
  213. package/dist/resources/templates/go-backend/internal/common/enums/handler_admin.go +66 -0
  214. package/dist/resources/templates/go-backend/internal/common/enums/module.go +46 -0
  215. package/dist/resources/templates/go-backend/internal/common/enums/provider.go +10 -0
  216. package/dist/resources/templates/go-backend/internal/common/enums/register.go +11 -0
  217. package/dist/resources/templates/go-backend/internal/common/enums/register_audit.go +274 -0
  218. package/dist/resources/templates/go-backend/internal/common/enums/register_command_replay.go +12 -0
  219. package/dist/resources/templates/go-backend/internal/common/enums/register_config.go +27 -0
  220. package/dist/resources/templates/go-backend/internal/common/enums/register_locale.go +37 -0
  221. package/dist/resources/templates/go-backend/internal/common/enums/register_ops.go +14 -0
  222. package/dist/resources/templates/go-backend/internal/common/enums/register_outbox.go +15 -0
  223. package/dist/resources/templates/go-backend/internal/common/enums/register_rule_expression.go +63 -0
  224. package/dist/resources/templates/go-backend/internal/common/enums/registry.go +77 -0
  225. package/dist/resources/templates/go-backend/internal/common/httporigin/origin.go +62 -0
  226. package/dist/resources/templates/go-backend/internal/common/httporigin/origin_test.go +38 -0
  227. package/dist/resources/templates/go-backend/internal/common/iamcredential/plaintext.go +35 -0
  228. package/dist/resources/templates/go-backend/internal/common/iamcredential/plaintext_test.go +29 -0
  229. package/dist/resources/templates/go-backend/internal/common/iamscope/scope.go +212 -0
  230. package/dist/resources/templates/go-backend/internal/common/iamscope/scope_binding.go +26 -0
  231. package/dist/resources/templates/go-backend/internal/common/iamscope/scope_filter.go +173 -0
  232. package/dist/resources/templates/go-backend/internal/common/iamscope/scope_filter_test.go +279 -0
  233. package/dist/resources/templates/go-backend/internal/common/internalapi/authorization_details.go +10 -0
  234. package/dist/resources/templates/go-backend/internal/common/internalapi/route_permission_policies.go +660 -0
  235. package/dist/resources/templates/go-backend/internal/common/internalapi/route_permission_policies_test.go +331 -0
  236. package/dist/resources/templates/go-backend/internal/common/internalservice/audience_token_source.go +166 -0
  237. package/dist/resources/templates/go-backend/internal/common/internalservice/bootstrap_token_exchanger.go +183 -0
  238. package/dist/resources/templates/go-backend/internal/common/internalservice/bound_service_token_signer.go +52 -0
  239. package/dist/resources/templates/go-backend/internal/common/internalservice/delegated_access_token_exchanger.go +189 -0
  240. package/dist/resources/templates/go-backend/internal/common/internalservice/delegated_access_token_exchanger_test.go +159 -0
  241. package/dist/resources/templates/go-backend/internal/common/internalservice/product_scoped_service_token_signer.go +92 -0
  242. package/dist/resources/templates/go-backend/internal/common/internalservice/provider.go +25 -0
  243. package/dist/resources/templates/go-backend/internal/common/internalservice/request_signer.go +86 -0
  244. package/dist/resources/templates/go-backend/internal/common/internalservice/resolver.go +69 -0
  245. package/dist/resources/templates/go-backend/internal/common/internalservice/resolver_test.go +42 -0
  246. package/dist/resources/templates/go-backend/internal/common/internalservice/route_scope.go +95 -0
  247. package/dist/resources/templates/go-backend/internal/common/internalservice/route_scope_test.go +78 -0
  248. package/dist/resources/templates/go-backend/internal/common/internalservice/service_identity_test.go +387 -0
  249. package/dist/resources/templates/go-backend/internal/common/jsonschema/compiler.go +100 -0
  250. package/dist/resources/templates/go-backend/internal/common/jsonschema/compiler_test.go +41 -0
  251. package/dist/resources/templates/go-backend/internal/common/jwksapi/handler.go +83 -0
  252. package/dist/resources/templates/go-backend/internal/common/jwksapi/handler_test.go +104 -0
  253. package/dist/resources/templates/go-backend/internal/common/locale/locale.go +145 -0
  254. package/dist/resources/templates/go-backend/internal/common/locale/locale_test.go +75 -0
  255. package/dist/resources/templates/go-backend/internal/common/mediaref/mediaref.go +54 -0
  256. package/dist/resources/templates/go-backend/internal/common/mediaref/mediaref_test.go +77 -0
  257. package/dist/resources/templates/go-backend/internal/common/middleware/apikey_auth.go +320 -0
  258. package/dist/resources/templates/go-backend/internal/common/middleware/apikey_throttle.go +158 -0
  259. package/dist/resources/templates/go-backend/internal/common/middleware/auth.go +40 -0
  260. package/dist/resources/templates/go-backend/internal/common/middleware/auth_test.go +50 -0
  261. package/dist/resources/templates/go-backend/internal/common/middleware/client_context.go +86 -0
  262. package/dist/resources/templates/go-backend/internal/common/middleware/cors.go +68 -0
  263. package/dist/resources/templates/go-backend/internal/common/middleware/event_context.go +18 -0
  264. package/dist/resources/templates/go-backend/internal/common/middleware/gateway_identity.go +279 -0
  265. package/dist/resources/templates/go-backend/internal/common/middleware/helpers.go +159 -0
  266. package/dist/resources/templates/go-backend/internal/common/middleware/iam_delegated_route_permission.go +171 -0
  267. package/dist/resources/templates/go-backend/internal/common/middleware/iam_delegated_token_auth.go +151 -0
  268. package/dist/resources/templates/go-backend/internal/common/middleware/iam_delegated_token_auth_test.go +99 -0
  269. package/dist/resources/templates/go-backend/internal/common/middleware/iam_service_identity.go +138 -0
  270. package/dist/resources/templates/go-backend/internal/common/middleware/iam_service_token_auth.go +74 -0
  271. package/dist/resources/templates/go-backend/internal/common/middleware/idempotent.go +273 -0
  272. package/dist/resources/templates/go-backend/internal/common/middleware/idempotent_test.go +83 -0
  273. package/dist/resources/templates/go-backend/internal/common/middleware/internal_route_permission.go +45 -0
  274. package/dist/resources/templates/go-backend/internal/common/middleware/internal_route_permission_test.go +186 -0
  275. package/dist/resources/templates/go-backend/internal/common/middleware/logging.go +191 -0
  276. package/dist/resources/templates/go-backend/internal/common/middleware/metrics.go +45 -0
  277. package/dist/resources/templates/go-backend/internal/common/middleware/middleware_test.go +1516 -0
  278. package/dist/resources/templates/go-backend/internal/common/middleware/principal_context.go +160 -0
  279. package/dist/resources/templates/go-backend/internal/common/middleware/principal_context_test.go +355 -0
  280. package/dist/resources/templates/go-backend/internal/common/middleware/product_context.go +100 -0
  281. package/dist/resources/templates/go-backend/internal/common/middleware/recovery.go +40 -0
  282. package/dist/resources/templates/go-backend/internal/common/middleware/referral_attribution.go +178 -0
  283. package/dist/resources/templates/go-backend/internal/common/middleware/requestid.go +48 -0
  284. package/dist/resources/templates/go-backend/internal/common/middleware/resource_permission.go +790 -0
  285. package/dist/resources/templates/go-backend/internal/common/middleware/resource_permission_test.go +440 -0
  286. package/dist/resources/templates/go-backend/internal/common/middleware/service_credential_auth.go +67 -0
  287. package/dist/resources/templates/go-backend/internal/common/middleware/tenant.go +148 -0
  288. package/dist/resources/templates/go-backend/internal/common/middleware/throttle.go +310 -0
  289. package/dist/resources/templates/go-backend/internal/common/middleware/trusted_client_ip.go +23 -0
  290. package/dist/resources/templates/go-backend/internal/common/middleware/trusted_client_ip_test.go +60 -0
  291. package/dist/resources/templates/go-backend/internal/common/money/currency.go +25 -0
  292. package/dist/resources/templates/go-backend/internal/common/money/errors.go +23 -0
  293. package/dist/resources/templates/go-backend/internal/common/money/format.go +123 -0
  294. package/dist/resources/templates/go-backend/internal/common/money/format_test.go +204 -0
  295. package/dist/resources/templates/go-backend/internal/common/money/gateway.go +144 -0
  296. package/dist/resources/templates/go-backend/internal/common/money/gateway_test.go +165 -0
  297. package/dist/resources/templates/go-backend/internal/common/money/rounding.go +56 -0
  298. package/dist/resources/templates/go-backend/internal/common/money/rounding_test.go +51 -0
  299. package/dist/resources/templates/go-backend/internal/common/principal/context.go +56 -0
  300. package/dist/resources/templates/go-backend/internal/common/principal/principal.go +49 -0
  301. package/dist/resources/templates/go-backend/internal/common/productcode/code.go +24 -0
  302. package/dist/resources/templates/go-backend/internal/common/productcode/code_test.go +35 -0
  303. package/dist/resources/templates/go-backend/internal/common/providerconfig/schema.go +577 -0
  304. package/dist/resources/templates/go-backend/internal/common/providerconfig/schema_test.go +47 -0
  305. package/dist/resources/templates/go-backend/internal/common/requestprivacy/request.go +246 -0
  306. package/dist/resources/templates/go-backend/internal/common/requestprivacy/request_test.go +170 -0
  307. package/dist/resources/templates/go-backend/internal/common/response/pagination.go +60 -0
  308. package/dist/resources/templates/go-backend/internal/common/response/response.go +110 -0
  309. package/dist/resources/templates/go-backend/internal/common/response/response_test.go +463 -0
  310. package/dist/resources/templates/go-backend/internal/common/ruleexpression/ast.go +141 -0
  311. package/dist/resources/templates/go-backend/internal/common/ruleexpression/ast_test.go +81 -0
  312. package/dist/resources/templates/go-backend/internal/common/ruleexpression/canonical.go +184 -0
  313. package/dist/resources/templates/go-backend/internal/common/ruleexpression/canonical_test.go +319 -0
  314. package/dist/resources/templates/go-backend/internal/common/ruleexpression/decoder.go +555 -0
  315. package/dist/resources/templates/go-backend/internal/common/ruleexpression/decoder_test.go +260 -0
  316. package/dist/resources/templates/go-backend/internal/common/ruleexpression/errors.go +55 -0
  317. package/dist/resources/templates/go-backend/internal/common/ruleexpression/evaluator.go +96 -0
  318. package/dist/resources/templates/go-backend/internal/common/ruleexpression/evaluator_test.go +220 -0
  319. package/dist/resources/templates/go-backend/internal/common/ruleexpression/fuzz_test.go +116 -0
  320. package/dist/resources/templates/go-backend/internal/common/ruleexpression/limits.go +331 -0
  321. package/dist/resources/templates/go-backend/internal/common/ruleexpression/schema.go +412 -0
  322. package/dist/resources/templates/go-backend/internal/common/ruleexpression/schema_test.go +164 -0
  323. package/dist/resources/templates/go-backend/internal/common/runtimeinput/runtime_input.go +627 -0
  324. package/dist/resources/templates/go-backend/internal/common/runtimeinput/runtime_input_test.go +245 -0
  325. package/dist/resources/templates/go-backend/internal/common/semver/errors.go +6 -0
  326. package/dist/resources/templates/go-backend/internal/common/semver/semver.go +125 -0
  327. package/dist/resources/templates/go-backend/internal/common/semver/semver_test.go +205 -0
  328. package/dist/resources/templates/go-backend/internal/common/serviceidentity/audience.go +48 -0
  329. package/dist/resources/templates/go-backend/internal/common/serviceidentity/audience_test.go +35 -0
  330. package/dist/resources/templates/go-backend/internal/common/serviceidentity/resource_identifier.go +33 -0
  331. package/dist/resources/templates/go-backend/internal/common/serviceidentity/resource_identifier_test.go +32 -0
  332. package/dist/resources/templates/go-backend/internal/common/tradeno/generator.go +99 -0
  333. package/dist/resources/templates/go-backend/internal/common/tradeno/generator_test.go +396 -0
  334. package/dist/resources/templates/go-backend/internal/common/tradeno/prefix.go +247 -0
  335. package/dist/resources/templates/go-backend/internal/common/types/asset_url.go +11 -0
  336. package/dist/resources/templates/go-backend/internal/common/types/billing.go +89 -0
  337. package/dist/resources/templates/go-backend/internal/common/types/billing_test.go +77 -0
  338. package/dist/resources/templates/go-backend/internal/common/types/country.go +74 -0
  339. package/dist/resources/templates/go-backend/internal/common/types/country_test.go +28 -0
  340. package/dist/resources/templates/go-backend/internal/common/types/currency.go +60 -0
  341. package/dist/resources/templates/go-backend/internal/common/types/identifiers.go +41 -0
  342. package/dist/resources/templates/go-backend/internal/common/types/operator.go +28 -0
  343. package/dist/resources/templates/go-backend/internal/common/types/subscription_entitlement.go +24 -0
  344. package/dist/resources/templates/go-backend/internal/common/types/subscription_entitlement_test.go +35 -0
  345. package/dist/resources/templates/go-backend/internal/common/types/tier.go +72 -0
  346. package/dist/resources/templates/go-backend/internal/common/types/types.go +411 -0
  347. package/dist/resources/templates/go-backend/internal/common/types/types_test.go +295 -0
  348. package/dist/resources/templates/go-backend/internal/common/utils/constants.go +100 -0
  349. package/dist/resources/templates/go-backend/internal/common/utils/crypto.go +158 -0
  350. package/dist/resources/templates/go-backend/internal/common/utils/crypto_test.go +345 -0
  351. package/dist/resources/templates/go-backend/internal/common/utils/duration.go +25 -0
  352. package/dist/resources/templates/go-backend/internal/common/utils/helpers.go +18 -0
  353. package/dist/resources/templates/go-backend/internal/common/utils/json.go +62 -0
  354. package/dist/resources/templates/go-backend/internal/common/utils/json_test.go +76 -0
  355. package/dist/resources/templates/go-backend/internal/common/utils/pagination.go +51 -0
  356. package/dist/resources/templates/go-backend/internal/common/utils/pagination_test.go +45 -0
  357. package/dist/resources/templates/go-backend/internal/common/utils/pointer.go +107 -0
  358. package/dist/resources/templates/go-backend/internal/common/utils/pointer_test.go +15 -0
  359. package/dist/resources/templates/go-backend/internal/common/utils/slice.go +24 -0
  360. package/dist/resources/templates/go-backend/internal/common/utils/snowflake.go +110 -0
  361. package/dist/resources/templates/go-backend/internal/common/utils/snowflake_test.go +316 -0
  362. package/dist/resources/templates/go-backend/internal/common/utils/string.go +16 -0
  363. package/dist/resources/templates/go-backend/internal/common/utils/timefmt.go +42 -0
  364. package/dist/resources/templates/go-backend/internal/common/validator/validator.go +136 -0
  365. package/dist/resources/templates/go-backend/internal/common/validator/validator_test.go +240 -0
  366. package/dist/resources/templates/go-backend/internal/common/youtubeapi/client.go +224 -0
  367. package/dist/resources/templates/go-backend/internal/core/apicontract/document.go +269 -0
  368. package/dist/resources/templates/go-backend/internal/core/apicontract/document_test.go +104 -0
  369. package/dist/resources/templates/go-backend/internal/core/apicontract/route_validator.go +78 -0
  370. package/dist/resources/templates/go-backend/internal/core/apicontract/route_validator_test.go +108 -0
  371. package/dist/resources/templates/go-backend/internal/core/apidocs/assets/scalar-api-reference.js +2385 -0
  372. package/dist/resources/templates/go-backend/internal/core/apidocs/assets/scalar-api-reference.metadata.json +10 -0
  373. package/dist/resources/templates/go-backend/internal/core/apidocs/route.go +107 -0
  374. package/dist/resources/templates/go-backend/internal/core/apidocs/route_test.go +200 -0
  375. package/dist/resources/templates/go-backend/internal/core/apidocs/scalar.go +117 -0
  376. package/dist/resources/templates/go-backend/internal/core/apidocs/scalar_test.go +99 -0
  377. package/dist/resources/templates/go-backend/internal/core/audit/access_log_policy.go +91 -0
  378. package/dist/resources/templates/go-backend/internal/core/audit/access_log_policy_test.go +51 -0
  379. package/dist/resources/templates/go-backend/internal/core/audit/actor_resolver.go +36 -0
  380. package/dist/resources/templates/go-backend/internal/core/audit/constants.go +30 -0
  381. package/dist/resources/templates/go-backend/internal/core/audit/context.go +119 -0
  382. package/dist/resources/templates/go-backend/internal/core/audit/context_test.go +310 -0
  383. package/dist/resources/templates/go-backend/internal/core/audit/dto.go +468 -0
  384. package/dist/resources/templates/go-backend/internal/core/audit/dto_admin.go +172 -0
  385. package/dist/resources/templates/go-backend/internal/core/audit/enum.go +460 -0
  386. package/dist/resources/templates/go-backend/internal/core/audit/enum_test.go +314 -0
  387. package/dist/resources/templates/go-backend/internal/core/audit/errors.go +9 -0
  388. package/dist/resources/templates/go-backend/internal/core/audit/handler.go +568 -0
  389. package/dist/resources/templates/go-backend/internal/core/audit/listener.go +319 -0
  390. package/dist/resources/templates/go-backend/internal/core/audit/listener_test.go +98 -0
  391. package/dist/resources/templates/go-backend/internal/core/audit/middleware.go +669 -0
  392. package/dist/resources/templates/go-backend/internal/core/audit/middleware_test.go +268 -0
  393. package/dist/resources/templates/go-backend/internal/core/audit/model.go +306 -0
  394. package/dist/resources/templates/go-backend/internal/core/audit/partition_job.go +316 -0
  395. package/dist/resources/templates/go-backend/internal/core/audit/ports.go +9 -0
  396. package/dist/resources/templates/go-backend/internal/core/audit/provider.go +30 -0
  397. package/dist/resources/templates/go-backend/internal/core/audit/repository.go +1007 -0
  398. package/dist/resources/templates/go-backend/internal/core/audit/repository_test.go +934 -0
  399. package/dist/resources/templates/go-backend/internal/core/audit/router.go +85 -0
  400. package/dist/resources/templates/go-backend/internal/core/audit/service.go +770 -0
  401. package/dist/resources/templates/go-backend/internal/core/audit/service_test.go +331 -0
  402. package/dist/resources/templates/go-backend/internal/core/audit/vo_admin.go +475 -0
  403. package/dist/resources/templates/go-backend/internal/core/cache/config.go +30 -0
  404. package/dist/resources/templates/go-backend/internal/core/cache/key.go +41 -0
  405. package/dist/resources/templates/go-backend/internal/core/cache/key_test.go +62 -0
  406. package/dist/resources/templates/go-backend/internal/core/cache/l1.go +153 -0
  407. package/dist/resources/templates/go-backend/internal/core/cache/l1_test.go +212 -0
  408. package/dist/resources/templates/go-backend/internal/core/cache/manager.go +278 -0
  409. package/dist/resources/templates/go-backend/internal/core/cache/manager_provider.go +24 -0
  410. package/dist/resources/templates/go-backend/internal/core/cache/metrics.go +126 -0
  411. package/dist/resources/templates/go-backend/internal/core/cache/namespace.go +46 -0
  412. package/dist/resources/templates/go-backend/internal/core/cache/namespace_test.go +90 -0
  413. package/dist/resources/templates/go-backend/internal/core/cache/options.go +39 -0
  414. package/dist/resources/templates/go-backend/internal/core/cache/options_test.go +96 -0
  415. package/dist/resources/templates/go-backend/internal/core/cache/redis.go +311 -0
  416. package/dist/resources/templates/go-backend/internal/core/cache/redis_test.go +51 -0
  417. package/dist/resources/templates/go-backend/internal/core/cache/serializer.go +31 -0
  418. package/dist/resources/templates/go-backend/internal/core/cache/serializer_test.go +139 -0
  419. package/dist/resources/templates/go-backend/internal/core/cache/singleflight.go +53 -0
  420. package/dist/resources/templates/go-backend/internal/core/cache/singleflight_test.go +211 -0
  421. package/dist/resources/templates/go-backend/internal/core/cache/warming.go +86 -0
  422. package/dist/resources/templates/go-backend/internal/core/clock/clock.go +66 -0
  423. package/dist/resources/templates/go-backend/internal/core/clock/clock_test.go +26 -0
  424. package/dist/resources/templates/go-backend/internal/core/clock/runtime_clock.go +283 -0
  425. package/dist/resources/templates/go-backend/internal/core/clock/runtime_clock_test.go +98 -0
  426. package/dist/resources/templates/go-backend/internal/core/commandreplay/errors.go +6 -0
  427. package/dist/resources/templates/go-backend/internal/core/commandreplay/model.go +90 -0
  428. package/dist/resources/templates/go-backend/internal/core/commandreplay/model_test.go +79 -0
  429. package/dist/resources/templates/go-backend/internal/core/commandreplay/namespace.go +7 -0
  430. package/dist/resources/templates/go-backend/internal/core/commandreplay/persistence.go +269 -0
  431. package/dist/resources/templates/go-backend/internal/core/commandreplay/persistence_test.go +185 -0
  432. package/dist/resources/templates/go-backend/internal/core/commandreplay/provider.go +9 -0
  433. package/dist/resources/templates/go-backend/internal/core/commandreplay/repository.go +22 -0
  434. package/dist/resources/templates/go-backend/internal/core/commandreplay/service.go +853 -0
  435. package/dist/resources/templates/go-backend/internal/core/commandreplay/service_persistence_test.go +432 -0
  436. package/dist/resources/templates/go-backend/internal/core/commandreplay/service_test.go +891 -0
  437. package/dist/resources/templates/go-backend/internal/core/commandreplay/types.go +121 -0
  438. package/dist/resources/templates/go-backend/internal/core/config/config.go +2069 -0
  439. package/dist/resources/templates/go-backend/internal/core/config/config_test.go +1122 -0
  440. package/dist/resources/templates/go-backend/internal/core/config/contract/contract_test.go +388 -0
  441. package/dist/resources/templates/go-backend/internal/core/config/contract/docs.go +198 -0
  442. package/dist/resources/templates/go-backend/internal/core/config/contract/verify.go +424 -0
  443. package/dist/resources/templates/go-backend/internal/core/config/enum.go +46 -0
  444. package/dist/resources/templates/go-backend/internal/core/config/metadata.go +717 -0
  445. package/dist/resources/templates/go-backend/internal/core/config/metadata_test.go +228 -0
  446. package/dist/resources/templates/go-backend/internal/core/config/product_admin_config_test.go +210 -0
  447. package/dist/resources/templates/go-backend/internal/core/crypto/aes_gcm.go +111 -0
  448. package/dist/resources/templates/go-backend/internal/core/crypto/aes_gcm_test.go +364 -0
  449. package/dist/resources/templates/go-backend/internal/core/crypto/encryptor.go +12 -0
  450. package/dist/resources/templates/go-backend/internal/core/crypto/envelope_encryptor.go +134 -0
  451. package/dist/resources/templates/go-backend/internal/core/crypto/envelope_encryptor_test.go +118 -0
  452. package/dist/resources/templates/go-backend/internal/core/crypto/pem.go +112 -0
  453. package/dist/resources/templates/go-backend/internal/core/crypto/pem_test.go +44 -0
  454. package/dist/resources/templates/go-backend/internal/core/crypto/provider.go +130 -0
  455. package/dist/resources/templates/go-backend/internal/core/crypto/provider_test.go +92 -0
  456. package/dist/resources/templates/go-backend/internal/core/database/base_model.go +24 -0
  457. package/dist/resources/templates/go-backend/internal/core/database/clickhouse.go +121 -0
  458. package/dist/resources/templates/go-backend/internal/core/database/database.go +112 -0
  459. package/dist/resources/templates/go-backend/internal/core/database/database_logger_test.go +95 -0
  460. package/dist/resources/templates/go-backend/internal/core/database/errors.go +25 -0
  461. package/dist/resources/templates/go-backend/internal/core/database/metrics_plugin.go +105 -0
  462. package/dist/resources/templates/go-backend/internal/core/database/pool_collector.go +71 -0
  463. package/dist/resources/templates/go-backend/internal/core/database/read_replica.go +520 -0
  464. package/dist/resources/templates/go-backend/internal/core/database/transaction.go +170 -0
  465. package/dist/resources/templates/go-backend/internal/core/database/transaction_test.go +282 -0
  466. package/dist/resources/templates/go-backend/internal/core/distlock/lock.go +353 -0
  467. package/dist/resources/templates/go-backend/internal/core/distlock/lock_test.go +106 -0
  468. package/dist/resources/templates/go-backend/internal/core/errors/handler.go +189 -0
  469. package/dist/resources/templates/go-backend/internal/core/errors/handler_test.go +515 -0
  470. package/dist/resources/templates/go-backend/internal/core/eventbus/eventbus.go +667 -0
  471. package/dist/resources/templates/go-backend/internal/core/eventbus/eventbus_test.go +792 -0
  472. package/dist/resources/templates/go-backend/internal/core/eventstream/noop.go +22 -0
  473. package/dist/resources/templates/go-backend/internal/core/eventstream/provider.go +20 -0
  474. package/dist/resources/templates/go-backend/internal/core/eventstream/publisher.go +38 -0
  475. package/dist/resources/templates/go-backend/internal/core/eventstream/redis.go +109 -0
  476. package/dist/resources/templates/go-backend/internal/core/eventstream/routing.go +104 -0
  477. package/dist/resources/templates/go-backend/internal/core/eventstream/routing_test.go +71 -0
  478. package/dist/resources/templates/go-backend/internal/core/geoip/model.go +19 -0
  479. package/dist/resources/templates/go-backend/internal/core/geoip/service.go +88 -0
  480. package/dist/resources/templates/go-backend/internal/core/health/health.go +333 -0
  481. package/dist/resources/templates/go-backend/internal/core/health/health_test.go +27 -0
  482. package/dist/resources/templates/go-backend/internal/core/httpclient/client.go +772 -0
  483. package/dist/resources/templates/go-backend/internal/core/httpclient/client_test.go +287 -0
  484. package/dist/resources/templates/go-backend/internal/core/httpclient/download.go +578 -0
  485. package/dist/resources/templates/go-backend/internal/core/httpclient/download_test.go +374 -0
  486. package/dist/resources/templates/go-backend/internal/core/jwtkeyring/jwk.go +38 -0
  487. package/dist/resources/templates/go-backend/internal/core/jwtkeyring/keyring.go +144 -0
  488. package/dist/resources/templates/go-backend/internal/core/jwtkeyring/keyring_test.go +128 -0
  489. package/dist/resources/templates/go-backend/internal/core/jwtkeyring/registry.go +60 -0
  490. package/dist/resources/templates/go-backend/internal/core/logger/logger.go +53 -0
  491. package/dist/resources/templates/go-backend/internal/core/logger/logger_test.go +194 -0
  492. package/dist/resources/templates/go-backend/internal/core/observability/metrics.go +358 -0
  493. package/dist/resources/templates/go-backend/internal/core/observability/sentry.go +445 -0
  494. package/dist/resources/templates/go-backend/internal/core/observability/sentry_privacy_test.go +175 -0
  495. package/dist/resources/templates/go-backend/internal/core/observability/tracing.go +187 -0
  496. package/dist/resources/templates/go-backend/internal/core/outbox/model.go +314 -0
  497. package/dist/resources/templates/go-backend/internal/core/outbox/model_test.go +77 -0
  498. package/dist/resources/templates/go-backend/internal/core/outbox/persistence.go +51 -0
  499. package/dist/resources/templates/go-backend/internal/core/outbox/provider.go +23 -0
  500. package/dist/resources/templates/go-backend/internal/core/outbox/relay.go +1138 -0
  501. package/dist/resources/templates/go-backend/internal/core/outbox/relay_postgres_test.go +257 -0
  502. package/dist/resources/templates/go-backend/internal/core/outbox/relay_test.go +690 -0
  503. package/dist/resources/templates/go-backend/internal/core/outbox/rescheduler.go +164 -0
  504. package/dist/resources/templates/go-backend/internal/core/outbox/rescheduler_test.go +209 -0
  505. package/dist/resources/templates/go-backend/internal/core/outbox/writer.go +249 -0
  506. package/dist/resources/templates/go-backend/internal/core/outbox/writer_postgres_test.go +170 -0
  507. package/dist/resources/templates/go-backend/internal/core/outbox/writer_test.go +123 -0
  508. package/dist/resources/templates/go-backend/internal/core/provider.go +198 -0
  509. package/dist/resources/templates/go-backend/internal/core/queue/metrics_middleware.go +38 -0
  510. package/dist/resources/templates/go-backend/internal/core/queue/metrics_middleware_test.go +12 -0
  511. package/dist/resources/templates/go-backend/internal/core/queue/queue.go +288 -0
  512. package/dist/resources/templates/go-backend/internal/core/queue/queue_test.go +159 -0
  513. package/dist/resources/templates/go-backend/internal/core/resilience/bulkhead.go +514 -0
  514. package/dist/resources/templates/go-backend/internal/core/resilience/bulkhead_test.go +984 -0
  515. package/dist/resources/templates/go-backend/internal/core/resilience/circuitbreaker.go +358 -0
  516. package/dist/resources/templates/go-backend/internal/core/resilience/circuitbreaker_test.go +788 -0
  517. package/dist/resources/templates/go-backend/internal/core/resilience/retry.go +318 -0
  518. package/dist/resources/templates/go-backend/internal/core/resilience/retry_test.go +735 -0
  519. package/dist/resources/templates/go-backend/internal/core/schedule/recorder.go +305 -0
  520. package/dist/resources/templates/go-backend/internal/core/schedule/run_context.go +124 -0
  521. package/dist/resources/templates/go-backend/internal/core/schedule/run_context_test.go +85 -0
  522. package/dist/resources/templates/go-backend/internal/core/schedule/scheduler.go +1589 -0
  523. package/dist/resources/templates/go-backend/internal/core/schedule/scheduler_control_test.go +808 -0
  524. package/dist/resources/templates/go-backend/internal/core/storage/oss_provider.go +398 -0
  525. package/dist/resources/templates/go-backend/internal/core/storage/oss_provider_test.go +89 -0
  526. package/dist/resources/templates/go-backend/internal/core/storage/path.go +110 -0
  527. package/dist/resources/templates/go-backend/internal/core/storage/path_test.go +301 -0
  528. package/dist/resources/templates/go-backend/internal/core/storage/s3_provider.go +489 -0
  529. package/dist/resources/templates/go-backend/internal/core/storage/s3_provider_test.go +60 -0
  530. package/dist/resources/templates/go-backend/internal/core/storage/storage.go +268 -0
  531. package/dist/resources/templates/go-backend/internal/core/storage/validation.go +225 -0
  532. package/dist/resources/templates/go-backend/internal/core/storage/validation_test.go +495 -0
  533. package/dist/resources/templates/go-backend/internal/core/temporal/logger.go +38 -0
  534. package/dist/resources/templates/go-backend/internal/core/temporal/provider.go +126 -0
  535. package/dist/resources/templates/go-backend/internal/core/temporal/provider_test.go +67 -0
  536. package/dist/resources/templates/go-backend/internal/core/websocket/client.go +282 -0
  537. package/dist/resources/templates/go-backend/internal/core/websocket/client_test.go +81 -0
  538. package/dist/resources/templates/go-backend/internal/core/websocket/config.go +58 -0
  539. package/dist/resources/templates/go-backend/internal/core/websocket/handler.go +53 -0
  540. package/dist/resources/templates/go-backend/internal/core/websocket/hub.go +269 -0
  541. package/dist/resources/templates/go-backend/internal/core/websocket/message.go +273 -0
  542. package/dist/resources/templates/go-backend/internal/core/websocket/notifier.go +92 -0
  543. package/dist/resources/templates/go-backend/internal/core/websocket/provider.go +33 -0
  544. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/action.go +77 -0
  545. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/action_test.go +238 -0
  546. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/condition.go +107 -0
  547. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/decision.go +256 -0
  548. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/enum.go +643 -0
  549. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/errors.go +102 -0
  550. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/principal_record.go +21 -0
  551. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/product_context.go +486 -0
  552. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/resource.go +215 -0
  553. package/dist/resources/templates/go-backend/internal/integrations/onex/iam/resource_test.go +242 -0
  554. package/dist/resources/templates/go-backend/internal/products/README.md +5 -0
  555. package/dist/resources/templates/go-backend/internal/sharedevents/README.md +5 -0
  556. package/dist/resources/templates/go-backend/migrations/000001_infrastructure.down.sql +13 -0
  557. package/dist/resources/templates/go-backend/migrations/000001_infrastructure.up.sql +886 -0
  558. package/dist/resources/templates/go-backend/pkg/apierror/error.go +327 -0
  559. package/dist/resources/templates/go-backend/pkg/apierror/error_code.go +65 -0
  560. package/dist/resources/templates/go-backend/pkg/apierror/error_test.go +41 -0
  561. package/dist/resources/templates/go-backend/pkg/apierror/error_type.go +14 -0
  562. package/dist/resources/templates/go-backend/pkg/apierror/http_response.go +216 -0
  563. package/dist/resources/templates/go-backend/pkg/apierror/http_response_test.go +216 -0
  564. package/dist/resources/templates/go-backend/scripts/check-openapi-clean-deletion.sh +54 -0
  565. package/dist/resources/templates/go-backend/scripts/test-migrations.sh +32 -0
  566. package/dist/resources/templates/go-backend/tests/infrastructure.sql +69 -0
  567. package/dist/resources/templates/mcp-server/.claude/docs/stack.md +338 -0
  568. package/dist/resources/templates/mcp-server/.editorconfig +13 -0
  569. package/dist/resources/templates/mcp-server/.env.example +8 -0
  570. package/dist/resources/templates/mcp-server/.github/ISSUE_TEMPLATE/bug_report.yml +104 -0
  571. package/dist/resources/templates/mcp-server/.github/ISSUE_TEMPLATE/feature_request.yml +54 -0
  572. package/dist/resources/templates/mcp-server/.github/PULL_REQUEST_TEMPLATE.md +36 -0
  573. package/dist/resources/templates/mcp-server/.github/workflows/ci.yml +78 -0
  574. package/dist/resources/templates/mcp-server/.husky/commit-msg +1 -0
  575. package/dist/resources/templates/mcp-server/.husky/pre-commit +1 -0
  576. package/dist/resources/templates/mcp-server/.lintstagedrc.json +4 -0
  577. package/dist/resources/templates/mcp-server/.nvmrc +1 -0
  578. package/dist/resources/templates/mcp-server/.prettierrc +8 -0
  579. package/dist/resources/templates/mcp-server/CONTRIBUTING.md +184 -0
  580. package/dist/resources/templates/mcp-server/Dockerfile +23 -0
  581. package/dist/resources/templates/mcp-server/LICENSE +21 -0
  582. package/dist/resources/templates/mcp-server/README.md +123 -0
  583. package/dist/resources/templates/mcp-server/_gitignore +26 -0
  584. package/dist/resources/templates/mcp-server/commitlint.config.js +24 -0
  585. package/dist/resources/templates/mcp-server/eslint.config.js +30 -0
  586. package/dist/resources/templates/mcp-server/package.json +72 -0
  587. package/dist/resources/templates/mcp-server/src/index.ts +27 -0
  588. package/dist/resources/templates/mcp-server/src/resources.ts +33 -0
  589. package/dist/resources/templates/mcp-server/src/services/.gitkeep +0 -0
  590. package/dist/resources/templates/mcp-server/src/tools.ts +43 -0
  591. package/dist/resources/templates/mcp-server/src/types/index.ts +19 -0
  592. package/dist/resources/templates/mcp-server/src/utils/index.ts +31 -0
  593. package/dist/resources/templates/mcp-server/tsconfig.json +22 -0
  594. package/dist/resources/templates/mcp-server/tsup.config.ts +14 -0
  595. package/dist/resources/templates/mcp-server/vitest.config.ts +15 -0
  596. package/dist/resources/templates/nuxt/.claude/docs/stack.md +666 -0
  597. package/dist/resources/templates/nuxt/.editorconfig +15 -0
  598. package/dist/resources/templates/nuxt/.env.example +22 -0
  599. package/dist/resources/templates/nuxt/.github/workflows/ci.yml +34 -0
  600. package/dist/resources/templates/nuxt/.husky/commit-msg +1 -0
  601. package/dist/resources/templates/nuxt/.husky/pre-commit +1 -0
  602. package/dist/resources/templates/nuxt/.nvmrc +1 -0
  603. package/dist/resources/templates/nuxt/.prettierignore +9 -0
  604. package/dist/resources/templates/nuxt/.prettierrc +1 -0
  605. package/dist/resources/templates/nuxt/README.md +23 -0
  606. package/dist/resources/templates/nuxt/_gitignore +7 -0
  607. package/dist/resources/templates/nuxt/app/app.config.ts +105 -0
  608. package/dist/resources/templates/nuxt/app/i18n/locales/en.json +5 -0
  609. package/dist/resources/templates/nuxt/app/pages/app/index.vue +224 -0
  610. package/dist/resources/templates/nuxt/app/pages/authors/[slug].vue +37 -0
  611. package/dist/resources/templates/nuxt/app/pages/blog/[slug].vue +55 -0
  612. package/dist/resources/templates/nuxt/app/pages/blog/category/[category].vue +38 -0
  613. package/dist/resources/templates/nuxt/app/pages/blog/index.vue +46 -0
  614. package/dist/resources/templates/nuxt/app/pages/index.vue +626 -0
  615. package/dist/resources/templates/nuxt/app/pages/legal/privacy.vue +21 -0
  616. package/dist/resources/templates/nuxt/app/pages/legal/terms.vue +21 -0
  617. package/dist/resources/templates/nuxt/app/pages/ui/index.vue +397 -0
  618. package/dist/resources/templates/nuxt/commitlint.config.mjs +1 -0
  619. package/dist/resources/templates/nuxt/eslint.config.mjs +4 -0
  620. package/dist/resources/templates/nuxt/lint-staged.config.mjs +8 -0
  621. package/dist/resources/templates/nuxt/nuxt.config.ts +71 -0
  622. package/dist/resources/templates/nuxt/package.json +67 -0
  623. package/dist/resources/templates/nuxt/public/apple-touch-icon.png +0 -0
  624. package/dist/resources/templates/nuxt/public/favicon.ico +0 -0
  625. package/dist/resources/templates/nuxt/public/favicon.svg +5 -0
  626. package/dist/resources/templates/nuxt/public/icon-16x16.png +0 -0
  627. package/dist/resources/templates/nuxt/public/icon-192x192.png +0 -0
  628. package/dist/resources/templates/nuxt/public/icon-32x32.png +0 -0
  629. package/dist/resources/templates/nuxt/public/icon-512x512.png +0 -0
  630. package/dist/resources/templates/nuxt/public/logo.svg +6 -0
  631. package/dist/resources/templates/nuxt/public/media/hero-product-gallery.png +0 -0
  632. package/dist/resources/templates/nuxt/server/api/content/sitemap-urls.get.ts +12 -0
  633. package/dist/resources/templates/nuxt/server/api/preview.get.ts +9 -0
  634. package/dist/resources/templates/nuxt/stylelint.config.mjs +3 -0
  635. package/dist/resources/templates/nuxt/test/e2e/rendering.test.ts +13 -0
  636. package/dist/resources/templates/nuxt/tsconfig.json +3 -0
  637. package/dist/resources/templates/nuxt/vitest.config.ts +8 -0
  638. package/package.json +16 -12
@@ -0,0 +1,247 @@
1
+ package tradeno
2
+
3
+ // Prefix 业务编号前缀(小写 + 下划线分隔)
4
+ type Prefix string
5
+
6
+ const (
7
+ // PrefixOrder 订单
8
+ PrefixOrder Prefix = "ord"
9
+ // PrefixCart 购物车
10
+ PrefixCart Prefix = "crt"
11
+ // PrefixCartItem 购物车项
12
+ PrefixCartItem Prefix = "cti"
13
+ // PrefixCartItemAttribute 购物车项属性
14
+ PrefixCartItemAttribute Prefix = "cia"
15
+ // PrefixCartMutationEvent 购物车命令证据
16
+ PrefixCartMutationEvent Prefix = "cme"
17
+ // PrefixCheckoutQuote 结账报价
18
+ PrefixCheckoutQuote Prefix = "cqt"
19
+ // PrefixCheckoutQuoteItem 结账报价项
20
+ PrefixCheckoutQuoteItem Prefix = "cqi"
21
+ // PrefixCheckoutQuoteAdjustment 结账报价调整
22
+ PrefixCheckoutQuoteAdjustment Prefix = "cqa"
23
+ // PrefixCheckoutQuoteReservation 结账报价预留
24
+ PrefixCheckoutQuoteReservation Prefix = "cqr"
25
+ // PrefixCheckoutQuoteEvent 结账报价事件
26
+ PrefixCheckoutQuoteEvent Prefix = "cqe"
27
+ // PrefixCheckoutQuoteDeliveryLine 结账报价配送费用行
28
+ PrefixCheckoutQuoteDeliveryLine Prefix = "cdl"
29
+ // PrefixCheckoutQuoteTaxLine 结账报价税费行
30
+ PrefixCheckoutQuoteTaxLine Prefix = "ctx"
31
+ // PrefixCatalogPurchaseOption 目录购买选项
32
+ PrefixCatalogPurchaseOption Prefix = "pto"
33
+ // PrefixMarketingPromotion 营销促销活动
34
+ PrefixMarketingPromotion Prefix = "prm"
35
+ // PrefixMarketingCoupon 营销优惠券
36
+ PrefixMarketingCoupon Prefix = "cpn"
37
+ // PrefixPayment 支付
38
+ PrefixPayment Prefix = "pay"
39
+ // PrefixBillingAccount 付款账户
40
+ PrefixBillingAccount Prefix = "bac"
41
+ // PrefixCheckoutSession 结账会话
42
+ PrefixCheckoutSession Prefix = "chs"
43
+ // PrefixCheckoutExecution 结账执行
44
+ PrefixCheckoutExecution Prefix = "chex"
45
+ // PrefixCheckoutFulfillment 结账履约
46
+ PrefixCheckoutFulfillment Prefix = "chf"
47
+ // PrefixCheckoutCompensation 结账补偿
48
+ PrefixCheckoutCompensation Prefix = "chc"
49
+ // PrefixPaymentProviderCommand 支付渠道命令
50
+ PrefixPaymentProviderCommand Prefix = "pcmd"
51
+ // PrefixPaymentProviderResource 支付渠道资源
52
+ PrefixPaymentProviderResource Prefix = "pres"
53
+ // PrefixPaymentCredential 支付凭据
54
+ PrefixPaymentCredential Prefix = "pcred"
55
+ // PrefixPaymentAuthorizationGrant 合同支付授权
56
+ PrefixPaymentAuthorizationGrant Prefix = "pag"
57
+ // PrefixPaymentDispute 支付争议
58
+ PrefixPaymentDispute Prefix = "dsp"
59
+ // PrefixPaymentDisputeEvidence 支付争议证据
60
+ PrefixPaymentDisputeEvidence Prefix = "dse"
61
+ // PrefixPaymentDisputeAction 支付争议动作
62
+ PrefixPaymentDisputeAction Prefix = "dsa"
63
+ // PrefixPaymentRiskBlock 支付风控封禁
64
+ PrefixPaymentRiskBlock Prefix = "prb"
65
+ // PrefixPaymentRiskSignal 支付风控信号
66
+ PrefixPaymentRiskSignal Prefix = "prs"
67
+ // PrefixPaymentRiskProfile 支付风控画像
68
+ PrefixPaymentRiskProfile Prefix = "prp"
69
+ // PrefixPaymentProviderHealth 支付渠道健康快照
70
+ PrefixPaymentProviderHealth Prefix = "pph"
71
+ // PrefixPaymentRoutingDecision 支付路由决策
72
+ PrefixPaymentRoutingDecision Prefix = "prd"
73
+ // PrefixRefund 退款
74
+ PrefixRefund Prefix = "ref"
75
+ // PrefixRefundAdjustment 退款追加调整
76
+ PrefixRefundAdjustment Prefix = "rad"
77
+ // PrefixTransaction 交易流水
78
+ PrefixTransaction Prefix = "txn"
79
+ // PrefixSubscription 订阅
80
+ PrefixSubscription Prefix = "sub"
81
+ // PrefixSubscriptionContractOwnership 订阅合同资格占用
82
+ PrefixSubscriptionContractOwnership Prefix = "pcown"
83
+ // PrefixBenefitUpgradeQuote 升级权益报价
84
+ PrefixBenefitUpgradeQuote Prefix = "buq"
85
+ // PrefixCreditTopUpOfferWindow 积分充值活动窗口
86
+ PrefixCreditTopUpOfferWindow Prefix = "ctw"
87
+ // PrefixCreditTopUpOfferQuote 积分充值活动报价
88
+ PrefixCreditTopUpOfferQuote Prefix = "ctq"
89
+ // PrefixInventoryStockItem 库存项
90
+ PrefixInventoryStockItem Prefix = "isi"
91
+ // PrefixInventoryStockLevel 库存水位
92
+ PrefixInventoryStockLevel Prefix = "isl"
93
+ // PrefixInventoryReservation 库存预留
94
+ PrefixInventoryReservation Prefix = "irs"
95
+ // PrefixInventoryLedger 库存流水
96
+ PrefixInventoryLedger Prefix = "ilg"
97
+ // PrefixInventoryAdjustment 库存调整单
98
+ PrefixInventoryAdjustment Prefix = "iadj"
99
+ // PrefixInventoryStocktake 库存盘点单
100
+ PrefixInventoryStocktake Prefix = "ist"
101
+ // PrefixInventoryTransfer 库存调拨单
102
+ PrefixInventoryTransfer Prefix = "itf"
103
+ // PrefixInventoryAlertHit 库存预警命中
104
+ PrefixInventoryAlertHit Prefix = "iah"
105
+ // PrefixFulfillmentOrder 履约单
106
+ PrefixFulfillmentOrder Prefix = "ful"
107
+ // PrefixFulfillmentOrderItem 履约单项
108
+ PrefixFulfillmentOrderItem Prefix = "foi"
109
+ // PrefixFulfillmentEvent 履约事件
110
+ PrefixFulfillmentEvent Prefix = "fev"
111
+ // PrefixFulfillmentException 履约异常
112
+ PrefixFulfillmentException Prefix = "fex"
113
+ // PrefixPickupCode 自提核销码内部记录号(内部公开号 SH-I1,区别于客户面 4 位取货码)
114
+ PrefixPickupCode Prefix = "pkc"
115
+ // PrefixDeliveryCapacitySlot 配送容量槽
116
+ PrefixDeliveryCapacitySlot Prefix = "dcs"
117
+ // PrefixDeliveryCapacityRule 配送容量规则
118
+ PrefixDeliveryCapacityRule Prefix = "dcr"
119
+ // PrefixDeliveryCapacityLedger 配送容量流水
120
+ PrefixDeliveryCapacityLedger Prefix = "dcl"
121
+ // PrefixDeliveryCapacityTemplate 配送容量模板
122
+ PrefixDeliveryCapacityTemplate Prefix = "dct"
123
+ // PrefixDeliveryCapacityTemplateRevision 配送容量模板版本
124
+ PrefixDeliveryCapacityTemplateRevision Prefix = "dcv"
125
+ // PrefixDeliveryCalendarAnnotation 配送日历标注
126
+ PrefixDeliveryCalendarAnnotation Prefix = "dca"
127
+ // PrefixDeliveryBusinessStatusOverride 配送营业状态覆盖
128
+ PrefixDeliveryBusinessStatusOverride Prefix = "dbs"
129
+ // PrefixDeliveryBusinessStatusEvent 配送营业状态事件
130
+ PrefixDeliveryBusinessStatusEvent Prefix = "dbe"
131
+ // PrefixDeliveryReservation 配送预留
132
+ PrefixDeliveryReservation Prefix = "drv"
133
+ // PrefixDeliveryTask 配送任务
134
+ PrefixDeliveryTask Prefix = "dtk"
135
+ // PrefixDeliveryTaskEvent 配送任务事件
136
+ PrefixDeliveryTaskEvent Prefix = "dte"
137
+ // PrefixDeliveryFeePolicy 配送费策略
138
+ PrefixDeliveryFeePolicy Prefix = "dfp"
139
+ // PrefixShipment 快递物流单内部公开号
140
+ PrefixShipment Prefix = "shp"
141
+ // PrefixTrackingEvent 快递物流轨迹事件
142
+ PrefixTrackingEvent Prefix = "tre"
143
+ // PrefixOrderNote 订单内部备注
144
+ PrefixOrderNote Prefix = "ont"
145
+ // PrefixDiscoveryDisplayRelease 发现陈列展示面发布版本
146
+ PrefixDiscoveryDisplayRelease Prefix = "ddr"
147
+ // PrefixDiscoveryDisplayDraft 发现陈列展示面草稿工作区
148
+ PrefixDiscoveryDisplayDraft Prefix = "ddd"
149
+ // PrefixDiscoveryPublicationChannel 发现陈列发布渠道
150
+ PrefixDiscoveryPublicationChannel Prefix = "dpc"
151
+ // PrefixDiscoveryPublicationSchedule 发现陈列发布计划
152
+ PrefixDiscoveryPublicationSchedule Prefix = "dps"
153
+ // PrefixDocumentationRelease 文档发布候选
154
+ PrefixDocumentationRelease Prefix = "drl"
155
+ // PrefixDocumentationApprovalPolicy 文档审批策略谱系
156
+ PrefixDocumentationApprovalPolicy Prefix = "dap"
157
+ // PrefixDocumentationApprovalDecision 文档审批决定
158
+ PrefixDocumentationApprovalDecision Prefix = "dad"
159
+ // PrefixDocumentationProjectionGeneration 文档投影任务
160
+ PrefixDocumentationProjectionGeneration Prefix = "dpg"
161
+ // PrefixDocumentationSiteRevision 文档站修订
162
+ PrefixDocumentationSiteRevision Prefix = "dsr"
163
+ // PrefixDocumentationDeployment 文档区域部署
164
+ PrefixDocumentationDeployment Prefix = "ddp"
165
+ // PrefixDocumentationPromotion 文档流量切换
166
+ PrefixDocumentationPromotion Prefix = "dpm"
167
+ // PrefixDocumentationAnswerRun 文档 AI 回答运行
168
+ PrefixDocumentationAnswerRun Prefix = "dar"
169
+ // PrefixDocumentationRuntimeEvent 文档搜索与反馈事件
170
+ PrefixDocumentationRuntimeEvent Prefix = "dre"
171
+ // PrefixAPIContractCommitment API 契约支持承诺
172
+ PrefixAPIContractCommitment Prefix = "acm"
173
+ // PrefixAPIContractEvent API 契约生命周期事件
174
+ PrefixAPIContractEvent Prefix = "ace"
175
+ // PrefixAPIContractPublication API 契约发布许可
176
+ PrefixAPIContractPublication Prefix = "acp"
177
+ // PrefixProductClientApplication 产品第一方客户端应用
178
+ PrefixProductClientApplication Prefix = "pca"
179
+ // PrefixClientApplicationIdentifier 客户端平台稳定标识
180
+ PrefixClientApplicationIdentifier Prefix = "cai"
181
+ // PrefixAppVersionRelease 客户端 Release
182
+ PrefixAppVersionRelease Prefix = "avr"
183
+ // PrefixAppVersionDistributionChannel 客户端分发渠道
184
+ PrefixAppVersionDistributionChannel Prefix = "avc"
185
+ // PrefixAppVersionReleaseAvailability Release 渠道可获得事实
186
+ PrefixAppVersionReleaseAvailability Prefix = "ava"
187
+ // PrefixAppVersionSupportPolicy 客户端支持政策
188
+ PrefixAppVersionSupportPolicy Prefix = "asp"
189
+ // PrefixFeatureFlag Feature Flag 定义
190
+ PrefixFeatureFlag Prefix = "ffl"
191
+ // PrefixFeatureFlagPublication Feature Flag 发布事实
192
+ PrefixFeatureFlagPublication Prefix = "ffp"
193
+ // PrefixUser 用户外部可见 ID
194
+ PrefixUser Prefix = "usr"
195
+ // PrefixStorageAsset 存储资产公共引用
196
+ PrefixStorageAsset Prefix = "ast"
197
+ // PrefixStorageUploadSession 存储上传会话公共引用
198
+ PrefixStorageUploadSession Prefix = "upl"
199
+ // PrefixStorageAssetReference 存储资产引用公共引用
200
+ PrefixStorageAssetReference Prefix = "aref"
201
+ // PrefixExportTask 导出任务公共引用
202
+ PrefixExportTask Prefix = "ext"
203
+ // PrefixIAMAuthorizationDecision IAM 授权决策审计引用
204
+ PrefixIAMAuthorizationDecision Prefix = "iad"
205
+ // PrefixOrganization 组织公共引用
206
+ PrefixOrganization Prefix = "org"
207
+ // PrefixOrganizationProductEnrollment 组织产品准入公共引用
208
+ PrefixOrganizationProductEnrollment Prefix = "ope"
209
+ // PrefixOrganizationMembership 组织成员关系公共引用
210
+ PrefixOrganizationMembership Prefix = "omb"
211
+ // PrefixOrganizationInvitation 组织邀请公共引用
212
+ PrefixOrganizationInvitation Prefix = "oinv"
213
+ // PrefixOrganizationTeam 组织团队公共引用
214
+ PrefixOrganizationTeam Prefix = "otm"
215
+ // PrefixOrganizationVerifiedDomain 组织验证域名公共引用
216
+ PrefixOrganizationVerifiedDomain Prefix = "odm"
217
+ // PrefixOrganizationDomainChallenge 组织域名验证挑战公共引用
218
+ PrefixOrganizationDomainChallenge Prefix = "odc"
219
+ // PrefixIdentitySSOConnection 企业单点登录连接公共引用
220
+ PrefixIdentitySSOConnection Prefix = "isc"
221
+ // PrefixIdentitySCIMUser 企业身份供应用户资源公共引用
222
+ PrefixIdentitySCIMUser Prefix = "isu"
223
+ // PrefixIdentitySCIMGroup 企业身份供应团队资源公共引用
224
+ PrefixIdentitySCIMGroup Prefix = "isg"
225
+ // PrefixIAMPrincipal IAM 主体公共引用
226
+ PrefixIAMPrincipal Prefix = "ipr"
227
+ // PrefixIAMRoleBinding IAM 角色绑定公共引用
228
+ PrefixIAMRoleBinding Prefix = "irb"
229
+ // PrefixIAMPolicyBinding IAM 策略绑定公共引用
230
+ PrefixIAMPolicyBinding Prefix = "ipb"
231
+ // PrefixAccessPolicyDecision 内容访问策略决策
232
+ PrefixAccessPolicyDecision Prefix = "apd"
233
+ // PrefixIdentityConsentReceipt 身份同意凭证
234
+ PrefixIdentityConsentReceipt Prefix = "cnr"
235
+ // PrefixIAMGroup IAM 用户组编码
236
+ PrefixIAMGroup Prefix = "grp"
237
+ // PrefixKOLContract KOL 合同引用号
238
+ PrefixKOLContract Prefix = "kct"
239
+ // PrefixKOLAsset KOL 资产引用号
240
+ PrefixKOLAsset Prefix = "kat"
241
+ // PrefixKOLDeliverable KOL 交付物引用号
242
+ PrefixKOLDeliverable Prefix = "kdl"
243
+ // PrefixKOLContentItem KOL 内容跟踪引用号
244
+ PrefixKOLContentItem Prefix = "kci"
245
+ // PrefixKOLAlert KOL 告警引用号
246
+ PrefixKOLAlert Prefix = "kal"
247
+ )
@@ -0,0 +1,11 @@
1
+ package types
2
+
3
+ import "context"
4
+
5
+ // PublicAssetURLResolver 仅解析可匿名交付的已确认公开资产。
6
+ type PublicAssetURLResolver interface {
7
+ // ResolvePublicAssetURL 返回公开资产 URL;不可公开交付时返回空字符串。
8
+ ResolvePublicAssetURL(ctx context.Context, assetID int64) string
9
+ // ResolvePublicAssetURLs 批量返回公开资产 URL;不可公开交付的资产不会出现在结果中。
10
+ ResolvePublicAssetURLs(ctx context.Context, assetIDs []int64) map[int64]string
11
+ }
@@ -0,0 +1,89 @@
1
+ package types
2
+
3
+ // ═══════════════════════════════════════════════════════════════
4
+ // BillingPeriod — 计费周期(平台级单一真相源)
5
+ // ═══════════════════════════════════════════════════════════════
6
+ //
7
+ // 计费周期是跨域的业务概念:catalog 声明定价、order 快照订单行、subscription
8
+ // 计算续费间隔、payment 创建 Stripe Price、trade.fulfillment 分流 lifetime 路径
9
+ // 都会读到同一份字符串枚举。历史上只有 catalog.domain 声明了类型,其它模块对
10
+ // `"lifetime"` / `"one_time"` 等直接写字符串字面量,一旦 catalog 侧改名就会
11
+ // 静默失配。
12
+ //
13
+ // 使用方式:
14
+ // - catalog 存储 / 查询:Price.BillingPeriod / PlanItem.BillingPeriod 仍为
15
+ // string(GORM 列),值必须来自本常量集合
16
+ // - 业务比较:`period == string(types.BillingPeriodLifetime)` 而非字面量
17
+ // - DTO binding validator 用常量字面值数组,禁止硬编码
18
+
19
+ // BillingPeriod 计费周期枚举
20
+ type BillingPeriod string
21
+
22
+ const (
23
+ // BillingPeriodWeekly 周付
24
+ BillingPeriodWeekly BillingPeriod = "weekly"
25
+ // BillingPeriodMonthly 月付
26
+ BillingPeriodMonthly BillingPeriod = "monthly"
27
+ // BillingPeriodQuarterly 季付
28
+ BillingPeriodQuarterly BillingPeriod = "quarterly"
29
+ // BillingPeriodSemiAnnual 半年付
30
+ BillingPeriodSemiAnnual BillingPeriod = "semi_annual"
31
+ // BillingPeriodAnnual 年付
32
+ BillingPeriodAnnual BillingPeriod = "annual"
33
+ // BillingPeriodLifetime 终身
34
+ BillingPeriodLifetime BillingPeriod = "lifetime"
35
+ // BillingPeriodOneTime 一次性购买
36
+ BillingPeriodOneTime BillingPeriod = "one_time"
37
+ )
38
+
39
+ // IsValid 报告计费周期是否属于平台规范枚举。
40
+ func (p BillingPeriod) IsValid() bool {
41
+ switch p {
42
+ case BillingPeriodWeekly,
43
+ BillingPeriodMonthly,
44
+ BillingPeriodQuarterly,
45
+ BillingPeriodSemiAnnual,
46
+ BillingPeriodAnnual,
47
+ BillingPeriodLifetime,
48
+ BillingPeriodOneTime:
49
+ return true
50
+ default:
51
+ return false
52
+ }
53
+ }
54
+
55
+ // MonthlyEquivalentMonthCount 返回可精确按月折算的计费周期月数。
56
+ // weekly 没有固定月数,lifetime / one_time 不属于按月折算范围。
57
+ func (p BillingPeriod) MonthlyEquivalentMonthCount() (int64, bool) {
58
+ switch p {
59
+ case BillingPeriodMonthly:
60
+ return 1, true
61
+ case BillingPeriodQuarterly:
62
+ return 3, true
63
+ case BillingPeriodSemiAnnual:
64
+ return 6, true
65
+ case BillingPeriodAnnual:
66
+ return 12, true
67
+ default:
68
+ return 0, false
69
+ }
70
+ }
71
+
72
+ // RecurringIntervalCount 返回 recurring 计费周期在订单/订阅快照中的标准间隔数。
73
+ //
74
+ // 语义约定:
75
+ // - monthly / weekly / annual 的"间隔数"都是 1;
76
+ // - quarterly / semi_annual 以 Stripe 风格展开为 month×3 / month×6;
77
+ // - lifetime / one_time 不属于 recurring,返回 false 让调用方显式分流。
78
+ func (p BillingPeriod) RecurringIntervalCount() (int, bool) {
79
+ switch p {
80
+ case BillingPeriodWeekly, BillingPeriodMonthly, BillingPeriodAnnual:
81
+ return 1, true
82
+ case BillingPeriodQuarterly:
83
+ return 3, true
84
+ case BillingPeriodSemiAnnual:
85
+ return 6, true
86
+ default:
87
+ return 0, false
88
+ }
89
+ }
@@ -0,0 +1,77 @@
1
+ package types
2
+
3
+ import "testing"
4
+
5
+ func TestBillingPeriodMonthlyEquivalentMonthCount(t *testing.T) {
6
+ t.Parallel()
7
+
8
+ tests := []struct {
9
+ period BillingPeriod
10
+ months int64
11
+ ok bool
12
+ }{
13
+ {period: BillingPeriodMonthly, months: 1, ok: true},
14
+ {period: BillingPeriodQuarterly, months: 3, ok: true},
15
+ {period: BillingPeriodSemiAnnual, months: 6, ok: true},
16
+ {period: BillingPeriodAnnual, months: 12, ok: true},
17
+ {period: BillingPeriodWeekly},
18
+ {period: BillingPeriodLifetime},
19
+ {period: BillingPeriodOneTime},
20
+ {period: BillingPeriod("unknown")},
21
+ }
22
+
23
+ for _, test := range tests {
24
+ months, ok := test.period.MonthlyEquivalentMonthCount()
25
+ if months != test.months || ok != test.ok {
26
+ t.Fatalf("MonthlyEquivalentMonthCount(%q) = (%d, %t), want (%d, %t)", test.period, months, ok, test.months, test.ok)
27
+ }
28
+ }
29
+ }
30
+
31
+ func TestBillingPeriodIsValid(t *testing.T) {
32
+ t.Parallel()
33
+
34
+ valid := []BillingPeriod{
35
+ BillingPeriodWeekly,
36
+ BillingPeriodMonthly,
37
+ BillingPeriodQuarterly,
38
+ BillingPeriodSemiAnnual,
39
+ BillingPeriodAnnual,
40
+ BillingPeriodLifetime,
41
+ BillingPeriodOneTime,
42
+ }
43
+ for _, period := range valid {
44
+ if !period.IsValid() {
45
+ t.Fatalf("IsValid(%q) = false, want true", period)
46
+ }
47
+ }
48
+ if BillingPeriod("unknown").IsValid() {
49
+ t.Fatal("IsValid(unknown) = true, want false")
50
+ }
51
+ }
52
+
53
+ func TestBillingPeriodRecurringIntervalCount(t *testing.T) {
54
+ t.Parallel()
55
+
56
+ tests := []struct {
57
+ period BillingPeriod
58
+ count int
59
+ ok bool
60
+ }{
61
+ {period: BillingPeriodWeekly, count: 1, ok: true},
62
+ {period: BillingPeriodMonthly, count: 1, ok: true},
63
+ {period: BillingPeriodQuarterly, count: 3, ok: true},
64
+ {period: BillingPeriodSemiAnnual, count: 6, ok: true},
65
+ {period: BillingPeriodAnnual, count: 1, ok: true},
66
+ {period: BillingPeriodLifetime},
67
+ {period: BillingPeriodOneTime},
68
+ {period: BillingPeriod("unknown")},
69
+ }
70
+
71
+ for _, test := range tests {
72
+ count, ok := test.period.RecurringIntervalCount()
73
+ if count != test.count || ok != test.ok {
74
+ t.Fatalf("RecurringIntervalCount(%q) = (%d, %t), want (%d, %t)", test.period, count, ok, test.count, test.ok)
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,74 @@
1
+ package types
2
+
3
+ import (
4
+ "slices"
5
+ "strings"
6
+
7
+ "golang.org/x/text/language"
8
+ "golang.org/x/text/language/display"
9
+ )
10
+
11
+ // 平台展示国家/地区名时使用的语言。简体中文与 admin 默认展示语一致,
12
+ // CLDR 区域名作为 country_code 枚举 label 的单一真相源。
13
+ var countryDisplayLanguage = language.SimplifiedChinese
14
+
15
+ // regionNamer 为简体中文区域名查询器(display.Regions 返回的 namer 可并发只读复用)。
16
+ var regionNamer = display.Regions(countryDisplayLanguage)
17
+
18
+ // standardCountryCodes 保存 ISO 3166-1 当前正式分配的 alpha-2 国家代码。
19
+ var standardCountryCodes = []string{
20
+ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT",
21
+ "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI",
22
+ "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY",
23
+ "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN",
24
+ "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM",
25
+ "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK",
26
+ "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL",
27
+ "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM",
28
+ "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR",
29
+ "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN",
30
+ "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS",
31
+ "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK",
32
+ "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW",
33
+ "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP",
34
+ "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM",
35
+ "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW",
36
+ "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM",
37
+ "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF",
38
+ "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW",
39
+ "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI",
40
+ "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW",
41
+ }
42
+
43
+ // StandardCountryCodes 返回 ISO 3166-1 当前正式分配的 alpha-2 国家代码(升序)。
44
+ func StandardCountryCodes() []string {
45
+ return slices.Clone(standardCountryCodes)
46
+ }
47
+
48
+ // LookupCountryName 按 CLDR 返回 ISO 3166-1 alpha-2 代码的简体中文国家/地区名。
49
+ //
50
+ // 返回 ok=false 时调用方应回退到原始代码展示,与 LookupCurrencyMeta 的回退语义一致。
51
+ func LookupCountryName(code string) (string, bool) {
52
+ normalized := strings.ToUpper(strings.TrimSpace(code))
53
+ if normalized == "" {
54
+ return "", false
55
+ }
56
+ if _, ok := slices.BinarySearch(standardCountryCodes, normalized); !ok {
57
+ return "", false
58
+ }
59
+ region, err := language.ParseRegion(normalized)
60
+ if err != nil {
61
+ return "", false
62
+ }
63
+ name := regionNamer.Name(region)
64
+ if name == "" || name == normalized {
65
+ return "", false
66
+ }
67
+ return name, true
68
+ }
69
+
70
+ // IsSupportedCountry 判断代码是否为标准注册表中可命名的合法 ISO 3166-1 alpha-2 国家/地区。
71
+ func IsSupportedCountry(code string) bool {
72
+ _, ok := LookupCountryName(code)
73
+ return ok
74
+ }
@@ -0,0 +1,28 @@
1
+ package types
2
+
3
+ import "testing"
4
+
5
+ func TestStandardCountryCodesUsesCurrentISOAssignments(t *testing.T) {
6
+ codes := StandardCountryCodes()
7
+ if len(codes) != 249 {
8
+ t.Fatalf("country code count = %d, want 249", len(codes))
9
+ }
10
+ if codes[0] != "AD" || codes[len(codes)-1] != "ZW" {
11
+ t.Fatalf("country code ordering is invalid: first=%s last=%s", codes[0], codes[len(codes)-1])
12
+ }
13
+ codes[0] = "ZZ"
14
+ if StandardCountryCodes()[0] != "AD" {
15
+ t.Fatal("StandardCountryCodes must return an isolated copy")
16
+ }
17
+
18
+ for _, code := range []string{"US", "CN", "HK", "DE"} {
19
+ if !IsSupportedCountry(code) {
20
+ t.Errorf("expected assigned ISO country %s to be supported", code)
21
+ }
22
+ }
23
+ for _, code := range []string{"AC", "UK", "XK", "ZZ"} {
24
+ if IsSupportedCountry(code) {
25
+ t.Errorf("non-ISO country %s must not be supported", code)
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,60 @@
1
+ package types
2
+
3
+ import (
4
+ "slices"
5
+ "strings"
6
+
7
+ curr "github.com/bojanz/currency"
8
+ )
9
+
10
+ // CurrencyMeta 受平台支持的货币元数据
11
+ type CurrencyMeta struct {
12
+ // Code 货币代码
13
+ Code string
14
+ // Symbol 货币显示符号
15
+ Symbol string
16
+ // DecimalPlaces 最小货币单位精度
17
+ DecimalPlaces int
18
+ }
19
+
20
+ var defaultCurrencyLocale = curr.Locale{Language: "en", Territory: "US"}
21
+
22
+ // DefaultCurrencyCode 是平台配置未显式声明时使用的默认结算货币。
23
+ const DefaultCurrencyCode = "USD"
24
+
25
+ // StandardCurrencyCodes 返回货币库内置的全部标准货币代码。
26
+ func StandardCurrencyCodes() []string {
27
+ codes := slices.Clone(curr.GetCurrencyCodes())
28
+ slices.Sort(codes)
29
+ return codes
30
+ }
31
+
32
+ // LookupCurrencyMeta 按标准货币注册表查询货币元数据
33
+ func LookupCurrencyMeta(code string) (CurrencyMeta, bool) {
34
+ normalized := strings.ToUpper(strings.TrimSpace(code))
35
+ if normalized == "" || !curr.IsValid(normalized) {
36
+ return CurrencyMeta{}, false
37
+ }
38
+
39
+ digits, ok := curr.GetDigits(normalized)
40
+ if !ok {
41
+ return CurrencyMeta{}, false
42
+ }
43
+
44
+ symbol, ok := curr.GetSymbol(normalized, defaultCurrencyLocale)
45
+ if !ok || strings.TrimSpace(symbol) == "" {
46
+ symbol = normalized
47
+ }
48
+
49
+ return CurrencyMeta{
50
+ Code: normalized,
51
+ Symbol: symbol,
52
+ DecimalPlaces: int(digits),
53
+ }, true
54
+ }
55
+
56
+ // IsSupportedCurrency 判断货币是否为标准注册表中的合法货币
57
+ func IsSupportedCurrency(code string) bool {
58
+ _, ok := LookupCurrencyMeta(code)
59
+ return ok
60
+ }
@@ -0,0 +1,41 @@
1
+ // Package types provides shared business identifier types.
2
+ //
3
+ // 命名空间设计原则:identity(认证源 / OAuth provider 关联)与 user(业务实体 / 订阅、订单、积分归属)
4
+ // 严格分离。
5
+ //
6
+ // 行业对齐:
7
+ // - Auth0:JWT.sub 使用稳定主体标识,identity 是 user 的 child 关联
8
+ // - AWS Cognito:JWT.sub = cognito user.id,IdP federated identity 是 attribute
9
+ // - Stripe:customer_id(business),账号 / API 凭据归属 account_id
10
+ //
11
+ // OneX 运行时契约:JWT.sub 只承载外部可见 public_id;内部 user_id 由 session
12
+ // 真相源解析,类型层强制隔离 user_id 与 identity_id。
13
+ package types
14
+
15
+ // UserID 是内部业务用户 ID(p_user_users.id)。所有业务对象(订阅、订单、积分、权益、
16
+ // 生成)一律关联此 ID。前端与媒体元数据使用 p_user_users.public_id;JWT.sub claim
17
+ // 携带 public_id,内部 user_id 由 session 真相源解析。
18
+ type UserID int64
19
+
20
+ // Int64 用于 SQL 参数 / json 编码 / 第三方接口对接时显式转换。
21
+ func (u UserID) Int64() int64 { return int64(u) }
22
+
23
+ // IsZero 判断是否未设置(匿名 / 占位)。
24
+ func (u UserID) IsZero() bool { return u == 0 }
25
+
26
+ // Valid 判断是否为合法已分配 ID。
27
+ func (u UserID) Valid() bool { return u > 0 }
28
+
29
+ // IdentityID 是认证身份 ID(p_identity_identities.id)。仅在 auth domain 内部使用:
30
+ // token 签发 / refresh / revoke、MFA 设置、登录审计、多 provider account linking。
31
+ // 业务侧(订阅、订单、权益、生成)禁止使用此 ID。
32
+ type IdentityID int64
33
+
34
+ // Int64 用于 SQL 参数 / json 编码 / 第三方接口对接时显式转换。
35
+ func (i IdentityID) Int64() int64 { return int64(i) }
36
+
37
+ // IsZero 判断是否未设置(匿名 / 占位)。
38
+ func (i IdentityID) IsZero() bool { return i == 0 }
39
+
40
+ // Valid 判断是否为合法已分配 ID。
41
+ func (i IdentityID) Valid() bool { return i > 0 }
@@ -0,0 +1,28 @@
1
+ package types
2
+
3
+ // ═══════════════════════════════════════════════════════════════
4
+ // OperatorType — 操作者类型(平台级单一真相源)
5
+ // ═══════════════════════════════════════════════════════════════
6
+ //
7
+ // 所有需要记录"状态变更 / 审计日志操作人"的模块(user / order / payment /
8
+ // subscription / product_user 等)共享此定义。历史上各模块在自己的 domain/
9
+ // 下重复声明同名 type + 3 个常量,造成:
10
+ //
11
+ // - 跨模块调用时需要在 string / 不同 OperatorType 之间反复转换
12
+ // - 新增第 4 种操作人类型(如 api_key / service_account)时需改动 N 处
13
+ // - 审计日志语义基于字符串值("system"/"user"/"admin"),不应因声明位置不同
14
+ // 而产生逻辑差异
15
+ //
16
+ // 与 types.Tier 相同的 DRY 原则:只有一个真相源,其他模块全部引用之。
17
+
18
+ // OperatorType 状态变更 / 审计日志的操作人类型
19
+ type OperatorType string
20
+
21
+ const (
22
+ // OperatorTypeSystem 系统自动触发(定时任务、webhook、事件监听器等)
23
+ OperatorTypeSystem OperatorType = "system"
24
+ // OperatorTypeUser 终端用户自主操作
25
+ OperatorTypeUser OperatorType = "user"
26
+ // OperatorTypeAdmin 管理员操作(管理后台)
27
+ OperatorTypeAdmin OperatorType = "admin"
28
+ )