PostgreSQL e persistência
O banco guarda isolamento, idempotência e histórico. Reiniciar a API não apaga integrações nem sessões.
Modelo
- Identidade:
User,Session,Account,Verification,Membership. - Plataforma:
Workspace,ApiKey,Integration. - Checkout:
CheckoutSession,Payment,PaymentEvent. - Entrega:
WebhookEndpoint,WebhookDelivery. - Operação:
AuditLog,ApiRequestLog,RateWindow.
As relações possuem chaves estrangeiras. Sessões têm chave de idempotência única por organização; pagamentos são únicos por sessão; eventos e entregas têm deduplicação própria.
Migrações
pnpm db:generate
pnpm db:deploy
# Somente desenvolvimento, após alterar schema:
pnpm db:migrate --name nome_da_mudanca
Versione as migrações SQL e revise alterações destrutivas. Não use db push como substituto de migrações de produção. Faça backup antes de migrar e teste compatibilidade com a imagem anterior.
Dados sensíveis
Campos de pagador e pré-preenchimento são criptografados. Tokens de checkout possuem resumo para autenticação e cópia criptografada para respostas idempotentes. Credenciais da API possuem apenas resumo; segredos de assinatura ficam criptografados.
Backup e retenção
Configure pg_dump agendado para armazenamento externo criptografado e teste restauração em banco isolado. Um volume Docker não é backup. Defina retenção para sessões, requisições, eventos e dados pessoais antes de produção; o worker já remove janelas antigas de rate limit.
Modelos da plataforma
ProviderConnection isola credenciais por negócio. NotificationInbox persiste tokens com controle de tentativas. EmailOutbox guarda destinatário, texto e HTML criptografados, remetente/provedor imutáveis, resumo de idempotência, vínculo da credencial, tentativas e identificador de aceite. O status accepted não comprova entrega; envios SMTP inconclusivos ficam uncertain sem repetição cega. SupportMessage guarda mensagens criptografadas. Defina retenção antes de coleta em escala.