@baruk/core 0.1.0 → 0.2.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/CHANGELOG.md +59 -0
- package/dist/auth/password-reset.d.ts.map +1 -1
- package/dist/auth/password-reset.js +2 -4
- package/dist/auth/password-reset.js.map +1 -1
- package/dist/auth/password.d.ts +2 -18
- package/dist/auth/password.d.ts.map +1 -1
- package/dist/auth/password.js +12 -51
- package/dist/auth/password.js.map +1 -1
- package/dist/auth/service.d.ts +0 -12
- package/dist/auth/service.d.ts.map +1 -1
- package/dist/auth/service.js +3 -36
- package/dist/auth/service.js.map +1 -1
- package/dist/auth/session-token.d.ts +5 -2
- package/dist/auth/session-token.d.ts.map +1 -1
- package/dist/auth/session-token.js +7 -12
- package/dist/auth/session-token.js.map +1 -1
- package/dist/billing/dunning.d.ts +33 -0
- package/dist/billing/dunning.d.ts.map +1 -0
- package/dist/billing/dunning.js +49 -0
- package/dist/billing/dunning.js.map +1 -0
- package/dist/billing/provider/asaas.d.ts +15 -0
- package/dist/billing/provider/asaas.d.ts.map +1 -0
- package/dist/billing/provider/asaas.js +121 -0
- package/dist/billing/provider/asaas.js.map +1 -0
- package/dist/billing/provider/manual.d.ts +14 -0
- package/dist/billing/provider/manual.d.ts.map +1 -0
- package/dist/billing/provider/manual.js +24 -0
- package/dist/billing/provider/manual.js.map +1 -0
- package/dist/billing/provider/registry.d.ts +12 -0
- package/dist/billing/provider/registry.d.ts.map +1 -0
- package/dist/billing/provider/registry.js +22 -0
- package/dist/billing/provider/registry.js.map +1 -0
- package/dist/billing/provider/types.d.ts +76 -0
- package/dist/billing/provider/types.d.ts.map +1 -0
- package/dist/billing/provider/types.js +9 -0
- package/dist/billing/provider/types.js.map +1 -0
- package/dist/billing/receivable.d.ts +108 -0
- package/dist/billing/receivable.d.ts.map +1 -0
- package/dist/billing/receivable.js +2 -0
- package/dist/billing/receivable.js.map +1 -0
- package/dist/billing/repository.d.ts +97 -0
- package/dist/billing/repository.d.ts.map +1 -0
- package/dist/billing/repository.js +167 -0
- package/dist/billing/repository.js.map +1 -0
- package/dist/cjs/audit/audit.js +31 -0
- package/dist/cjs/audit/audit.js.map +1 -0
- package/dist/cjs/audit/repository.js +32 -0
- package/dist/cjs/audit/repository.js.map +1 -0
- package/dist/cjs/auth/password-reset.js +58 -0
- package/dist/cjs/auth/password-reset.js.map +1 -0
- package/dist/cjs/auth/password.js +32 -0
- package/dist/cjs/auth/password.js.map +1 -0
- package/dist/cjs/auth/service.js +191 -0
- package/dist/cjs/auth/service.js.map +1 -0
- package/dist/cjs/auth/session-token.js +18 -0
- package/dist/cjs/auth/session-token.js.map +1 -0
- package/dist/cjs/billing/dunning.js +54 -0
- package/dist/cjs/billing/dunning.js.map +1 -0
- package/dist/cjs/billing/provider/asaas.js +125 -0
- package/dist/cjs/billing/provider/asaas.js.map +1 -0
- package/dist/cjs/billing/provider/manual.js +28 -0
- package/dist/cjs/billing/provider/manual.js.map +1 -0
- package/dist/cjs/billing/provider/registry.js +27 -0
- package/dist/cjs/billing/provider/registry.js.map +1 -0
- package/dist/cjs/billing/provider/types.js +10 -0
- package/dist/cjs/billing/provider/types.js.map +1 -0
- package/dist/cjs/billing/receivable.js +3 -0
- package/dist/cjs/billing/receivable.js.map +1 -0
- package/dist/cjs/billing/repository.js +180 -0
- package/dist/cjs/billing/repository.js.map +1 -0
- package/dist/cjs/clients/repository.js +123 -0
- package/dist/cjs/clients/repository.js.map +1 -0
- package/dist/cjs/commercial-catalog/catalog.js +108 -0
- package/dist/cjs/commercial-catalog/catalog.js.map +1 -0
- package/dist/cjs/commercial-catalog/consumption-contracts.js +10 -0
- package/dist/cjs/commercial-catalog/consumption-contracts.js.map +1 -0
- package/dist/cjs/commercial-catalog/coupon.js +53 -0
- package/dist/cjs/commercial-catalog/coupon.js.map +1 -0
- package/dist/cjs/commercial-catalog/index.js +16 -0
- package/dist/cjs/commercial-catalog/index.js.map +1 -0
- package/dist/cjs/commercial-catalog/offer-application.js +53 -0
- package/dist/cjs/commercial-catalog/offer-application.js.map +1 -0
- package/dist/cjs/commercial-catalog/types.js +26 -0
- package/dist/cjs/commercial-catalog/types.js.map +1 -0
- package/dist/cjs/crm/repository.js +195 -0
- package/dist/cjs/crm/repository.js.map +1 -0
- package/dist/cjs/dashboard/repository.js +39 -0
- package/dist/cjs/dashboard/repository.js.map +1 -0
- package/dist/cjs/db/client.js +27 -0
- package/dist/cjs/db/client.js.map +1 -0
- package/dist/cjs/db/context.js +43 -0
- package/dist/cjs/db/context.js.map +1 -0
- package/dist/cjs/db/load-env.js +47 -0
- package/dist/cjs/db/load-env.js.map +1 -0
- package/dist/cjs/db/seed.js +69 -0
- package/dist/cjs/db/seed.js.map +1 -0
- package/dist/cjs/entitlements/decision.js +203 -0
- package/dist/cjs/entitlements/decision.js.map +1 -0
- package/dist/cjs/entitlements/derive.js +46 -0
- package/dist/cjs/entitlements/derive.js.map +1 -0
- package/dist/cjs/entitlements/index.js +23 -0
- package/dist/cjs/entitlements/index.js.map +1 -0
- package/dist/cjs/entitlements/sources.js +60 -0
- package/dist/cjs/entitlements/sources.js.map +1 -0
- package/dist/cjs/entitlements/standing.js +42 -0
- package/dist/cjs/entitlements/standing.js.map +1 -0
- package/dist/cjs/entitlements/types.js +16 -0
- package/dist/cjs/entitlements/types.js.map +1 -0
- package/dist/cjs/import/clients-import.js +147 -0
- package/dist/cjs/import/clients-import.js.map +1 -0
- package/dist/cjs/index.js +335 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mail/dedup-store.js +56 -0
- package/dist/cjs/mail/dedup-store.js.map +1 -0
- package/dist/cjs/mail/index.js +24 -0
- package/dist/cjs/mail/index.js.map +1 -0
- package/dist/cjs/mail/provider.js +251 -0
- package/dist/cjs/mail/provider.js.map +1 -0
- package/dist/cjs/mail/resend-client.js +103 -0
- package/dist/cjs/mail/resend-client.js.map +1 -0
- package/dist/cjs/mail/resend.js +21 -0
- package/dist/cjs/mail/resend.js.map +1 -0
- package/dist/cjs/mail/sanitize.js +56 -0
- package/dist/cjs/mail/sanitize.js.map +1 -0
- package/dist/cjs/mail/sender-resolver.js +15 -0
- package/dist/cjs/mail/sender-resolver.js.map +1 -0
- package/dist/cjs/mail/template-renderer.js +21 -0
- package/dist/cjs/mail/template-renderer.js.map +1 -0
- package/dist/cjs/mail/types.js +38 -0
- package/dist/cjs/mail/types.js.map +1 -0
- package/dist/cjs/notifications/repository.js +49 -0
- package/dist/cjs/notifications/repository.js.map +1 -0
- package/dist/cjs/onboarding/domain.js +370 -0
- package/dist/cjs/onboarding/domain.js.map +1 -0
- package/dist/cjs/onboarding/interaction-review.js +425 -0
- package/dist/cjs/onboarding/interaction-review.js.map +1 -0
- package/dist/cjs/onboarding/persistence.js +444 -0
- package/dist/cjs/onboarding/persistence.js.map +1 -0
- package/dist/cjs/onboarding/portal-actions.js +157 -0
- package/dist/cjs/onboarding/portal-actions.js.map +1 -0
- package/dist/cjs/onboarding/portal.js +177 -0
- package/dist/cjs/onboarding/portal.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/portal/repository.js +37 -0
- package/dist/cjs/portal/repository.js.map +1 -0
- package/dist/cjs/pricing-engine/bundle.js +49 -0
- package/dist/cjs/pricing-engine/bundle.js.map +1 -0
- package/dist/cjs/pricing-engine/errors.js +48 -0
- package/dist/cjs/pricing-engine/errors.js.map +1 -0
- package/dist/cjs/pricing-engine/index.js +30 -0
- package/dist/cjs/pricing-engine/index.js.map +1 -0
- package/dist/cjs/pricing-engine/money.js +69 -0
- package/dist/cjs/pricing-engine/money.js.map +1 -0
- package/dist/cjs/pricing-engine/pipeline.js +330 -0
- package/dist/cjs/pricing-engine/pipeline.js.map +1 -0
- package/dist/cjs/pricing-engine/proration.js +53 -0
- package/dist/cjs/pricing-engine/proration.js.map +1 -0
- package/dist/cjs/pricing-engine/shadow.js +58 -0
- package/dist/cjs/pricing-engine/shadow.js.map +1 -0
- package/dist/cjs/pricing-engine/types.js +34 -0
- package/dist/cjs/pricing-engine/types.js.map +1 -0
- package/dist/cjs/products/catalog.js +10 -0
- package/dist/cjs/products/catalog.js.map +1 -0
- package/dist/cjs/products/repository.js +61 -0
- package/dist/cjs/products/repository.js.map +1 -0
- package/dist/cjs/rbac/authorize.js +36 -0
- package/dist/cjs/rbac/authorize.js.map +1 -0
- package/dist/cjs/rbac/catalog.js +455 -0
- package/dist/cjs/rbac/catalog.js.map +1 -0
- package/dist/cjs/requests/repository.js +114 -0
- package/dist/cjs/requests/repository.js.map +1 -0
- package/dist/cjs/subscription-billing/dunning.js +26 -0
- package/dist/cjs/subscription-billing/dunning.js.map +1 -0
- package/dist/cjs/subscription-billing/events.js +45 -0
- package/dist/cjs/subscription-billing/events.js.map +1 -0
- package/dist/cjs/subscription-billing/index.js +62 -0
- package/dist/cjs/subscription-billing/index.js.map +1 -0
- package/dist/cjs/subscription-billing/plans.js +88 -0
- package/dist/cjs/subscription-billing/plans.js.map +1 -0
- package/dist/cjs/subscription-billing/product-config.js +54 -0
- package/dist/cjs/subscription-billing/product-config.js.map +1 -0
- package/dist/cjs/subscription-billing/provider/asaas.js +233 -0
- package/dist/cjs/subscription-billing/provider/asaas.js.map +1 -0
- package/dist/cjs/subscription-billing/provider/disabled.js +46 -0
- package/dist/cjs/subscription-billing/provider/disabled.js.map +1 -0
- package/dist/cjs/subscription-billing/provider/registry.js +29 -0
- package/dist/cjs/subscription-billing/provider/registry.js.map +1 -0
- package/dist/cjs/subscription-billing/reconcile.js +198 -0
- package/dist/cjs/subscription-billing/reconcile.js.map +1 -0
- package/dist/cjs/subscription-billing/repository.js +359 -0
- package/dist/cjs/subscription-billing/repository.js.map +1 -0
- package/dist/cjs/subscription-billing/service.js +838 -0
- package/dist/cjs/subscription-billing/service.js.map +1 -0
- package/dist/cjs/subscription-billing/types.js +28 -0
- package/dist/cjs/subscription-billing/types.js.map +1 -0
- package/dist/cjs/tenancy/provisioning.js +126 -0
- package/dist/cjs/tenancy/provisioning.js.map +1 -0
- package/dist/cjs/users/repository.js +83 -0
- package/dist/cjs/users/repository.js.map +1 -0
- package/dist/cjs/vault/crypto.js +94 -0
- package/dist/cjs/vault/crypto.js.map +1 -0
- package/dist/cjs/vault/repository.js +120 -0
- package/dist/cjs/vault/repository.js.map +1 -0
- package/dist/commercial-catalog/catalog.d.ts +27 -0
- package/dist/commercial-catalog/catalog.d.ts.map +1 -0
- package/dist/commercial-catalog/catalog.js +104 -0
- package/dist/commercial-catalog/catalog.js.map +1 -0
- package/dist/commercial-catalog/consumption-contracts.d.ts +33 -0
- package/dist/commercial-catalog/consumption-contracts.d.ts.map +1 -0
- package/dist/commercial-catalog/consumption-contracts.js +9 -0
- package/dist/commercial-catalog/consumption-contracts.js.map +1 -0
- package/dist/commercial-catalog/coupon.d.ts +27 -0
- package/dist/commercial-catalog/coupon.d.ts.map +1 -0
- package/dist/commercial-catalog/coupon.js +47 -0
- package/dist/commercial-catalog/coupon.js.map +1 -0
- package/dist/commercial-catalog/index.d.ts +10 -0
- package/dist/commercial-catalog/index.d.ts.map +1 -0
- package/dist/commercial-catalog/index.js +5 -0
- package/dist/commercial-catalog/index.js.map +1 -0
- package/dist/commercial-catalog/offer-application.d.ts +39 -0
- package/dist/commercial-catalog/offer-application.d.ts.map +1 -0
- package/dist/commercial-catalog/offer-application.js +50 -0
- package/dist/commercial-catalog/offer-application.js.map +1 -0
- package/dist/commercial-catalog/types.d.ts +155 -0
- package/dist/commercial-catalog/types.d.ts.map +1 -0
- package/dist/commercial-catalog/types.js +23 -0
- package/dist/commercial-catalog/types.js.map +1 -0
- package/dist/crm/repository.d.ts +109 -0
- package/dist/crm/repository.d.ts.map +1 -0
- package/dist/crm/repository.js +181 -0
- package/dist/crm/repository.js.map +1 -0
- package/dist/db/context.d.ts +2 -0
- package/dist/db/context.d.ts.map +1 -1
- package/dist/db/context.js +3 -0
- package/dist/db/context.js.map +1 -1
- package/dist/db/migrate.js +7 -2
- package/dist/db/migrate.js.map +1 -1
- package/dist/db/seed.js +4 -1
- package/dist/db/seed.js.map +1 -1
- package/dist/entitlements/decision.d.ts +86 -0
- package/dist/entitlements/decision.d.ts.map +1 -0
- package/dist/entitlements/decision.js +196 -0
- package/dist/entitlements/decision.js.map +1 -0
- package/dist/entitlements/derive.d.ts +30 -0
- package/dist/entitlements/derive.d.ts.map +1 -0
- package/dist/entitlements/derive.js +42 -0
- package/dist/entitlements/derive.js.map +1 -0
- package/dist/entitlements/index.d.ts +10 -0
- package/dist/entitlements/index.d.ts.map +1 -0
- package/dist/entitlements/index.js +7 -0
- package/dist/entitlements/index.js.map +1 -0
- package/dist/entitlements/sources.d.ts +30 -0
- package/dist/entitlements/sources.d.ts.map +1 -0
- package/dist/entitlements/sources.js +55 -0
- package/dist/entitlements/sources.js.map +1 -0
- package/dist/entitlements/standing.d.ts +22 -0
- package/dist/entitlements/standing.d.ts.map +1 -0
- package/dist/entitlements/standing.js +38 -0
- package/dist/entitlements/standing.js.map +1 -0
- package/dist/entitlements/types.d.ts +26 -0
- package/dist/entitlements/types.d.ts.map +1 -0
- package/dist/entitlements/types.js +15 -0
- package/dist/entitlements/types.js.map +1 -0
- package/dist/index.d.ts +74 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -4
- package/dist/index.js.map +1 -1
- package/dist/mail/dedup-store.d.ts +25 -0
- package/dist/mail/dedup-store.d.ts.map +1 -0
- package/dist/mail/dedup-store.js +51 -0
- package/dist/mail/dedup-store.js.map +1 -0
- package/dist/mail/index.d.ts +10 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +9 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/provider.d.ts +31 -0
- package/dist/mail/provider.d.ts.map +1 -0
- package/dist/mail/provider.js +248 -0
- package/dist/mail/provider.js.map +1 -0
- package/dist/mail/resend-client.d.ts +16 -0
- package/dist/mail/resend-client.d.ts.map +1 -0
- package/dist/mail/resend-client.js +100 -0
- package/dist/mail/resend-client.js.map +1 -0
- package/dist/mail/resend.d.ts.map +1 -1
- package/dist/mail/resend.js +2 -0
- package/dist/mail/resend.js.map +1 -1
- package/dist/mail/sanitize.d.ts +17 -0
- package/dist/mail/sanitize.d.ts.map +1 -0
- package/dist/mail/sanitize.js +51 -0
- package/dist/mail/sanitize.js.map +1 -0
- package/dist/mail/sender-resolver.d.ts +8 -0
- package/dist/mail/sender-resolver.d.ts.map +1 -0
- package/dist/mail/sender-resolver.js +11 -0
- package/dist/mail/sender-resolver.js.map +1 -0
- package/dist/mail/template-renderer.d.ts +10 -0
- package/dist/mail/template-renderer.d.ts.map +1 -0
- package/dist/mail/template-renderer.js +17 -0
- package/dist/mail/template-renderer.js.map +1 -0
- package/dist/mail/types.d.ts +143 -0
- package/dist/mail/types.d.ts.map +1 -0
- package/dist/mail/types.js +34 -0
- package/dist/mail/types.js.map +1 -0
- package/dist/onboarding/domain.d.ts +146 -0
- package/dist/onboarding/domain.d.ts.map +1 -0
- package/dist/onboarding/domain.js +348 -0
- package/dist/onboarding/domain.js.map +1 -0
- package/dist/onboarding/interaction-review.d.ts +123 -0
- package/dist/onboarding/interaction-review.d.ts.map +1 -0
- package/dist/onboarding/interaction-review.js +413 -0
- package/dist/onboarding/interaction-review.js.map +1 -0
- package/dist/onboarding/persistence.d.ts +106 -0
- package/dist/onboarding/persistence.d.ts.map +1 -0
- package/dist/onboarding/persistence.js +430 -0
- package/dist/onboarding/persistence.js.map +1 -0
- package/dist/onboarding/portal-actions.d.ts +48 -0
- package/dist/onboarding/portal-actions.d.ts.map +1 -0
- package/dist/onboarding/portal-actions.js +153 -0
- package/dist/onboarding/portal-actions.js.map +1 -0
- package/dist/onboarding/portal.d.ts +58 -0
- package/dist/onboarding/portal.d.ts.map +1 -0
- package/dist/onboarding/portal.js +170 -0
- package/dist/onboarding/portal.js.map +1 -0
- package/dist/pricing-engine/bundle.d.ts +22 -0
- package/dist/pricing-engine/bundle.d.ts.map +1 -0
- package/dist/pricing-engine/bundle.js +44 -0
- package/dist/pricing-engine/bundle.js.map +1 -0
- package/dist/pricing-engine/errors.d.ts +32 -0
- package/dist/pricing-engine/errors.d.ts.map +1 -0
- package/dist/pricing-engine/errors.js +44 -0
- package/dist/pricing-engine/errors.js.map +1 -0
- package/dist/pricing-engine/index.d.ts +12 -0
- package/dist/pricing-engine/index.d.ts.map +1 -0
- package/dist/pricing-engine/index.js +8 -0
- package/dist/pricing-engine/index.js.map +1 -0
- package/dist/pricing-engine/money.d.ts +32 -0
- package/dist/pricing-engine/money.d.ts.map +1 -0
- package/dist/pricing-engine/money.js +58 -0
- package/dist/pricing-engine/money.js.map +1 -0
- package/dist/pricing-engine/pipeline.d.ts +3 -0
- package/dist/pricing-engine/pipeline.d.ts.map +1 -0
- package/dist/pricing-engine/pipeline.js +327 -0
- package/dist/pricing-engine/pipeline.js.map +1 -0
- package/dist/pricing-engine/proration.d.ts +3 -0
- package/dist/pricing-engine/proration.d.ts.map +1 -0
- package/dist/pricing-engine/proration.js +50 -0
- package/dist/pricing-engine/proration.js.map +1 -0
- package/dist/pricing-engine/shadow.d.ts +51 -0
- package/dist/pricing-engine/shadow.d.ts.map +1 -0
- package/dist/pricing-engine/shadow.js +54 -0
- package/dist/pricing-engine/shadow.js.map +1 -0
- package/dist/pricing-engine/types.d.ts +184 -0
- package/dist/pricing-engine/types.d.ts.map +1 -0
- package/dist/pricing-engine/types.js +31 -0
- package/dist/pricing-engine/types.js.map +1 -0
- package/dist/rbac/authorize.d.ts +3 -6
- package/dist/rbac/authorize.d.ts.map +1 -1
- package/dist/rbac/authorize.js +4 -8
- package/dist/rbac/authorize.js.map +1 -1
- package/dist/rbac/catalog.d.ts.map +1 -1
- package/dist/rbac/catalog.js +414 -21
- package/dist/rbac/catalog.js.map +1 -1
- package/dist/subscription-billing/dunning.d.ts +18 -0
- package/dist/subscription-billing/dunning.d.ts.map +1 -0
- package/dist/subscription-billing/dunning.js +28 -0
- package/dist/subscription-billing/dunning.js.map +1 -0
- package/dist/subscription-billing/events.d.ts +58 -0
- package/dist/subscription-billing/events.d.ts.map +1 -0
- package/dist/subscription-billing/events.js +38 -0
- package/dist/subscription-billing/events.js.map +1 -0
- package/dist/subscription-billing/index.d.ts +18 -0
- package/dist/subscription-billing/index.d.ts.map +1 -0
- package/dist/subscription-billing/index.js +16 -0
- package/dist/subscription-billing/index.js.map +1 -0
- package/dist/subscription-billing/plans.d.ts +34 -0
- package/dist/subscription-billing/plans.d.ts.map +1 -0
- package/dist/subscription-billing/plans.js +85 -0
- package/dist/subscription-billing/plans.js.map +1 -0
- package/dist/subscription-billing/product-config.d.ts +61 -0
- package/dist/subscription-billing/product-config.d.ts.map +1 -0
- package/dist/subscription-billing/product-config.js +50 -0
- package/dist/subscription-billing/product-config.js.map +1 -0
- package/dist/subscription-billing/provider/asaas.d.ts +26 -0
- package/dist/subscription-billing/provider/asaas.d.ts.map +1 -0
- package/dist/subscription-billing/provider/asaas.js +229 -0
- package/dist/subscription-billing/provider/asaas.js.map +1 -0
- package/dist/subscription-billing/provider/disabled.d.ts +30 -0
- package/dist/subscription-billing/provider/disabled.d.ts.map +1 -0
- package/dist/subscription-billing/provider/disabled.js +42 -0
- package/dist/subscription-billing/provider/disabled.js.map +1 -0
- package/dist/subscription-billing/provider/registry.d.ts +10 -0
- package/dist/subscription-billing/provider/registry.d.ts.map +1 -0
- package/dist/subscription-billing/provider/registry.js +26 -0
- package/dist/subscription-billing/provider/registry.js.map +1 -0
- package/dist/subscription-billing/reconcile.d.ts +45 -0
- package/dist/subscription-billing/reconcile.d.ts.map +1 -0
- package/dist/subscription-billing/reconcile.js +192 -0
- package/dist/subscription-billing/reconcile.js.map +1 -0
- package/dist/subscription-billing/repository.d.ts +168 -0
- package/dist/subscription-billing/repository.d.ts.map +1 -0
- package/dist/subscription-billing/repository.js +336 -0
- package/dist/subscription-billing/repository.js.map +1 -0
- package/dist/subscription-billing/service.d.ts +175 -0
- package/dist/subscription-billing/service.d.ts.map +1 -0
- package/dist/subscription-billing/service.js +818 -0
- package/dist/subscription-billing/service.js.map +1 -0
- package/dist/subscription-billing/types.d.ts +161 -0
- package/dist/subscription-billing/types.d.ts.map +1 -0
- package/dist/subscription-billing/types.js +24 -0
- package/dist/subscription-billing/types.js.map +1 -0
- package/dist/vault/crypto.d.ts +22 -0
- package/dist/vault/crypto.d.ts.map +1 -0
- package/dist/vault/crypto.js +88 -0
- package/dist/vault/crypto.js.map +1 -0
- package/dist/vault/repository.d.ts +45 -0
- package/dist/vault/repository.d.ts.map +1 -0
- package/dist/vault/repository.js +111 -0
- package/dist/vault/repository.js.map +1 -0
- package/package.json +23 -13
- package/src/db/migrations/0012_vault.sql +51 -0
- package/src/db/migrations/0013_crm.sql +67 -0
- package/src/db/migrations/0014_billing.sql +146 -0
- package/src/db/migrations/0015_merchant_billing_ar.sql +201 -0
- package/src/db/migrations/0016_office_onboarding.sql +162 -0
- package/src/db/migrations/0017_office_onboarding_api.sql +21 -0
- package/src/db/migrations/0018_office_onboarding_portal_actions.sql +60 -0
- package/src/db/migrations/0019_office_onboarding_interaction_review.sql +134 -0
- package/src/db/migrations/0020_saas_billing.sql +157 -0
- package/src/db/migrations/0021_saas_billing_indexes.sql +23 -0
- package/src/db/migrations/0022_saas_billing_multi_product.sql +75 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import { ConflictError, NotFoundError, ValidationError, uuidv7 } from '@baruk/shared';
|
|
2
|
+
import { appendAudit } from '../audit/audit.js';
|
|
3
|
+
import { createNotification } from '../notifications/repository.js';
|
|
4
|
+
import { listPortalUserIds } from '../portal/repository.js';
|
|
5
|
+
function cleanText(value, max) {
|
|
6
|
+
return Array.from(value.replace(/<[^>]*>/g, ''))
|
|
7
|
+
.filter((char) => {
|
|
8
|
+
const code = char.charCodeAt(0);
|
|
9
|
+
return code > 31 && code !== 127;
|
|
10
|
+
})
|
|
11
|
+
.join('')
|
|
12
|
+
.trim()
|
|
13
|
+
.slice(0, max);
|
|
14
|
+
}
|
|
15
|
+
function iso(value) {
|
|
16
|
+
return value ? new Date(String(value)).toISOString() : null;
|
|
17
|
+
}
|
|
18
|
+
function listMap(row) {
|
|
19
|
+
const dueAt = String(row.due_at);
|
|
20
|
+
return {
|
|
21
|
+
id: String(row.id),
|
|
22
|
+
kind: String(row.kind),
|
|
23
|
+
status: String(row.review_status),
|
|
24
|
+
priority: row.priority,
|
|
25
|
+
clientId: String(row.client_id),
|
|
26
|
+
clientName: String(row.client_name),
|
|
27
|
+
onboardingId: String(row.onboarding_id),
|
|
28
|
+
onboardingStatus: String(row.onboarding_status),
|
|
29
|
+
itemId: row.item_id ? String(row.item_id) : null,
|
|
30
|
+
itemTitle: row.item_title ? String(row.item_title) : null,
|
|
31
|
+
requirementId: row.requirement_id ? String(row.requirement_id) : null,
|
|
32
|
+
requirementLabel: row.requirement_label ? String(row.requirement_label) : null,
|
|
33
|
+
authorName: String(row.author_name),
|
|
34
|
+
summary: row.body ? cleanText(String(row.body), 180) : null,
|
|
35
|
+
assignedTo: row.assigned_to ? String(row.assigned_to) : null,
|
|
36
|
+
assignedToName: row.assigned_to_name ? String(row.assigned_to_name) : null,
|
|
37
|
+
dueAt,
|
|
38
|
+
overdue: new Date(dueAt).getTime() < Date.now() &&
|
|
39
|
+
!['resolved', 'dismissed'].includes(String(row.review_status)),
|
|
40
|
+
createdAt: new Date(String(row.created_at)).toISOString(),
|
|
41
|
+
updatedAt: new Date(String(row.updated_at)).toISOString(),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const BASE_FROM = (tx) => tx `
|
|
45
|
+
FROM onboarding_portal_interaction i
|
|
46
|
+
JOIN onboarding_interaction_review r ON r.interaction_id = i.id AND r.tenant_id = i.tenant_id
|
|
47
|
+
JOIN client c ON c.id = i.client_id AND c.tenant_id = i.tenant_id
|
|
48
|
+
JOIN onboarding_instance o ON o.id = i.onboarding_id AND o.tenant_id = i.tenant_id
|
|
49
|
+
JOIN "user" author ON author.id = i.author_user_id
|
|
50
|
+
LEFT JOIN onboarding_item item ON item.id = i.item_id AND item.tenant_id = i.tenant_id
|
|
51
|
+
LEFT JOIN onboarding_document_requirement dr ON dr.id = i.document_requirement_id AND dr.tenant_id = i.tenant_id
|
|
52
|
+
LEFT JOIN "user" assignee ON assignee.id = r.assigned_to
|
|
53
|
+
`;
|
|
54
|
+
function filterWhere(tx, filters) {
|
|
55
|
+
return tx `
|
|
56
|
+
AND (${filters.status ?? null}::text IS NULL OR r.status = ${filters.status ?? null})
|
|
57
|
+
AND (${filters.kind ?? null}::text IS NULL OR i.kind = ${filters.kind ?? null})
|
|
58
|
+
AND (${filters.clientId ?? null}::uuid IS NULL OR i.client_id = ${filters.clientId ?? null})
|
|
59
|
+
AND (${filters.onboardingId ?? null}::uuid IS NULL OR i.onboarding_id = ${filters.onboardingId ?? null})
|
|
60
|
+
AND (${filters.assignedTo ?? null}::uuid IS NULL OR r.assigned_to = ${filters.assignedTo ?? null})
|
|
61
|
+
AND (${filters.unassigned ? true : null}::boolean IS NULL OR r.assigned_to IS NULL)
|
|
62
|
+
AND (${filters.priority ?? null}::text IS NULL OR r.priority = ${filters.priority ?? null})
|
|
63
|
+
AND (${filters.overdue ? true : null}::boolean IS NULL OR (r.due_at < now() AND r.status NOT IN ('resolved', 'dismissed')))
|
|
64
|
+
`;
|
|
65
|
+
}
|
|
66
|
+
export async function listAdminInteractionReviews(tx, filters) {
|
|
67
|
+
const where = filterWhere(tx, filters);
|
|
68
|
+
const rows = await tx `
|
|
69
|
+
SELECT i.id, i.kind, i.body, i.item_id, i.document_requirement_id AS requirement_id,
|
|
70
|
+
i.created_at, i.updated_at, r.status AS review_status, r.priority, r.due_at,
|
|
71
|
+
r.assigned_to, c.id AS client_id, c.display_name AS client_name,
|
|
72
|
+
o.id AS onboarding_id, o.status AS onboarding_status,
|
|
73
|
+
item.title AS item_title, dr.label AS requirement_label,
|
|
74
|
+
author.full_name AS author_name, assignee.full_name AS assigned_to_name,
|
|
75
|
+
count(*) OVER() AS total
|
|
76
|
+
${BASE_FROM(tx)}
|
|
77
|
+
WHERE i.tenant_id = current_setting('app.current_tenant')::uuid
|
|
78
|
+
${where}
|
|
79
|
+
ORDER BY r.due_at ASC, i.created_at DESC, i.id DESC
|
|
80
|
+
LIMIT ${Math.min(filters.limit, 100)} OFFSET ${Math.max(filters.offset, 0)}
|
|
81
|
+
`;
|
|
82
|
+
const counts = await tx `
|
|
83
|
+
SELECT r.status, count(*)::int AS n
|
|
84
|
+
${BASE_FROM(tx)}
|
|
85
|
+
WHERE i.tenant_id = current_setting('app.current_tenant')::uuid ${where}
|
|
86
|
+
GROUP BY r.status
|
|
87
|
+
`;
|
|
88
|
+
const overdue = await tx `
|
|
89
|
+
SELECT count(*)::int AS n
|
|
90
|
+
${BASE_FROM(tx)}
|
|
91
|
+
WHERE i.tenant_id = current_setting('app.current_tenant')::uuid
|
|
92
|
+
AND r.due_at < now() AND r.status NOT IN ('resolved', 'dismissed')
|
|
93
|
+
`;
|
|
94
|
+
const counters = Object.fromEntries(counts.map((row) => [row.status, Number(row.n)]));
|
|
95
|
+
counters.overdue = Number(overdue[0]?.n ?? 0);
|
|
96
|
+
return { items: rows.map(listMap), total: rows[0] ? Number(rows[0].total) : 0, counters };
|
|
97
|
+
}
|
|
98
|
+
export async function getAdminInteractionMetrics(tx, filters) {
|
|
99
|
+
const where = tx `
|
|
100
|
+
AND i.created_at >= ${filters.periodStart}::timestamptz
|
|
101
|
+
AND i.created_at < ${filters.periodEnd}::timestamptz
|
|
102
|
+
AND (${filters.status ?? null}::text IS NULL OR r.status = ${filters.status ?? null})
|
|
103
|
+
AND (${filters.kind ?? null}::text IS NULL OR i.kind = ${filters.kind ?? null})
|
|
104
|
+
AND (${filters.clientId ?? null}::uuid IS NULL OR i.client_id = ${filters.clientId ?? null})
|
|
105
|
+
AND (${filters.assignedTo ?? null}::uuid IS NULL OR r.assigned_to = ${filters.assignedTo ?? null})
|
|
106
|
+
AND (${filters.priority ?? null}::text IS NULL OR r.priority = ${filters.priority ?? null})
|
|
107
|
+
`;
|
|
108
|
+
const rows = await tx `
|
|
109
|
+
SELECT
|
|
110
|
+
count(*)::int AS received,
|
|
111
|
+
count(CASE WHEN r.status = 'pending_review' THEN 1 END) AS pending_review,
|
|
112
|
+
count(CASE WHEN r.status = 'in_review' THEN 1 END) AS in_review,
|
|
113
|
+
count(CASE WHEN r.due_at < now() AND r.status NOT IN ('resolved', 'dismissed') THEN 1 END) AS overdue,
|
|
114
|
+
count(CASE WHEN r.due_at::date = now()::date AND r.status NOT IN ('resolved', 'dismissed') THEN 1 END) AS due_today,
|
|
115
|
+
count(CASE WHEN r.assigned_to IS NULL AND r.status NOT IN ('resolved', 'dismissed') THEN 1 END) AS unassigned,
|
|
116
|
+
count(CASE WHEN r.status = 'clarification_requested' THEN 1 END) AS awaiting_client,
|
|
117
|
+
count(CASE WHEN r.status = 'resolved' THEN 1 END) AS resolved,
|
|
118
|
+
avg(CASE WHEN r.reviewed_at IS NOT NULL THEN EXTRACT(EPOCH FROM (r.reviewed_at - i.created_at)) END) AS average_first_review_seconds,
|
|
119
|
+
avg(CASE WHEN r.resolved_at IS NOT NULL THEN EXTRACT(EPOCH FROM (r.resolved_at - i.created_at)) END) AS average_resolution_seconds,
|
|
120
|
+
count(CASE WHEN r.resolved_at IS NOT NULL AND r.resolved_at <= r.due_at THEN 1 END) AS within_sla,
|
|
121
|
+
count(CASE WHEN r.resolved_at IS NOT NULL AND r.resolved_at > r.due_at THEN 1 END) AS breached
|
|
122
|
+
${BASE_FROM(tx)}
|
|
123
|
+
WHERE i.tenant_id = current_setting('app.current_tenant')::uuid ${where}
|
|
124
|
+
`;
|
|
125
|
+
const row = rows[0] ?? {};
|
|
126
|
+
const resolved = Number(row.resolved ?? 0);
|
|
127
|
+
const within = Number(row.within_sla ?? 0);
|
|
128
|
+
const breached = Number(row.breached ?? 0);
|
|
129
|
+
const pct = (value) => resolved > 0 ? Math.round((value / resolved) * 10000) / 100 : null;
|
|
130
|
+
return {
|
|
131
|
+
period: {
|
|
132
|
+
start: new Date(filters.periodStart).toISOString(),
|
|
133
|
+
end: new Date(filters.periodEnd).toISOString(),
|
|
134
|
+
},
|
|
135
|
+
received: Number(row.received ?? 0),
|
|
136
|
+
pendingReview: Number(row.pending_review ?? 0),
|
|
137
|
+
inReview: Number(row.in_review ?? 0),
|
|
138
|
+
overdue: Number(row.overdue ?? 0),
|
|
139
|
+
dueToday: Number(row.due_today ?? 0),
|
|
140
|
+
unassigned: Number(row.unassigned ?? 0),
|
|
141
|
+
awaitingClient: Number(row.awaiting_client ?? 0),
|
|
142
|
+
resolved,
|
|
143
|
+
averageFirstReviewSeconds: row.average_first_review_seconds == null
|
|
144
|
+
? null
|
|
145
|
+
: Math.round(Number(row.average_first_review_seconds)),
|
|
146
|
+
averageResolutionSeconds: row.average_resolution_seconds == null
|
|
147
|
+
? null
|
|
148
|
+
: Math.round(Number(row.average_resolution_seconds)),
|
|
149
|
+
withinSlaPercentage: pct(within),
|
|
150
|
+
breachedPercentage: pct(breached),
|
|
151
|
+
generatedAt: new Date().toISOString(),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
async function getReviewRow(tx, interactionId) {
|
|
155
|
+
const rows = await tx `
|
|
156
|
+
SELECT i.id, i.kind, i.body, i.external_channel, i.external_delivered_at, i.item_id,
|
|
157
|
+
i.document_requirement_id AS requirement_id, i.created_at, i.updated_at,
|
|
158
|
+
r.status AS review_status, r.priority, r.due_at, r.breached_at, r.reviewer_id,
|
|
159
|
+
r.assigned_to, r.reviewed_at, r.resolved_at, r.resolution_type, r.internal_summary, r.version,
|
|
160
|
+
c.id AS client_id, c.display_name AS client_name, o.id AS onboarding_id,
|
|
161
|
+
o.status AS onboarding_status, item.title AS item_title, dr.label AS requirement_label,
|
|
162
|
+
author.full_name AS author_name, assignee.full_name AS assigned_to_name
|
|
163
|
+
${BASE_FROM(tx)}
|
|
164
|
+
WHERE i.id = ${interactionId}
|
|
165
|
+
AND i.tenant_id = current_setting('app.current_tenant')::uuid
|
|
166
|
+
`;
|
|
167
|
+
if (!rows[0])
|
|
168
|
+
throw new NotFoundError('Interação não encontrada');
|
|
169
|
+
return rows[0];
|
|
170
|
+
}
|
|
171
|
+
function allowed(status) {
|
|
172
|
+
if (status === 'pending_review')
|
|
173
|
+
return ['start_review', 'assign', 'accept', 'request_clarification', 'add_internal_note'];
|
|
174
|
+
if (status === 'in_review')
|
|
175
|
+
return [
|
|
176
|
+
'assign',
|
|
177
|
+
'accept',
|
|
178
|
+
'request_clarification',
|
|
179
|
+
'resolve',
|
|
180
|
+
'add_internal_note',
|
|
181
|
+
'public_reply',
|
|
182
|
+
];
|
|
183
|
+
if (status === 'clarification_requested')
|
|
184
|
+
return ['assign', 'accept', 'resolve', 'add_internal_note', 'public_reply'];
|
|
185
|
+
if (status === 'accepted')
|
|
186
|
+
return ['resolve', 'add_internal_note', 'public_reply'];
|
|
187
|
+
return [];
|
|
188
|
+
}
|
|
189
|
+
export async function getAdminInteractionReview(tx, interactionId) {
|
|
190
|
+
const row = await getReviewRow(tx, interactionId);
|
|
191
|
+
const [notes, replies] = await Promise.all([
|
|
192
|
+
tx `
|
|
193
|
+
SELECT n.id, n.body, n.author_id, u.full_name AS author_name, n.created_at
|
|
194
|
+
FROM onboarding_interaction_internal_note n JOIN "user" u ON u.id = n.author_id
|
|
195
|
+
WHERE n.interaction_id = ${interactionId} AND n.tenant_id = current_setting('app.current_tenant')::uuid
|
|
196
|
+
ORDER BY n.created_at ASC
|
|
197
|
+
`,
|
|
198
|
+
tx `
|
|
199
|
+
SELECT p.id, p.body, p.author_id, u.full_name AS author_name, p.created_at
|
|
200
|
+
FROM onboarding_interaction_public_reply p JOIN "user" u ON u.id = p.author_id
|
|
201
|
+
WHERE p.interaction_id = ${interactionId} AND p.tenant_id = current_setting('app.current_tenant')::uuid
|
|
202
|
+
ORDER BY p.created_at ASC
|
|
203
|
+
`,
|
|
204
|
+
]);
|
|
205
|
+
const base = listMap(row);
|
|
206
|
+
return {
|
|
207
|
+
...base,
|
|
208
|
+
body: row.body ? String(row.body) : null,
|
|
209
|
+
externalChannel: row.external_channel ? String(row.external_channel) : null,
|
|
210
|
+
externalDeliveredAt: row.external_delivered_at ? String(row.external_delivered_at) : null,
|
|
211
|
+
version: Number(row.version),
|
|
212
|
+
reviewedAt: iso(row.reviewed_at),
|
|
213
|
+
resolvedAt: iso(row.resolved_at),
|
|
214
|
+
resolutionType: row.resolution_type ?? null,
|
|
215
|
+
notes: notes.map((note) => ({
|
|
216
|
+
id: String(note.id),
|
|
217
|
+
body: String(note.body),
|
|
218
|
+
authorId: String(note.author_id),
|
|
219
|
+
authorName: String(note.author_name),
|
|
220
|
+
createdAt: new Date(String(note.created_at)).toISOString(),
|
|
221
|
+
})),
|
|
222
|
+
publicReplies: replies.map((reply) => ({
|
|
223
|
+
id: String(reply.id),
|
|
224
|
+
body: String(reply.body),
|
|
225
|
+
authorId: String(reply.author_id),
|
|
226
|
+
authorName: String(reply.author_name),
|
|
227
|
+
createdAt: new Date(String(reply.created_at)).toISOString(),
|
|
228
|
+
})),
|
|
229
|
+
allowedActions: allowed(String(row.review_status)),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
async function event(tx, ctx, interactionId, type, payload = {}) {
|
|
233
|
+
const row = await tx `
|
|
234
|
+
SELECT onboarding_id, client_id FROM onboarding_portal_interaction
|
|
235
|
+
WHERE id = ${interactionId} AND tenant_id = current_setting('app.current_tenant')::uuid
|
|
236
|
+
`;
|
|
237
|
+
if (!row[0])
|
|
238
|
+
throw new NotFoundError('Interação não encontrada');
|
|
239
|
+
await tx `
|
|
240
|
+
INSERT INTO onboarding_event
|
|
241
|
+
(event_id, tenant_id, onboarding_id, client_id, actor_id, event_type, event_version, occurred_at, correlation_id, entity_type, entity_id, payload, metadata)
|
|
242
|
+
VALUES (${uuidv7()}, current_setting('app.current_tenant')::uuid, ${row[0].onboarding_id}, ${row[0].client_id}, ${ctx.actorId}, ${type}, 1, now(), ${ctx.correlationId}, 'onboarding_portal_interaction', ${interactionId}, ${tx.json(payload)}, ${tx.json({ visibility: 'internal' })})
|
|
243
|
+
`;
|
|
244
|
+
}
|
|
245
|
+
async function audit(tx, ctx, interactionId, action, diff) {
|
|
246
|
+
await appendAudit(tx, {
|
|
247
|
+
actorId: ctx.actorId,
|
|
248
|
+
action,
|
|
249
|
+
resourceType: 'onboarding_portal_interaction_review',
|
|
250
|
+
resourceId: interactionId,
|
|
251
|
+
diff,
|
|
252
|
+
metadata: { correlationId: ctx.correlationId, requestId: ctx.requestId ?? null },
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
async function currentReview(tx, interactionId) {
|
|
256
|
+
const rows = await tx `
|
|
257
|
+
SELECT status, version, client_id, onboarding_id, assigned_to FROM onboarding_interaction_review
|
|
258
|
+
WHERE interaction_id = ${interactionId} AND tenant_id = current_setting('app.current_tenant')::uuid
|
|
259
|
+
`;
|
|
260
|
+
if (!rows[0])
|
|
261
|
+
throw new NotFoundError('Interação não encontrada');
|
|
262
|
+
return rows[0];
|
|
263
|
+
}
|
|
264
|
+
async function updateStatus(tx, ctx, interactionId, input) {
|
|
265
|
+
const current = await currentReview(tx, interactionId);
|
|
266
|
+
if (input.expectedVersion !== undefined && input.expectedVersion !== current.version)
|
|
267
|
+
throw new ConflictError('A interação foi atualizada por outra pessoa', {
|
|
268
|
+
code: 'INTERACTION_VERSION_CONFLICT',
|
|
269
|
+
});
|
|
270
|
+
const transitions = {
|
|
271
|
+
pending_review: ['in_review', 'accepted', 'clarification_requested'],
|
|
272
|
+
in_review: ['accepted', 'clarification_requested', 'resolved'],
|
|
273
|
+
accepted: ['resolved'],
|
|
274
|
+
clarification_requested: ['accepted', 'resolved'],
|
|
275
|
+
resolved: [],
|
|
276
|
+
dismissed: [],
|
|
277
|
+
};
|
|
278
|
+
if (!transitions[current.status].includes(input.status))
|
|
279
|
+
throw new ConflictError('Transição de revisão inválida', {
|
|
280
|
+
code: 'INTERACTION_INVALID_TRANSITION',
|
|
281
|
+
});
|
|
282
|
+
if (input.status === 'resolved' && (!input.resolutionType || !input.summary))
|
|
283
|
+
throw new ValidationError('Resolução exige tipo e resumo interno');
|
|
284
|
+
const rows = await tx `
|
|
285
|
+
UPDATE onboarding_interaction_review
|
|
286
|
+
SET status = ${input.status}, reviewer_id = COALESCE(reviewer_id, ${ctx.actorId}),
|
|
287
|
+
reviewed_at = COALESCE(reviewed_at, now()), resolved_at = ${input.status === 'resolved' ? tx `now()` : tx `resolved_at`},
|
|
288
|
+
resolution_type = ${input.resolutionType ?? null}, internal_summary = ${input.summary ? cleanText(input.summary, 4000) : null},
|
|
289
|
+
version = version + 1, updated_at = now()
|
|
290
|
+
WHERE interaction_id = ${interactionId} AND tenant_id = current_setting('app.current_tenant')::uuid
|
|
291
|
+
AND (${input.expectedVersion ?? null}::int IS NULL OR version = ${input.expectedVersion ?? null})
|
|
292
|
+
RETURNING version
|
|
293
|
+
`;
|
|
294
|
+
if (!rows[0])
|
|
295
|
+
throw new ConflictError('A interação foi atualizada por outra pessoa', {
|
|
296
|
+
code: 'INTERACTION_VERSION_CONFLICT',
|
|
297
|
+
});
|
|
298
|
+
await audit(tx, ctx, interactionId, `onboarding.interaction_${input.status}`, {
|
|
299
|
+
from: current.status,
|
|
300
|
+
to: input.status,
|
|
301
|
+
});
|
|
302
|
+
await event(tx, ctx, interactionId, `onboarding.interaction_${input.status}`);
|
|
303
|
+
return rows[0].version;
|
|
304
|
+
}
|
|
305
|
+
export async function startReview(tx, ctx, interactionId, expectedVersion) {
|
|
306
|
+
return updateStatus(tx, ctx, interactionId, { status: 'in_review', expectedVersion });
|
|
307
|
+
}
|
|
308
|
+
export async function acceptReview(tx, ctx, interactionId, expectedVersion) {
|
|
309
|
+
return updateStatus(tx, ctx, interactionId, { status: 'accepted', expectedVersion });
|
|
310
|
+
}
|
|
311
|
+
export async function requestClarification(tx, ctx, interactionId, message, expectedVersion) {
|
|
312
|
+
const body = cleanText(message, 2000);
|
|
313
|
+
if (!body)
|
|
314
|
+
throw new ValidationError('A mensagem pública é obrigatória');
|
|
315
|
+
const version = await updateStatus(tx, ctx, interactionId, {
|
|
316
|
+
status: 'clarification_requested',
|
|
317
|
+
expectedVersion,
|
|
318
|
+
});
|
|
319
|
+
await createPublicReply(tx, ctx, interactionId, body);
|
|
320
|
+
return version;
|
|
321
|
+
}
|
|
322
|
+
export async function resolveReview(tx, ctx, interactionId, input) {
|
|
323
|
+
return updateStatus(tx, ctx, interactionId, { status: 'resolved', ...input });
|
|
324
|
+
}
|
|
325
|
+
export async function assignInteraction(tx, ctx, interactionId, assigneeId, expectedVersion) {
|
|
326
|
+
const current = await currentReview(tx, interactionId);
|
|
327
|
+
if (expectedVersion !== undefined && expectedVersion !== current.version)
|
|
328
|
+
throw new ConflictError('A interação foi atualizada por outra pessoa', {
|
|
329
|
+
code: 'INTERACTION_VERSION_CONFLICT',
|
|
330
|
+
});
|
|
331
|
+
if (assigneeId) {
|
|
332
|
+
const valid = await tx `
|
|
333
|
+
SELECT m.user_id FROM membership m JOIN "user" u ON u.id = m.user_id
|
|
334
|
+
WHERE m.tenant_id = current_setting('app.current_tenant')::uuid AND m.user_id = ${assigneeId}
|
|
335
|
+
AND m.status = 'active' AND m.deleted_at IS NULL AND u.status = 'active' AND u.user_type = 'staff'
|
|
336
|
+
AND EXISTS (
|
|
337
|
+
SELECT 1 FROM user_role ur JOIN role_permission rp ON rp.role_id = ur.role_id
|
|
338
|
+
JOIN permission p ON p.id = rp.permission_id
|
|
339
|
+
WHERE ur.user_id = m.user_id AND ur.tenant_id = m.tenant_id AND ur.deleted_at IS NULL
|
|
340
|
+
AND p.key = 'office.onboarding.interaction.review'
|
|
341
|
+
)
|
|
342
|
+
`;
|
|
343
|
+
if (!valid[0])
|
|
344
|
+
throw new ValidationError('Responsável não possui vínculo e permissão de revisão');
|
|
345
|
+
}
|
|
346
|
+
const rows = await tx `
|
|
347
|
+
UPDATE onboarding_interaction_review SET assigned_to = ${assigneeId}, version = version + 1, updated_at = now()
|
|
348
|
+
WHERE interaction_id = ${interactionId} AND tenant_id = current_setting('app.current_tenant')::uuid
|
|
349
|
+
AND (${expectedVersion ?? null}::int IS NULL OR version = ${expectedVersion ?? null}) RETURNING version
|
|
350
|
+
`;
|
|
351
|
+
if (!rows[0])
|
|
352
|
+
throw new ConflictError('A interação foi atualizada por outra pessoa', {
|
|
353
|
+
code: 'INTERACTION_VERSION_CONFLICT',
|
|
354
|
+
});
|
|
355
|
+
await audit(tx, ctx, interactionId, 'onboarding.interaction_assigned', {
|
|
356
|
+
assignedTo: assigneeId,
|
|
357
|
+
});
|
|
358
|
+
await event(tx, ctx, interactionId, 'onboarding.interaction_assigned', {
|
|
359
|
+
assignedTo: assigneeId,
|
|
360
|
+
});
|
|
361
|
+
if (assigneeId)
|
|
362
|
+
await createNotification(tx, {
|
|
363
|
+
userId: assigneeId,
|
|
364
|
+
type: 'action_required',
|
|
365
|
+
title: 'Interação atribuída',
|
|
366
|
+
body: 'Uma interação do Portal foi atribuída a você.',
|
|
367
|
+
linkRef: { type: 'office_onboarding_interaction', id: interactionId },
|
|
368
|
+
});
|
|
369
|
+
return rows[0].version;
|
|
370
|
+
}
|
|
371
|
+
export async function addInternalNote(tx, ctx, interactionId, body) {
|
|
372
|
+
const text = cleanText(body, 4000);
|
|
373
|
+
if (!text)
|
|
374
|
+
throw new ValidationError('A observação interna é obrigatória');
|
|
375
|
+
await currentReview(tx, interactionId);
|
|
376
|
+
const rows = await tx `
|
|
377
|
+
INSERT INTO onboarding_interaction_internal_note (id, tenant_id, client_id, onboarding_id, interaction_id, author_id, body)
|
|
378
|
+
SELECT ${uuidv7()}, i.tenant_id, i.client_id, i.onboarding_id, i.id, ${ctx.actorId}, ${text}
|
|
379
|
+
FROM onboarding_portal_interaction i WHERE i.id = ${interactionId}
|
|
380
|
+
RETURNING id, created_at
|
|
381
|
+
`;
|
|
382
|
+
if (!rows[0])
|
|
383
|
+
throw new NotFoundError('Interação não encontrada');
|
|
384
|
+
await audit(tx, ctx, interactionId, 'onboarding.interaction_internal_note_created');
|
|
385
|
+
await event(tx, ctx, interactionId, 'onboarding.interaction_internal_note_created');
|
|
386
|
+
return { id: rows[0].id, createdAt: rows[0].created_at.toISOString() };
|
|
387
|
+
}
|
|
388
|
+
export async function createPublicReply(tx, ctx, interactionId, body) {
|
|
389
|
+
const text = cleanText(body, 2000);
|
|
390
|
+
if (!text)
|
|
391
|
+
throw new ValidationError('A resposta pública é obrigatória');
|
|
392
|
+
const row = await tx `
|
|
393
|
+
INSERT INTO onboarding_interaction_public_reply (id, tenant_id, client_id, onboarding_id, interaction_id, author_id, body, visibility)
|
|
394
|
+
SELECT ${uuidv7()}, i.tenant_id, i.client_id, i.onboarding_id, i.id, ${ctx.actorId}, ${text}, 'public_to_client'
|
|
395
|
+
FROM onboarding_portal_interaction i WHERE i.id = ${interactionId}
|
|
396
|
+
RETURNING id, created_at
|
|
397
|
+
`;
|
|
398
|
+
if (!row[0])
|
|
399
|
+
throw new NotFoundError('Interação não encontrada');
|
|
400
|
+
await audit(tx, ctx, interactionId, 'onboarding.interaction_public_reply_created');
|
|
401
|
+
await event(tx, ctx, interactionId, 'onboarding.interaction_public_reply_created');
|
|
402
|
+
for (const userId of await listPortalUserIds(tx, String((await currentReview(tx, interactionId)).client_id))) {
|
|
403
|
+
await createNotification(tx, {
|
|
404
|
+
userId,
|
|
405
|
+
type: 'info',
|
|
406
|
+
title: 'O escritório respondeu',
|
|
407
|
+
body: 'Há um novo retorno sobre seu onboarding.',
|
|
408
|
+
linkRef: { type: 'portal_onboarding_interaction', id: interactionId },
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
return { id: row[0].id, createdAt: row[0].created_at.toISOString() };
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=interaction-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction-review.js","sourceRoot":"","sources":["../../src/onboarding/interaction-review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { AppError } from '@baruk/shared';
|
|
2
|
+
import type { Db, Tx } from '../db/client.js';
|
|
3
|
+
import { addItem, addTask, requestDocument, type Onboarding, type OnboardingOperationContext } from './domain.js';
|
|
4
|
+
export interface OnboardingFeaturePolicy {
|
|
5
|
+
isEnabled(tenantId: string): boolean;
|
|
6
|
+
}
|
|
7
|
+
/** Política fail-closed até a capability ser ativada por configuração canônica. */
|
|
8
|
+
export declare const onboardingDisabledByDefault: OnboardingFeaturePolicy;
|
|
9
|
+
export declare const onboardingEnabledForTests: OnboardingFeaturePolicy;
|
|
10
|
+
export declare class OnboardingFeatureDisabledError extends AppError {
|
|
11
|
+
constructor();
|
|
12
|
+
}
|
|
13
|
+
export declare class OnboardingConcurrencyError extends AppError {
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
export type IdempotencyReservation = {
|
|
17
|
+
kind: 'new';
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'replay';
|
|
20
|
+
response: unknown;
|
|
21
|
+
} | {
|
|
22
|
+
kind: 'in_progress';
|
|
23
|
+
} | {
|
|
24
|
+
kind: 'conflict';
|
|
25
|
+
};
|
|
26
|
+
export declare function reserveOnboardingApiIdempotency(db: Db, input: {
|
|
27
|
+
tenantId: string;
|
|
28
|
+
operation: string;
|
|
29
|
+
key: string;
|
|
30
|
+
fingerprint: string;
|
|
31
|
+
}): Promise<IdempotencyReservation>;
|
|
32
|
+
export declare function completeOnboardingApiIdempotency(db: Db, input: {
|
|
33
|
+
tenantId: string;
|
|
34
|
+
operation: string;
|
|
35
|
+
key: string;
|
|
36
|
+
response: unknown;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
export declare function releaseOnboardingApiIdempotency(db: Db, input: {
|
|
39
|
+
tenantId: string;
|
|
40
|
+
operation: string;
|
|
41
|
+
key: string;
|
|
42
|
+
}): Promise<void>;
|
|
43
|
+
export declare function getOnboarding(tx: Tx, id: string): Promise<Onboarding | null>;
|
|
44
|
+
export interface OnboardingListFilter {
|
|
45
|
+
status?: Onboarding['status'];
|
|
46
|
+
clientId?: string;
|
|
47
|
+
ownerId?: string;
|
|
48
|
+
dueBefore?: string;
|
|
49
|
+
dueAfter?: string;
|
|
50
|
+
overdue?: boolean;
|
|
51
|
+
limit?: number;
|
|
52
|
+
offset?: number;
|
|
53
|
+
}
|
|
54
|
+
export declare function listOnboardings(tx: Tx, filter?: OnboardingListFilter): Promise<Onboarding[]>;
|
|
55
|
+
export interface OnboardingTimelineRow {
|
|
56
|
+
eventId: string;
|
|
57
|
+
eventType: string;
|
|
58
|
+
eventVersion: number;
|
|
59
|
+
occurredAt: string;
|
|
60
|
+
actorId: string | null;
|
|
61
|
+
correlationId: string;
|
|
62
|
+
entityType: string;
|
|
63
|
+
entityId: string;
|
|
64
|
+
payload: Record<string, unknown>;
|
|
65
|
+
metadata: Record<string, unknown>;
|
|
66
|
+
}
|
|
67
|
+
export declare function listOnboardingTimeline(tx: Tx, onboardingId: string, limit?: number, offset?: number): Promise<{
|
|
68
|
+
items: OnboardingTimelineRow[];
|
|
69
|
+
total: number;
|
|
70
|
+
}>;
|
|
71
|
+
export declare function createOnboardingRecord(tx: Tx, onboarding: Onboarding): Promise<void>;
|
|
72
|
+
export declare function saveOnboarding(tx: Tx, onboarding: Onboarding, expectedVersion: number): Promise<void>;
|
|
73
|
+
export interface OnboardingApplication {
|
|
74
|
+
create(input: {
|
|
75
|
+
tenantId: string;
|
|
76
|
+
clientId: string;
|
|
77
|
+
ownerId?: string | null;
|
|
78
|
+
dueAt?: string | null;
|
|
79
|
+
}, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
80
|
+
get(tenantId: string, id: string, clientId?: string): Promise<Onboarding | null>;
|
|
81
|
+
start(tenantId: string, id: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
82
|
+
block(tenantId: string, id: string, reason: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
83
|
+
unblock(tenantId: string, id: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
84
|
+
complete(tenantId: string, id: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
85
|
+
cancel(tenantId: string, id: string, reason: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
86
|
+
addItem(tenantId: string, id: string, input: Parameters<typeof addItem>[1], context: OnboardingOperationContext): Promise<Onboarding>;
|
|
87
|
+
completeItem(tenantId: string, id: string, itemId: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
88
|
+
startItem(tenantId: string, id: string, itemId: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
89
|
+
rejectItem(tenantId: string, id: string, itemId: string, reason: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
90
|
+
markItemNotApplicable(tenantId: string, id: string, itemId: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
91
|
+
addTask(tenantId: string, id: string, input: Parameters<typeof addTask>[1], context: OnboardingOperationContext): Promise<Onboarding>;
|
|
92
|
+
completeTask(tenantId: string, id: string, taskId: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
93
|
+
requestDocument(tenantId: string, id: string, input: Parameters<typeof requestDocument>[1], context: OnboardingOperationContext): Promise<Onboarding>;
|
|
94
|
+
receiveDocument(tenantId: string, id: string, requirementId: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
95
|
+
validateDocument(tenantId: string, id: string, requirementId: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
96
|
+
rejectDocument(tenantId: string, id: string, requirementId: string, reason: string, context: OnboardingOperationContext): Promise<Onboarding>;
|
|
97
|
+
list(tenantId: string, filter?: OnboardingListFilter): Promise<Onboarding[]>;
|
|
98
|
+
timeline(tenantId: string, id: string, limit?: number, offset?: number, clientId?: string): Promise<{
|
|
99
|
+
items: OnboardingTimelineRow[];
|
|
100
|
+
total: number;
|
|
101
|
+
}>;
|
|
102
|
+
}
|
|
103
|
+
export declare function createOnboardingApplication(db: Db, policy?: OnboardingFeaturePolicy, idFactory?: {
|
|
104
|
+
next(): string;
|
|
105
|
+
}): OnboardingApplication;
|
|
106
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/onboarding/persistence.ts"],"names":[],"mappings":"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"}
|