TIP -- Technical Implementation Plan
Pilot Status
Status
Draft
1. Objetivo
Este documento descreve o plano técnico de implementação do Pilot Status, incluindo arquitetura, estrutura de serviços, modelagem inicial, fluxos de processamento e organização de deploy.
2. Arquitetura Geral
Stack
- TypeScript (Full Stack)
- Next.js (Frontend + API Routes como BFF)
- NextAuth (Google, GitHub)
- Prisma ORM
- PostgreSQL (Gerenciado)
- Redis (Gerenciado)
- BullMQ
- Workers dedicados
- Docker Multi-stage
- VPS para deploy
- Evolution API (envio WhatsApp)
- Umami (analytics frontend e backend)
3. Estrutura de Serviços
Serviço Web (Next.js)
Responsável por:
- UI (Dashboard, Templates, Logs, API Keys, Perfil, Admin)
- API Routes
- Autenticação
- Validação de API Key
- Rate limiting
- Registro de mensagens
- Recebimento de webhook interno
Serviço Worker
Responsável por:
- Consumo das filas BullMQ
- Processamento FIFO por tenant
- Envio de mensagens via Evolution API
- Atualização inicial de status
4. Modelo de Dados (Inicial)
Tenant
- id
- name
- created_at
User
- id
- tenant_id
- provider
ApiKey
- id
- tenant_id
- environment (test | live)
- key_hash
- created_at
- last_used_at
Template
- id
- tenant_id
- environment
- name
- status
TemplateVersion
- id
- template_id
- version_number
- json_payload
- approval_status
- created_at
Message
- id
- tenant_id
- template_version_id
- environment
- destination_number
- status (queued | sent | failed | read)
- correlation_id
- created_at
Subscription (Plano)
- id
- tenant_id
- plan (free | basic | pro)
- status
- period (mensal)
- limit_monthly (300 | 700 | 3000)
- limit_daily (apenas free: 10; basic/pro: null)
- stripe_subscription_id (opcional)
- current_period_start
- current_period_end
PackagePurchase (Pacote)
- id
- tenant_id
- package (1 | 2)
- messages_added (300 | 1000)
- amount
- provider (stripe | pague_dev)
- status
- created_at
Uso (contagem para rate limit)
- Contagem de mensagens consumidas no mês por tenant (para limite mensal).
- Contagem de mensagens consumidas no dia por tenant (apenas plano Gratuito).
- Saldo de mensagens de pacotes comprados aplicado ao limite mensal do período.
5. Fluxo de Envio
- Cliente chama endpoint /send
- API valida API Key
- Aplica rate limit
- Cria registro Message
- Envia job para fila do tenant
- Worker consome fila
- Worker chama Evolution API
- Webhook interno atualiza status
6. Rate Limiting
- Aplicado por API Key.
- Limites por plano:
- Gratuito: 300 msg/mês e 10 msg/dia.
- Basic: 700 msg/mês, sem limite diário.
- Pro: 3000 msg/mês, sem limite diário.
- Pacotes: mensagens do Pacote 1 (+300) e Pacote 2 (+1000) somadas ao limite mensal do plano no período.
- Modo test no plano Gratuito: limitado a 10 mensagens/dia.
- Sem retry automático.
- Sem DLQ (MVP).
7. Ambientes
- API Keys:
- ps_test_xxxxx
- ps_live_xxxxx
- Filas separadas por ambiente
- Templates podem ser promovidos de test para live
8. Observabilidade
Implementar:
- Correlation ID por mensagem
- Logs estruturados (JSON)
- Monitoramento de filas
- Métricas:
- Tempo médio de envio
- Taxa de falha
- Volume por tenant
- Umami para analytics de frontend e backend (eventos de uso, páginas, API)
9. Deploy
Estrutura Docker
- web (Next.js)
- worker
- nginx (opcional)
Redis e PostgreSQL serão gerenciados externamente.
Deploy em VPS com:
- Docker Compose
- Variáveis de ambiente seguras
- SSL via proxy reverso
10. Integração de Pagamentos
- Stripe: checkout/assinatura para planos Basic e Pro; checkout one-time para pacotes (cartão). Webhooks para atualizar assinatura e confirmar pagamento.
- Pague Dev: fluxo Pix para pacotes e pagamento único. Callbacks para creditar mensagens dos pacotes.
- Webhooks/callbacks para ativar ou renovar plano e creditar mensagens de pacotes no tenant.
11. Fases de Implementação
Fase 1 -- Base
- Autenticação
- API Keys
- Envio básico
- Fila por tenant
- Logs básicos
Fase 2 -- Templates
- Versionamento
- Aprovação admin
- Promoção test → live
Fase 3 -- Observabilidade
- Métricas internas
- Dashboard avançado
- Alertas
Fase 4 -- Planos, Pacotes e Pagamentos
- Modelo de dados (Subscription, PackagePurchase, contagem de uso)
- Rate limit por plano e pacotes
- Integração Stripe (assinatura e pacotes em cartão)
- Integração Pague Dev (Pix para pacotes e pagamento único)
- UI de planos e pacotes
12. Riscos Conhecidos
- Sem estratégia de backup
- Sem retry automático
- Redis único compartilhado
- Sem rotação de API Key
Conclusão
Este TIP define o plano técnico para implementação do MVP do Pilot Status, priorizando simplicidade, isolamento lógico multi-tenant e escalabilidade gradual.