Skip to main content
Esta secao documenta os modelos de dados utilizados na plataforma AWSales.

Dominios

IAM

User, Organization, Role, Permission, Membership, Invitation

Billing

Plan, Subscription, Invoice, Cost, Fee, Token, Coupon, Voucher, Payment Method, Billing Threshold, Webhook, Exchange Rate

Lead

Lead, ChannelIdentity, LeadOrganization, Event, Memory, Feature
No dominio IAM, Role, Permission, Membership e Invitation sao 100% proxied do WorkOS — nao sao armazenados como tabelas no banco de dados da aplicacao. Os esquemas aqui refletem o formato retornado pela API do WorkOS.

Fluxo de Dados

Os dominios da plataforma se comunicam seguindo um fluxo bem definido:
  1. IAM e o dominio fundacional — todo usuario e organizacao comecam aqui. O organizationId gerado no IAM e a chave que conecta todos os outros dominios.
  2. Billing depende do IAM para identificar a organizacao e vincular assinaturas, faturas e custos ao tenant correto. A criacao de uma Organization dispara a criacao do customer no Stripe via Saga.
  3. Lead utiliza o organizationId do IAM para isolar dados de leads por tenant. Eventos e memorias sao acumulados por LeadOrganization, que faz a ponte entre o lead global e a organizacao especifica.
Todos os dominios seguem o principio de multi-tenancy: qualquer operacao e sempre escopada a um organizationId. Isso garante isolamento completo entre tenants.

Convencoes

  • IDs: UUIDv7 — UUIDs ordenados por tempo que habilitam paginacao baseada em cursor
  • Valores monetarios: Armazenados como inteiros em centavos (ex: 4900 = R$49,00)
  • Moedas: USD, BRL, EUR
  • Timestamps: ISO 8601, armazenados em UTC
  • Soft deletes: campos deletedAt / deletedBy quando aplicavel
  • Trilha de auditoria: createdBy, updatedBy, deletedBy para entidades principais
  • Refs externas: campos externalRef armazenam identificadores de provedores externos, vinculando entidades internas aos seus equivalentes em sistemas de terceiros