@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.
- package/dist/index.js +4588 -205
- package/dist/index.js.map +1 -1
- package/dist/resources/apple/.claude/docs/architecture-template.md +54 -0
- package/dist/resources/apple/.claude/docs/architecture.md +52 -0
- package/dist/resources/apple/.claude/docs/index.md +13 -0
- package/dist/resources/apple/.claude/docs/security-lifecycle.md +57 -0
- package/dist/resources/apple/.claude/docs/stack.md +93 -0
- package/dist/resources/apple/.claude/docs/verification.md +63 -0
- package/dist/resources/apple/AGENTS.md +397 -0
- package/dist/resources/apple/CLAUDE.md +397 -0
- package/dist/resources/apple/Gemfile +2 -0
- package/dist/resources/apple/Gemfile.lock +365 -0
- package/dist/resources/apple/_gitignore +14 -0
- package/dist/resources/apple/fastlane/Fastfile +123 -0
- package/dist/resources/components/nuxt/site-source/app/app.vue +42 -0
- package/dist/resources/components/nuxt/site-source/app/assets/css/site-shell.css +1035 -0
- package/dist/resources/components/nuxt/site-source/app/assets/icons/brand/.gitkeep +0 -0
- package/dist/resources/components/nuxt/site-source/app/assets/icons/common/.gitkeep +0 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/ApplicationHeader.vue +35 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/ApplicationShell.vue +56 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/ApplicationSidebar.vue +40 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/BackToTop.vue +42 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/ContentArticlePage.vue +40 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/ContentListPage.vue +30 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/CookieConsent.vue +18 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/MarketingFooter.vue +52 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/MarketingHeader.vue +106 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/MarketingShell.vue +35 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/SiteBrand.vue +10 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/StaticPage.vue +21 -0
- package/dist/resources/components/nuxt/site-source/app/components/site/ToastViewport.vue +25 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/BaseButton.vue +86 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/BaseGradientBorder.vue +59 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/BaseModal.vue +131 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/BasePopover.vue +150 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/BaseText.vue +138 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/CheckoutStatus.vue +112 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/CheckoutSummary.vue +172 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/GoogleSignInButton.vue +113 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/InfiniteScroll.vue +123 -0
- package/dist/resources/components/nuxt/site-source/app/components/ui/YoutubeEmbed.vue +126 -0
- package/dist/resources/components/nuxt/site-source/app/composables/useAnalytics.ts +24 -0
- package/dist/resources/components/nuxt/site-source/app/composables/useCheckout.ts +121 -0
- package/dist/resources/components/nuxt/site-source/app/composables/useConsent.ts +31 -0
- package/dist/resources/components/nuxt/site-source/app/composables/useGoogleIdentity.ts +163 -0
- package/dist/resources/components/nuxt/site-source/app/composables/useNavigation.ts +11 -0
- package/dist/resources/components/nuxt/site-source/app/composables/useSeo.ts +33 -0
- package/dist/resources/components/nuxt/site-source/app/composables/useSiteShell.ts +58 -0
- package/dist/resources/components/nuxt/site-source/app/composables/useToasts.ts +48 -0
- package/dist/resources/components/nuxt/site-source/app/layouts/app.vue +5 -0
- package/dist/resources/components/nuxt/site-source/app/layouts/default.vue +5 -0
- package/dist/resources/components/nuxt/site-source/app/plugins/analytics.client.ts +121 -0
- package/dist/resources/components/nuxt/site-source/app/plugins/google-identity.client.ts +24 -0
- package/dist/resources/components/nuxt/site-source/app/theme/accordion.ts +9 -0
- package/dist/resources/components/nuxt/site-source/app/theme/breadcrumb.ts +8 -0
- package/dist/resources/components/nuxt/site-source/app/theme/button.ts +92 -0
- package/dist/resources/components/nuxt/site-source/app/theme/carousel.ts +11 -0
- package/dist/resources/components/nuxt/site-source/app/theme/checkbox.ts +12 -0
- package/dist/resources/components/nuxt/site-source/app/theme/index.ts +30 -0
- package/dist/resources/components/nuxt/site-source/app/theme/input.ts +47 -0
- package/dist/resources/components/nuxt/site-source/app/theme/modal.ts +9 -0
- package/dist/resources/components/nuxt/site-source/app/theme/pagination.ts +6 -0
- package/dist/resources/components/nuxt/site-source/app/theme/select.ts +23 -0
- package/dist/resources/components/nuxt/site-source/app/theme/stepper.ts +10 -0
- package/dist/resources/components/nuxt/site-source/app/theme/toast.ts +8 -0
- package/dist/resources/components/nuxt/site-source/app/theme/tooltip.ts +6 -0
- package/dist/resources/components/nuxt/site-source/app/types/site-shell.ts +85 -0
- package/dist/resources/components/react/ui/Button.tsx +73 -0
- package/dist/resources/components/react/ui/Input.tsx +44 -0
- package/dist/resources/components/registry.json +355 -0
- package/dist/resources/components/vue/feedback/Toast.vue +120 -0
- package/dist/resources/components/vue/feedback/useToast.ts +70 -0
- package/dist/resources/components/vue/media/FileUpload.vue +229 -0
- package/dist/resources/components/vue/media/VideoPlayer.vue +157 -0
- package/dist/resources/components/vue/ui/AppImage.vue +147 -0
- package/dist/resources/components/vue/ui/BottomSheet.vue +217 -0
- package/dist/resources/components/vue/ui/Button.vue +154 -0
- package/dist/resources/components/vue/ui/Card.vue +111 -0
- package/dist/resources/components/vue/ui/Input.vue +113 -0
- package/dist/resources/components/vue/ui/Modal.vue +193 -0
- package/dist/resources/components/vue/ui/ScrollArea.vue +163 -0
- package/dist/resources/components/vue/ui/Tooltip.vue +115 -0
- package/dist/resources/registry.json +158 -0
- package/dist/resources/snippets/node/cache.ts +116 -0
- package/dist/resources/snippets/node/date.ts +126 -0
- package/dist/resources/snippets/node/logger.ts +104 -0
- package/dist/resources/snippets/node/validation.ts +132 -0
- package/dist/resources/snippets/react/useDebounce.ts +90 -0
- package/dist/resources/snippets/registry.json +65 -0
- package/dist/resources/snippets/vue/useAsync.ts +96 -0
- package/dist/resources/snippets/vue/usePagination.ts +102 -0
- package/dist/resources/templates/base/.claude/docs/architecture-template.md +459 -0
- package/dist/resources/templates/base/.claude/docs/architecture.md +137 -0
- package/dist/resources/templates/base/.claude/docs/index.md +42 -0
- package/dist/resources/templates/base/.claude/docs/security-lifecycle.md +129 -0
- package/dist/resources/templates/base/.claude/docs/verification.md +121 -0
- package/dist/resources/templates/base/AGENTS.md +415 -0
- package/dist/resources/templates/base/CLAUDE.md +415 -0
- package/dist/resources/templates/go-backend/.claude/docs/api-design.md +486 -0
- package/dist/resources/templates/go-backend/.claude/docs/architecture-template.md +449 -0
- package/dist/resources/templates/go-backend/.claude/docs/check-list.md +155 -0
- package/dist/resources/templates/go-backend/.claude/docs/database.md +369 -0
- package/dist/resources/templates/go-backend/.claude/docs/e2e-standards.md +161 -0
- package/dist/resources/templates/go-backend/.claude/docs/error-handling.md +558 -0
- package/dist/resources/templates/go-backend/.claude/docs/event-runtime-boundary.md +124 -0
- package/dist/resources/templates/go-backend/.claude/docs/identifier-contract.md +195 -0
- package/dist/resources/templates/go-backend/.claude/docs/index.md +22 -0
- package/dist/resources/templates/go-backend/.claude/docs/logging.md +314 -0
- package/dist/resources/templates/go-backend/.claude/docs/mediagen-provider-onboarding-sop.md +917 -0
- package/dist/resources/templates/go-backend/.claude/docs/mediagen-provider-quick-reference.md +195 -0
- package/dist/resources/templates/go-backend/.claude/docs/module-standards.md +309 -0
- package/dist/resources/templates/go-backend/.claude/docs/openapi-contract.md +141 -0
- package/dist/resources/templates/go-backend/.claude/docs/payment-gateway-onboarding.md +283 -0
- package/dist/resources/templates/go-backend/.claude/docs/platform-boundary.md +191 -0
- package/dist/resources/templates/go-backend/.claude/docs/quality-gates.md +112 -0
- package/dist/resources/templates/go-backend/.dockerignore +6 -0
- package/dist/resources/templates/go-backend/.env.example +13 -0
- package/dist/resources/templates/go-backend/.gitattributes +2 -0
- package/dist/resources/templates/go-backend/AGENTS.md +1139 -0
- package/dist/resources/templates/go-backend/CLAUDE.md +1139 -0
- package/dist/resources/templates/go-backend/Dockerfile +14 -0
- package/dist/resources/templates/go-backend/Makefile +71 -0
- package/dist/resources/templates/go-backend/README.md +66 -0
- package/dist/resources/templates/go-backend/_gitignore +10 -0
- package/dist/resources/templates/go-backend/api/openapi/README.md +29 -0
- package/dist/resources/templates/go-backend/api/openapi/dist/artifact-manifest.json +19 -0
- package/dist/resources/templates/go-backend/api/openapi/dist/conformance-matrix.json +276 -0
- package/dist/resources/templates/go-backend/api/openapi/document.go +30 -0
- package/dist/resources/templates/go-backend/api/openapi/package.json +28 -0
- package/dist/resources/templates/go-backend/api/openapi/pnpm-lock.yaml +3052 -0
- package/dist/resources/templates/go-backend/api/openapi/redocly-source.yaml +18 -0
- package/dist/resources/templates/go-backend/api/openapi/redocly.yaml +8 -0
- package/dist/resources/templates/go-backend/api/openapi/sdk-generators.json +16 -0
- package/dist/resources/templates/go-backend/api/openapi/service-registry.json +39 -0
- package/dist/resources/templates/go-backend/api/openapi/services/product-api/conformance/runtime.arazzo.yaml +65 -0
- package/dist/resources/templates/go-backend/api/openapi/services/product-api/dist/internal.openapi.json +327 -0
- package/dist/resources/templates/go-backend/api/openapi/services/product-api/dist/runtime-contract.json +56 -0
- package/dist/resources/templates/go-backend/api/openapi/services/product-api/openapi.yaml +222 -0
- package/dist/resources/templates/go-backend/api/openapi/services/worker/conformance/runtime.arazzo.yaml +65 -0
- package/dist/resources/templates/go-backend/api/openapi/services/worker/dist/internal.openapi.json +327 -0
- package/dist/resources/templates/go-backend/api/openapi/services/worker/dist/runtime-contract.json +56 -0
- package/dist/resources/templates/go-backend/api/openapi/services/worker/openapi.yaml +222 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/breaking.mjs +416 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/build.mjs +103 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/conformance_coverage.mjs +111 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/contract_compiler.mjs +62 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/contract_policy.mjs +208 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/delegated_contract.mjs +302 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/deterministic_archive.mjs +69 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/documentation_example_privacy.mjs +93 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/documentation_projection.mjs +498 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/documentation_quality.mjs +346 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/git_artifact_history.mjs +188 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/manifest.mjs +170 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/overlay.mjs +98 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/project.mjs +549 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/route_contract.mjs +156 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/runtime_conformance.mjs +193 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/scalar_asset_localization.mjs +164 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/sdk_generator.mjs +229 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/semantic_version.mjs +64 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/service_contract_inputs.mjs +16 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/breaking.test.mjs +365 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/build.test.mjs +42 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/conformance_coverage.test.mjs +88 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/contract_policy.test.mjs +257 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/delegated_contract.test.mjs +205 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/documentation_example_privacy.test.mjs +51 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/documentation_projection.test.mjs +368 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/documentation_quality.test.mjs +151 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/git_artifact_history.test.mjs +60 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/head_policy.test.mjs +8 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/overlay.test.mjs +44 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/projection.test.mjs +270 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/redocly_documentation_rules.test.mjs +146 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/release_manifest.test.mjs +76 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/route_contract.test.mjs +119 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/runtime_conformance.test.mjs +75 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/scalar_asset_localization.test.mjs +50 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/sdk_generator.test.mjs +31 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/semantic_version.test.mjs +60 -0
- package/dist/resources/templates/go-backend/api/openapi/tooling/test/service_contract_inputs.test.mjs +27 -0
- package/dist/resources/templates/go-backend/cmd/internal/runtime/resources.go +125 -0
- package/dist/resources/templates/go-backend/cmd/internal/runtime/runtime.go +102 -0
- package/dist/resources/templates/go-backend/cmd/internal/runtime/runtime_test.go +70 -0
- package/dist/resources/templates/go-backend/cmd/product-api/lifecycle_test.go +58 -0
- package/dist/resources/templates/go-backend/cmd/product-api/main.go +32 -0
- package/dist/resources/templates/go-backend/cmd/product-api/wire.go +13 -0
- package/dist/resources/templates/go-backend/cmd/product-api/wire_gen.go +94 -0
- package/dist/resources/templates/go-backend/cmd/worker/main.go +47 -0
- package/dist/resources/templates/go-backend/cmd/worker/wire.go +14 -0
- package/dist/resources/templates/go-backend/cmd/worker/wire_gen.go +111 -0
- package/dist/resources/templates/go-backend/configs/config.yaml +37 -0
- package/dist/resources/templates/go-backend/deployments/compose.yaml +71 -0
- package/dist/resources/templates/go-backend/docs/openapi-provenance.json +489 -0
- package/dist/resources/templates/go-backend/docs/runtime-provenance.json +175 -0
- package/dist/resources/templates/go-backend/docs/source-provenance.json +3568 -0
- package/dist/resources/templates/go-backend/docs/standards-provenance.json +1624 -0
- package/dist/resources/templates/go-backend/go.mod +256 -0
- package/dist/resources/templates/go-backend/go.sum +805 -0
- package/dist/resources/templates/go-backend/internal/common/canonicaljson/canonical.go +370 -0
- package/dist/resources/templates/go-backend/internal/common/canonicaljson/canonical_test.go +223 -0
- package/dist/resources/templates/go-backend/internal/common/checkoutbff/contracts.go +125 -0
- package/dist/resources/templates/go-backend/internal/common/checkoutbff/platform_client.go +212 -0
- package/dist/resources/templates/go-backend/internal/common/checkoutbff/platform_client_test.go +319 -0
- package/dist/resources/templates/go-backend/internal/common/contentaccess/contentaccess.go +50 -0
- package/dist/resources/templates/go-backend/internal/common/contracts/contact.go +85 -0
- package/dist/resources/templates/go-backend/internal/common/ctxutil/identity.go +20 -0
- package/dist/resources/templates/go-backend/internal/common/ctxutil/product.go +53 -0
- package/dist/resources/templates/go-backend/internal/common/enumdomain/payment.go +12 -0
- package/dist/resources/templates/go-backend/internal/common/enums/dto_admin.go +9 -0
- package/dist/resources/templates/go-backend/internal/common/enums/enum.go +1247 -0
- package/dist/resources/templates/go-backend/internal/common/enums/handler_admin.go +66 -0
- package/dist/resources/templates/go-backend/internal/common/enums/module.go +46 -0
- package/dist/resources/templates/go-backend/internal/common/enums/provider.go +10 -0
- package/dist/resources/templates/go-backend/internal/common/enums/register.go +11 -0
- package/dist/resources/templates/go-backend/internal/common/enums/register_audit.go +274 -0
- package/dist/resources/templates/go-backend/internal/common/enums/register_command_replay.go +12 -0
- package/dist/resources/templates/go-backend/internal/common/enums/register_config.go +27 -0
- package/dist/resources/templates/go-backend/internal/common/enums/register_locale.go +37 -0
- package/dist/resources/templates/go-backend/internal/common/enums/register_ops.go +14 -0
- package/dist/resources/templates/go-backend/internal/common/enums/register_outbox.go +15 -0
- package/dist/resources/templates/go-backend/internal/common/enums/register_rule_expression.go +63 -0
- package/dist/resources/templates/go-backend/internal/common/enums/registry.go +77 -0
- package/dist/resources/templates/go-backend/internal/common/httporigin/origin.go +62 -0
- package/dist/resources/templates/go-backend/internal/common/httporigin/origin_test.go +38 -0
- package/dist/resources/templates/go-backend/internal/common/iamcredential/plaintext.go +35 -0
- package/dist/resources/templates/go-backend/internal/common/iamcredential/plaintext_test.go +29 -0
- package/dist/resources/templates/go-backend/internal/common/iamscope/scope.go +212 -0
- package/dist/resources/templates/go-backend/internal/common/iamscope/scope_binding.go +26 -0
- package/dist/resources/templates/go-backend/internal/common/iamscope/scope_filter.go +173 -0
- package/dist/resources/templates/go-backend/internal/common/iamscope/scope_filter_test.go +279 -0
- package/dist/resources/templates/go-backend/internal/common/internalapi/authorization_details.go +10 -0
- package/dist/resources/templates/go-backend/internal/common/internalapi/route_permission_policies.go +660 -0
- package/dist/resources/templates/go-backend/internal/common/internalapi/route_permission_policies_test.go +331 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/audience_token_source.go +166 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/bootstrap_token_exchanger.go +183 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/bound_service_token_signer.go +52 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/delegated_access_token_exchanger.go +189 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/delegated_access_token_exchanger_test.go +159 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/product_scoped_service_token_signer.go +92 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/provider.go +25 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/request_signer.go +86 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/resolver.go +69 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/resolver_test.go +42 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/route_scope.go +95 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/route_scope_test.go +78 -0
- package/dist/resources/templates/go-backend/internal/common/internalservice/service_identity_test.go +387 -0
- package/dist/resources/templates/go-backend/internal/common/jsonschema/compiler.go +100 -0
- package/dist/resources/templates/go-backend/internal/common/jsonschema/compiler_test.go +41 -0
- package/dist/resources/templates/go-backend/internal/common/jwksapi/handler.go +83 -0
- package/dist/resources/templates/go-backend/internal/common/jwksapi/handler_test.go +104 -0
- package/dist/resources/templates/go-backend/internal/common/locale/locale.go +145 -0
- package/dist/resources/templates/go-backend/internal/common/locale/locale_test.go +75 -0
- package/dist/resources/templates/go-backend/internal/common/mediaref/mediaref.go +54 -0
- package/dist/resources/templates/go-backend/internal/common/mediaref/mediaref_test.go +77 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/apikey_auth.go +320 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/apikey_throttle.go +158 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/auth.go +40 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/auth_test.go +50 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/client_context.go +86 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/cors.go +68 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/event_context.go +18 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/gateway_identity.go +279 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/helpers.go +159 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/iam_delegated_route_permission.go +171 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/iam_delegated_token_auth.go +151 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/iam_delegated_token_auth_test.go +99 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/iam_service_identity.go +138 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/iam_service_token_auth.go +74 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/idempotent.go +273 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/idempotent_test.go +83 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/internal_route_permission.go +45 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/internal_route_permission_test.go +186 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/logging.go +191 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/metrics.go +45 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/middleware_test.go +1516 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/principal_context.go +160 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/principal_context_test.go +355 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/product_context.go +100 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/recovery.go +40 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/referral_attribution.go +178 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/requestid.go +48 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/resource_permission.go +790 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/resource_permission_test.go +440 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/service_credential_auth.go +67 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/tenant.go +148 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/throttle.go +310 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/trusted_client_ip.go +23 -0
- package/dist/resources/templates/go-backend/internal/common/middleware/trusted_client_ip_test.go +60 -0
- package/dist/resources/templates/go-backend/internal/common/money/currency.go +25 -0
- package/dist/resources/templates/go-backend/internal/common/money/errors.go +23 -0
- package/dist/resources/templates/go-backend/internal/common/money/format.go +123 -0
- package/dist/resources/templates/go-backend/internal/common/money/format_test.go +204 -0
- package/dist/resources/templates/go-backend/internal/common/money/gateway.go +144 -0
- package/dist/resources/templates/go-backend/internal/common/money/gateway_test.go +165 -0
- package/dist/resources/templates/go-backend/internal/common/money/rounding.go +56 -0
- package/dist/resources/templates/go-backend/internal/common/money/rounding_test.go +51 -0
- package/dist/resources/templates/go-backend/internal/common/principal/context.go +56 -0
- package/dist/resources/templates/go-backend/internal/common/principal/principal.go +49 -0
- package/dist/resources/templates/go-backend/internal/common/productcode/code.go +24 -0
- package/dist/resources/templates/go-backend/internal/common/productcode/code_test.go +35 -0
- package/dist/resources/templates/go-backend/internal/common/providerconfig/schema.go +577 -0
- package/dist/resources/templates/go-backend/internal/common/providerconfig/schema_test.go +47 -0
- package/dist/resources/templates/go-backend/internal/common/requestprivacy/request.go +246 -0
- package/dist/resources/templates/go-backend/internal/common/requestprivacy/request_test.go +170 -0
- package/dist/resources/templates/go-backend/internal/common/response/pagination.go +60 -0
- package/dist/resources/templates/go-backend/internal/common/response/response.go +110 -0
- package/dist/resources/templates/go-backend/internal/common/response/response_test.go +463 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/ast.go +141 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/ast_test.go +81 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/canonical.go +184 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/canonical_test.go +319 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/decoder.go +555 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/decoder_test.go +260 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/errors.go +55 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/evaluator.go +96 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/evaluator_test.go +220 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/fuzz_test.go +116 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/limits.go +331 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/schema.go +412 -0
- package/dist/resources/templates/go-backend/internal/common/ruleexpression/schema_test.go +164 -0
- package/dist/resources/templates/go-backend/internal/common/runtimeinput/runtime_input.go +627 -0
- package/dist/resources/templates/go-backend/internal/common/runtimeinput/runtime_input_test.go +245 -0
- package/dist/resources/templates/go-backend/internal/common/semver/errors.go +6 -0
- package/dist/resources/templates/go-backend/internal/common/semver/semver.go +125 -0
- package/dist/resources/templates/go-backend/internal/common/semver/semver_test.go +205 -0
- package/dist/resources/templates/go-backend/internal/common/serviceidentity/audience.go +48 -0
- package/dist/resources/templates/go-backend/internal/common/serviceidentity/audience_test.go +35 -0
- package/dist/resources/templates/go-backend/internal/common/serviceidentity/resource_identifier.go +33 -0
- package/dist/resources/templates/go-backend/internal/common/serviceidentity/resource_identifier_test.go +32 -0
- package/dist/resources/templates/go-backend/internal/common/tradeno/generator.go +99 -0
- package/dist/resources/templates/go-backend/internal/common/tradeno/generator_test.go +396 -0
- package/dist/resources/templates/go-backend/internal/common/tradeno/prefix.go +247 -0
- package/dist/resources/templates/go-backend/internal/common/types/asset_url.go +11 -0
- package/dist/resources/templates/go-backend/internal/common/types/billing.go +89 -0
- package/dist/resources/templates/go-backend/internal/common/types/billing_test.go +77 -0
- package/dist/resources/templates/go-backend/internal/common/types/country.go +74 -0
- package/dist/resources/templates/go-backend/internal/common/types/country_test.go +28 -0
- package/dist/resources/templates/go-backend/internal/common/types/currency.go +60 -0
- package/dist/resources/templates/go-backend/internal/common/types/identifiers.go +41 -0
- package/dist/resources/templates/go-backend/internal/common/types/operator.go +28 -0
- package/dist/resources/templates/go-backend/internal/common/types/subscription_entitlement.go +24 -0
- package/dist/resources/templates/go-backend/internal/common/types/subscription_entitlement_test.go +35 -0
- package/dist/resources/templates/go-backend/internal/common/types/tier.go +72 -0
- package/dist/resources/templates/go-backend/internal/common/types/types.go +411 -0
- package/dist/resources/templates/go-backend/internal/common/types/types_test.go +295 -0
- package/dist/resources/templates/go-backend/internal/common/utils/constants.go +100 -0
- package/dist/resources/templates/go-backend/internal/common/utils/crypto.go +158 -0
- package/dist/resources/templates/go-backend/internal/common/utils/crypto_test.go +345 -0
- package/dist/resources/templates/go-backend/internal/common/utils/duration.go +25 -0
- package/dist/resources/templates/go-backend/internal/common/utils/helpers.go +18 -0
- package/dist/resources/templates/go-backend/internal/common/utils/json.go +62 -0
- package/dist/resources/templates/go-backend/internal/common/utils/json_test.go +76 -0
- package/dist/resources/templates/go-backend/internal/common/utils/pagination.go +51 -0
- package/dist/resources/templates/go-backend/internal/common/utils/pagination_test.go +45 -0
- package/dist/resources/templates/go-backend/internal/common/utils/pointer.go +107 -0
- package/dist/resources/templates/go-backend/internal/common/utils/pointer_test.go +15 -0
- package/dist/resources/templates/go-backend/internal/common/utils/slice.go +24 -0
- package/dist/resources/templates/go-backend/internal/common/utils/snowflake.go +110 -0
- package/dist/resources/templates/go-backend/internal/common/utils/snowflake_test.go +316 -0
- package/dist/resources/templates/go-backend/internal/common/utils/string.go +16 -0
- package/dist/resources/templates/go-backend/internal/common/utils/timefmt.go +42 -0
- package/dist/resources/templates/go-backend/internal/common/validator/validator.go +136 -0
- package/dist/resources/templates/go-backend/internal/common/validator/validator_test.go +240 -0
- package/dist/resources/templates/go-backend/internal/common/youtubeapi/client.go +224 -0
- package/dist/resources/templates/go-backend/internal/core/apicontract/document.go +269 -0
- package/dist/resources/templates/go-backend/internal/core/apicontract/document_test.go +104 -0
- package/dist/resources/templates/go-backend/internal/core/apicontract/route_validator.go +78 -0
- package/dist/resources/templates/go-backend/internal/core/apicontract/route_validator_test.go +108 -0
- package/dist/resources/templates/go-backend/internal/core/apidocs/assets/scalar-api-reference.js +2385 -0
- package/dist/resources/templates/go-backend/internal/core/apidocs/assets/scalar-api-reference.metadata.json +10 -0
- package/dist/resources/templates/go-backend/internal/core/apidocs/route.go +107 -0
- package/dist/resources/templates/go-backend/internal/core/apidocs/route_test.go +200 -0
- package/dist/resources/templates/go-backend/internal/core/apidocs/scalar.go +117 -0
- package/dist/resources/templates/go-backend/internal/core/apidocs/scalar_test.go +99 -0
- package/dist/resources/templates/go-backend/internal/core/audit/access_log_policy.go +91 -0
- package/dist/resources/templates/go-backend/internal/core/audit/access_log_policy_test.go +51 -0
- package/dist/resources/templates/go-backend/internal/core/audit/actor_resolver.go +36 -0
- package/dist/resources/templates/go-backend/internal/core/audit/constants.go +30 -0
- package/dist/resources/templates/go-backend/internal/core/audit/context.go +119 -0
- package/dist/resources/templates/go-backend/internal/core/audit/context_test.go +310 -0
- package/dist/resources/templates/go-backend/internal/core/audit/dto.go +468 -0
- package/dist/resources/templates/go-backend/internal/core/audit/dto_admin.go +172 -0
- package/dist/resources/templates/go-backend/internal/core/audit/enum.go +460 -0
- package/dist/resources/templates/go-backend/internal/core/audit/enum_test.go +314 -0
- package/dist/resources/templates/go-backend/internal/core/audit/errors.go +9 -0
- package/dist/resources/templates/go-backend/internal/core/audit/handler.go +568 -0
- package/dist/resources/templates/go-backend/internal/core/audit/listener.go +319 -0
- package/dist/resources/templates/go-backend/internal/core/audit/listener_test.go +98 -0
- package/dist/resources/templates/go-backend/internal/core/audit/middleware.go +669 -0
- package/dist/resources/templates/go-backend/internal/core/audit/middleware_test.go +268 -0
- package/dist/resources/templates/go-backend/internal/core/audit/model.go +306 -0
- package/dist/resources/templates/go-backend/internal/core/audit/partition_job.go +316 -0
- package/dist/resources/templates/go-backend/internal/core/audit/ports.go +9 -0
- package/dist/resources/templates/go-backend/internal/core/audit/provider.go +30 -0
- package/dist/resources/templates/go-backend/internal/core/audit/repository.go +1007 -0
- package/dist/resources/templates/go-backend/internal/core/audit/repository_test.go +934 -0
- package/dist/resources/templates/go-backend/internal/core/audit/router.go +85 -0
- package/dist/resources/templates/go-backend/internal/core/audit/service.go +770 -0
- package/dist/resources/templates/go-backend/internal/core/audit/service_test.go +331 -0
- package/dist/resources/templates/go-backend/internal/core/audit/vo_admin.go +475 -0
- package/dist/resources/templates/go-backend/internal/core/cache/config.go +30 -0
- package/dist/resources/templates/go-backend/internal/core/cache/key.go +41 -0
- package/dist/resources/templates/go-backend/internal/core/cache/key_test.go +62 -0
- package/dist/resources/templates/go-backend/internal/core/cache/l1.go +153 -0
- package/dist/resources/templates/go-backend/internal/core/cache/l1_test.go +212 -0
- package/dist/resources/templates/go-backend/internal/core/cache/manager.go +278 -0
- package/dist/resources/templates/go-backend/internal/core/cache/manager_provider.go +24 -0
- package/dist/resources/templates/go-backend/internal/core/cache/metrics.go +126 -0
- package/dist/resources/templates/go-backend/internal/core/cache/namespace.go +46 -0
- package/dist/resources/templates/go-backend/internal/core/cache/namespace_test.go +90 -0
- package/dist/resources/templates/go-backend/internal/core/cache/options.go +39 -0
- package/dist/resources/templates/go-backend/internal/core/cache/options_test.go +96 -0
- package/dist/resources/templates/go-backend/internal/core/cache/redis.go +311 -0
- package/dist/resources/templates/go-backend/internal/core/cache/redis_test.go +51 -0
- package/dist/resources/templates/go-backend/internal/core/cache/serializer.go +31 -0
- package/dist/resources/templates/go-backend/internal/core/cache/serializer_test.go +139 -0
- package/dist/resources/templates/go-backend/internal/core/cache/singleflight.go +53 -0
- package/dist/resources/templates/go-backend/internal/core/cache/singleflight_test.go +211 -0
- package/dist/resources/templates/go-backend/internal/core/cache/warming.go +86 -0
- package/dist/resources/templates/go-backend/internal/core/clock/clock.go +66 -0
- package/dist/resources/templates/go-backend/internal/core/clock/clock_test.go +26 -0
- package/dist/resources/templates/go-backend/internal/core/clock/runtime_clock.go +283 -0
- package/dist/resources/templates/go-backend/internal/core/clock/runtime_clock_test.go +98 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/errors.go +6 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/model.go +90 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/model_test.go +79 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/namespace.go +7 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/persistence.go +269 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/persistence_test.go +185 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/provider.go +9 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/repository.go +22 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/service.go +853 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/service_persistence_test.go +432 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/service_test.go +891 -0
- package/dist/resources/templates/go-backend/internal/core/commandreplay/types.go +121 -0
- package/dist/resources/templates/go-backend/internal/core/config/config.go +2069 -0
- package/dist/resources/templates/go-backend/internal/core/config/config_test.go +1122 -0
- package/dist/resources/templates/go-backend/internal/core/config/contract/contract_test.go +388 -0
- package/dist/resources/templates/go-backend/internal/core/config/contract/docs.go +198 -0
- package/dist/resources/templates/go-backend/internal/core/config/contract/verify.go +424 -0
- package/dist/resources/templates/go-backend/internal/core/config/enum.go +46 -0
- package/dist/resources/templates/go-backend/internal/core/config/metadata.go +717 -0
- package/dist/resources/templates/go-backend/internal/core/config/metadata_test.go +228 -0
- package/dist/resources/templates/go-backend/internal/core/config/product_admin_config_test.go +210 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/aes_gcm.go +111 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/aes_gcm_test.go +364 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/encryptor.go +12 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/envelope_encryptor.go +134 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/envelope_encryptor_test.go +118 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/pem.go +112 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/pem_test.go +44 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/provider.go +130 -0
- package/dist/resources/templates/go-backend/internal/core/crypto/provider_test.go +92 -0
- package/dist/resources/templates/go-backend/internal/core/database/base_model.go +24 -0
- package/dist/resources/templates/go-backend/internal/core/database/clickhouse.go +121 -0
- package/dist/resources/templates/go-backend/internal/core/database/database.go +112 -0
- package/dist/resources/templates/go-backend/internal/core/database/database_logger_test.go +95 -0
- package/dist/resources/templates/go-backend/internal/core/database/errors.go +25 -0
- package/dist/resources/templates/go-backend/internal/core/database/metrics_plugin.go +105 -0
- package/dist/resources/templates/go-backend/internal/core/database/pool_collector.go +71 -0
- package/dist/resources/templates/go-backend/internal/core/database/read_replica.go +520 -0
- package/dist/resources/templates/go-backend/internal/core/database/transaction.go +170 -0
- package/dist/resources/templates/go-backend/internal/core/database/transaction_test.go +282 -0
- package/dist/resources/templates/go-backend/internal/core/distlock/lock.go +353 -0
- package/dist/resources/templates/go-backend/internal/core/distlock/lock_test.go +106 -0
- package/dist/resources/templates/go-backend/internal/core/errors/handler.go +189 -0
- package/dist/resources/templates/go-backend/internal/core/errors/handler_test.go +515 -0
- package/dist/resources/templates/go-backend/internal/core/eventbus/eventbus.go +667 -0
- package/dist/resources/templates/go-backend/internal/core/eventbus/eventbus_test.go +792 -0
- package/dist/resources/templates/go-backend/internal/core/eventstream/noop.go +22 -0
- package/dist/resources/templates/go-backend/internal/core/eventstream/provider.go +20 -0
- package/dist/resources/templates/go-backend/internal/core/eventstream/publisher.go +38 -0
- package/dist/resources/templates/go-backend/internal/core/eventstream/redis.go +109 -0
- package/dist/resources/templates/go-backend/internal/core/eventstream/routing.go +104 -0
- package/dist/resources/templates/go-backend/internal/core/eventstream/routing_test.go +71 -0
- package/dist/resources/templates/go-backend/internal/core/geoip/model.go +19 -0
- package/dist/resources/templates/go-backend/internal/core/geoip/service.go +88 -0
- package/dist/resources/templates/go-backend/internal/core/health/health.go +333 -0
- package/dist/resources/templates/go-backend/internal/core/health/health_test.go +27 -0
- package/dist/resources/templates/go-backend/internal/core/httpclient/client.go +772 -0
- package/dist/resources/templates/go-backend/internal/core/httpclient/client_test.go +287 -0
- package/dist/resources/templates/go-backend/internal/core/httpclient/download.go +578 -0
- package/dist/resources/templates/go-backend/internal/core/httpclient/download_test.go +374 -0
- package/dist/resources/templates/go-backend/internal/core/jwtkeyring/jwk.go +38 -0
- package/dist/resources/templates/go-backend/internal/core/jwtkeyring/keyring.go +144 -0
- package/dist/resources/templates/go-backend/internal/core/jwtkeyring/keyring_test.go +128 -0
- package/dist/resources/templates/go-backend/internal/core/jwtkeyring/registry.go +60 -0
- package/dist/resources/templates/go-backend/internal/core/logger/logger.go +53 -0
- package/dist/resources/templates/go-backend/internal/core/logger/logger_test.go +194 -0
- package/dist/resources/templates/go-backend/internal/core/observability/metrics.go +358 -0
- package/dist/resources/templates/go-backend/internal/core/observability/sentry.go +445 -0
- package/dist/resources/templates/go-backend/internal/core/observability/sentry_privacy_test.go +175 -0
- package/dist/resources/templates/go-backend/internal/core/observability/tracing.go +187 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/model.go +314 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/model_test.go +77 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/persistence.go +51 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/provider.go +23 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/relay.go +1138 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/relay_postgres_test.go +257 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/relay_test.go +690 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/rescheduler.go +164 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/rescheduler_test.go +209 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/writer.go +249 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/writer_postgres_test.go +170 -0
- package/dist/resources/templates/go-backend/internal/core/outbox/writer_test.go +123 -0
- package/dist/resources/templates/go-backend/internal/core/provider.go +198 -0
- package/dist/resources/templates/go-backend/internal/core/queue/metrics_middleware.go +38 -0
- package/dist/resources/templates/go-backend/internal/core/queue/metrics_middleware_test.go +12 -0
- package/dist/resources/templates/go-backend/internal/core/queue/queue.go +288 -0
- package/dist/resources/templates/go-backend/internal/core/queue/queue_test.go +159 -0
- package/dist/resources/templates/go-backend/internal/core/resilience/bulkhead.go +514 -0
- package/dist/resources/templates/go-backend/internal/core/resilience/bulkhead_test.go +984 -0
- package/dist/resources/templates/go-backend/internal/core/resilience/circuitbreaker.go +358 -0
- package/dist/resources/templates/go-backend/internal/core/resilience/circuitbreaker_test.go +788 -0
- package/dist/resources/templates/go-backend/internal/core/resilience/retry.go +318 -0
- package/dist/resources/templates/go-backend/internal/core/resilience/retry_test.go +735 -0
- package/dist/resources/templates/go-backend/internal/core/schedule/recorder.go +305 -0
- package/dist/resources/templates/go-backend/internal/core/schedule/run_context.go +124 -0
- package/dist/resources/templates/go-backend/internal/core/schedule/run_context_test.go +85 -0
- package/dist/resources/templates/go-backend/internal/core/schedule/scheduler.go +1589 -0
- package/dist/resources/templates/go-backend/internal/core/schedule/scheduler_control_test.go +808 -0
- package/dist/resources/templates/go-backend/internal/core/storage/oss_provider.go +398 -0
- package/dist/resources/templates/go-backend/internal/core/storage/oss_provider_test.go +89 -0
- package/dist/resources/templates/go-backend/internal/core/storage/path.go +110 -0
- package/dist/resources/templates/go-backend/internal/core/storage/path_test.go +301 -0
- package/dist/resources/templates/go-backend/internal/core/storage/s3_provider.go +489 -0
- package/dist/resources/templates/go-backend/internal/core/storage/s3_provider_test.go +60 -0
- package/dist/resources/templates/go-backend/internal/core/storage/storage.go +268 -0
- package/dist/resources/templates/go-backend/internal/core/storage/validation.go +225 -0
- package/dist/resources/templates/go-backend/internal/core/storage/validation_test.go +495 -0
- package/dist/resources/templates/go-backend/internal/core/temporal/logger.go +38 -0
- package/dist/resources/templates/go-backend/internal/core/temporal/provider.go +126 -0
- package/dist/resources/templates/go-backend/internal/core/temporal/provider_test.go +67 -0
- package/dist/resources/templates/go-backend/internal/core/websocket/client.go +282 -0
- package/dist/resources/templates/go-backend/internal/core/websocket/client_test.go +81 -0
- package/dist/resources/templates/go-backend/internal/core/websocket/config.go +58 -0
- package/dist/resources/templates/go-backend/internal/core/websocket/handler.go +53 -0
- package/dist/resources/templates/go-backend/internal/core/websocket/hub.go +269 -0
- package/dist/resources/templates/go-backend/internal/core/websocket/message.go +273 -0
- package/dist/resources/templates/go-backend/internal/core/websocket/notifier.go +92 -0
- package/dist/resources/templates/go-backend/internal/core/websocket/provider.go +33 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/action.go +77 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/action_test.go +238 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/condition.go +107 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/decision.go +256 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/enum.go +643 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/errors.go +102 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/principal_record.go +21 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/product_context.go +486 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/resource.go +215 -0
- package/dist/resources/templates/go-backend/internal/integrations/onex/iam/resource_test.go +242 -0
- package/dist/resources/templates/go-backend/internal/products/README.md +5 -0
- package/dist/resources/templates/go-backend/internal/sharedevents/README.md +5 -0
- package/dist/resources/templates/go-backend/migrations/000001_infrastructure.down.sql +13 -0
- package/dist/resources/templates/go-backend/migrations/000001_infrastructure.up.sql +886 -0
- package/dist/resources/templates/go-backend/pkg/apierror/error.go +327 -0
- package/dist/resources/templates/go-backend/pkg/apierror/error_code.go +65 -0
- package/dist/resources/templates/go-backend/pkg/apierror/error_test.go +41 -0
- package/dist/resources/templates/go-backend/pkg/apierror/error_type.go +14 -0
- package/dist/resources/templates/go-backend/pkg/apierror/http_response.go +216 -0
- package/dist/resources/templates/go-backend/pkg/apierror/http_response_test.go +216 -0
- package/dist/resources/templates/go-backend/scripts/check-openapi-clean-deletion.sh +54 -0
- package/dist/resources/templates/go-backend/scripts/test-migrations.sh +32 -0
- package/dist/resources/templates/go-backend/tests/infrastructure.sql +69 -0
- package/dist/resources/templates/mcp-server/.claude/docs/stack.md +338 -0
- package/dist/resources/templates/mcp-server/.editorconfig +13 -0
- package/dist/resources/templates/mcp-server/.env.example +8 -0
- package/dist/resources/templates/mcp-server/.github/ISSUE_TEMPLATE/bug_report.yml +104 -0
- package/dist/resources/templates/mcp-server/.github/ISSUE_TEMPLATE/feature_request.yml +54 -0
- package/dist/resources/templates/mcp-server/.github/PULL_REQUEST_TEMPLATE.md +36 -0
- package/dist/resources/templates/mcp-server/.github/workflows/ci.yml +78 -0
- package/dist/resources/templates/mcp-server/.husky/commit-msg +1 -0
- package/dist/resources/templates/mcp-server/.husky/pre-commit +1 -0
- package/dist/resources/templates/mcp-server/.lintstagedrc.json +4 -0
- package/dist/resources/templates/mcp-server/.nvmrc +1 -0
- package/dist/resources/templates/mcp-server/.prettierrc +8 -0
- package/dist/resources/templates/mcp-server/CONTRIBUTING.md +184 -0
- package/dist/resources/templates/mcp-server/Dockerfile +23 -0
- package/dist/resources/templates/mcp-server/LICENSE +21 -0
- package/dist/resources/templates/mcp-server/README.md +123 -0
- package/dist/resources/templates/mcp-server/_gitignore +26 -0
- package/dist/resources/templates/mcp-server/commitlint.config.js +24 -0
- package/dist/resources/templates/mcp-server/eslint.config.js +30 -0
- package/dist/resources/templates/mcp-server/package.json +72 -0
- package/dist/resources/templates/mcp-server/src/index.ts +27 -0
- package/dist/resources/templates/mcp-server/src/resources.ts +33 -0
- package/dist/resources/templates/mcp-server/src/services/.gitkeep +0 -0
- package/dist/resources/templates/mcp-server/src/tools.ts +43 -0
- package/dist/resources/templates/mcp-server/src/types/index.ts +19 -0
- package/dist/resources/templates/mcp-server/src/utils/index.ts +31 -0
- package/dist/resources/templates/mcp-server/tsconfig.json +22 -0
- package/dist/resources/templates/mcp-server/tsup.config.ts +14 -0
- package/dist/resources/templates/mcp-server/vitest.config.ts +15 -0
- package/dist/resources/templates/nuxt/.claude/docs/stack.md +666 -0
- package/dist/resources/templates/nuxt/.editorconfig +15 -0
- package/dist/resources/templates/nuxt/.env.example +22 -0
- package/dist/resources/templates/nuxt/.github/workflows/ci.yml +34 -0
- package/dist/resources/templates/nuxt/.husky/commit-msg +1 -0
- package/dist/resources/templates/nuxt/.husky/pre-commit +1 -0
- package/dist/resources/templates/nuxt/.nvmrc +1 -0
- package/dist/resources/templates/nuxt/.prettierignore +9 -0
- package/dist/resources/templates/nuxt/.prettierrc +1 -0
- package/dist/resources/templates/nuxt/README.md +23 -0
- package/dist/resources/templates/nuxt/_gitignore +7 -0
- package/dist/resources/templates/nuxt/app/app.config.ts +105 -0
- package/dist/resources/templates/nuxt/app/i18n/locales/en.json +5 -0
- package/dist/resources/templates/nuxt/app/pages/app/index.vue +224 -0
- package/dist/resources/templates/nuxt/app/pages/authors/[slug].vue +37 -0
- package/dist/resources/templates/nuxt/app/pages/blog/[slug].vue +55 -0
- package/dist/resources/templates/nuxt/app/pages/blog/category/[category].vue +38 -0
- package/dist/resources/templates/nuxt/app/pages/blog/index.vue +46 -0
- package/dist/resources/templates/nuxt/app/pages/index.vue +626 -0
- package/dist/resources/templates/nuxt/app/pages/legal/privacy.vue +21 -0
- package/dist/resources/templates/nuxt/app/pages/legal/terms.vue +21 -0
- package/dist/resources/templates/nuxt/app/pages/ui/index.vue +397 -0
- package/dist/resources/templates/nuxt/commitlint.config.mjs +1 -0
- package/dist/resources/templates/nuxt/eslint.config.mjs +4 -0
- package/dist/resources/templates/nuxt/lint-staged.config.mjs +8 -0
- package/dist/resources/templates/nuxt/nuxt.config.ts +71 -0
- package/dist/resources/templates/nuxt/package.json +67 -0
- package/dist/resources/templates/nuxt/public/apple-touch-icon.png +0 -0
- package/dist/resources/templates/nuxt/public/favicon.ico +0 -0
- package/dist/resources/templates/nuxt/public/favicon.svg +5 -0
- package/dist/resources/templates/nuxt/public/icon-16x16.png +0 -0
- package/dist/resources/templates/nuxt/public/icon-192x192.png +0 -0
- package/dist/resources/templates/nuxt/public/icon-32x32.png +0 -0
- package/dist/resources/templates/nuxt/public/icon-512x512.png +0 -0
- package/dist/resources/templates/nuxt/public/logo.svg +6 -0
- package/dist/resources/templates/nuxt/public/media/hero-product-gallery.png +0 -0
- package/dist/resources/templates/nuxt/server/api/content/sitemap-urls.get.ts +12 -0
- package/dist/resources/templates/nuxt/server/api/preview.get.ts +9 -0
- package/dist/resources/templates/nuxt/stylelint.config.mjs +3 -0
- package/dist/resources/templates/nuxt/test/e2e/rendering.test.ts +13 -0
- package/dist/resources/templates/nuxt/tsconfig.json +3 -0
- package/dist/resources/templates/nuxt/vitest.config.ts +8 -0
- 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
|
+
)
|