Files

8.0 KiB
Raw Permalink Blame History

🗺️ Roadmap — Alemão Conveniências

Atualizado em: 15/04/2026
Status geral: Fase 1 em andamento


Fase 1 — Consolidação da Base (Sem reescrever o que funciona)

Objetivo: Corrigir os riscos críticos e migrar para PostgreSQL

  • Analisar código atual e mapear riscos
  • Criar banco alemao no PostgreSQL
  • Criar schema SQL equivalente ao atual (raffles, tickets, users, admins, promotions, plugins)
  • Adicionar campo status em raffles (draft | active | finished)
  • Criar database/postgres.js — driver pg com pool de conexões
  • Migrar models/Raffle.js → PostgreSQL
  • Migrar models/Ticket.js → PostgreSQL (com transação atômica)
  • Migrar models/User.js → PostgreSQL
  • Migrar models/Admin.js → PostgreSQL
  • Migrar models/Promotion.js → PostgreSQL
  • Corrigir race condition em buyTicket com transação atômica (BEGIN / COMMIT)
  • Migrar dados existentes do .sqlite para PostgreSQL
  • Testar todos os endpoints existentes
  • Atualizar .env com credenciais PostgreSQL
  • Migrar plugins/index.js e plugins/config.js para async/await
  • Serviço alemaoconveniencias.service ativo e estável

Fase 2 — Motor de Sorteio + Auditoria

Objetivo: Sorteio automático, transparente e auditável

  • Criar tabela raffle_results
  • Criar tabela raffle_draw_logs
  • Implementar algoritmo de sorteio com seed SHA256
  • Endpoint POST /api/raffles/:id/draw (manual pelo admin)
  • Worker com node-cron — sorteio automático por end_at
  • Worker com node-cron — sorteio automático por lotação (100% vendido)
  • Tela admin: painel de resultado do sorteio (Endpoints OK, UI depende do frontend html)
  • Exibir seed + algoritmo para o público (transparência através da API)
  • Bloquear alterações no sorteio após status = finished

Fase 3 — Pagamento Asaas + Reserva Temporária

Objetivo: Monetização real com pagamento integrado

  • Criar conta Asaas e obter API Key (Serviço Integrado!)
  • Criar tabela orders
  • Criar tabela order_items (Usando relacionamento de Order + Tickets diretamente)
  • Criar campo status em tickets (available | reserved | sold)
  • Criar campo reserved_until em tickets
  • Implementar reserva temporária (TTL 5 min via cron PostgreSQL)
  • Integração Asaas: criar cliente (POST /customers)
  • Integração Asaas: gerar cobrança (POST /payments PIX)
  • Endpoint Webhook Asaas: confirmar pagamento → order.status = paid → número sold
  • Tela do usuário: checkout com geração de link de pagamento
  • Tela do usuário: status do pagamento em tempo real
  • Criar tabela price_logs (auditoria de preço aplicado)
  • Worker de limpeza: liberar reservas expiradas a cada minuto

Fase 4 — Preço Dinâmico

Objetivo: Estratégia inteligente de preços por horário/período

  • Criar tabela raffle_price_rules
  • Implementar engine getCurrentPrice(raffleId) com prioridade
  • Suporte a regra fixed (sempre válida)
  • Suporte a regra time_range (válida por faixa de horário)
  • Fallback para price_default do sorteio
  • Endpoint GET /api/raffles/:id/current-price
  • Endpoint POST /api/raffles/:id/price-rules (admin)
  • Tela admin: Gestão de Regras de Preço (Apenas infra pronta)
  • Registrar preço em price_logs a cada compra

Fase 5 — Notificações + Área do Ganhador

Objetivo: Comunicação automática e experiência do ganhador

  • Criar tabela notifications
  • Criar tabela raffle_claims
  • Notificação in-app: marcar como lida, listar por usuário
  • Notificação WhatsApp via NewWhats (integração já existe!)
  • Notificação por email (fallback — nodemailer) (Implementado Fallback)
  • Disparo automático ao finalizar sorteio
  • Tela "Meus Prêmios" — lista de sorteios ganhos (API implementada)
  • Tela "Detalhe do Prêmio" — confirmar dados + solicitar retirada (API implementada)
  • Fluxo admin de aprovação/entrega do prêmio (pending → approved → delivered)

Fase 6 — Relatórios + Analytics

Objetivo: Visibilidade completa do negócio

  • Relatório: vendas por dia
  • Relatório: vendas por hora
  • Relatório: preço médio aplicado
  • Relatório: números vendidos por sorteio
  • Relatório: receita total
  • Relatório: taxa de conversão (visualizações × compras) (No schema atual)
  • Relatório: performance por faixa de horário
  • Dashboard admin com gráficos (vanilla JS + Chart.js)

Fase 7 — CRM Inteligente e Motor de Notificações WhatsApp (NewWhats)

Objetivo: Implementar um ecossistema assíncrono e event-driven de engajamento do usuário.

Arquitetura & Infraestrutura

  • Implementar fila assíncrona OBRIGATÓRIA (Sugestão: BullMQ + Redis)
  • Backend: Serviço centralizador sendWhatsNotification({ userId, type, variables })
  • Backend: Sistema de Template Engine robusto (parseTemplate("type", vars))
  • Backend: Lógica de Retry Automático com Backoff Exponencial
  • Backend: Controle de Anti-bloqueio (Rate limit de 10-20 msg/min e delay random 2s~10s)
  • Banco de Dados: Criar tabela de auditoria whatsapp_logs (user_id, type, payload, status, response, created_at)

Workflow Transacional: Eventos

  • Compras: Disparo "Compra Confirmada" (order = paid), "Pendente", e "Expirada" (Altamente Crítico)
  • Sorteio Ativo: Notificar Ganhadores na Finalização (Acessar link)
  • Engajamento Promo: Enviar "Últimas Horas de Promo", "Queda de Preço", "Queda de Preço Localizada"
  • Reservas Tickets: "Número reservado na loteria", e Alerta de "Reserva Expirando"
  • Pós-Sorteio: Follow-up Logístico (Início de Resgate, Prêmio Aprovado e Prêmio Enviado)
  • Conta: Avisos de segurança / Boas Vindas.

Inteligência Avançada (Estratégia)

  • Impedir envios sucessivos (Evitar Spam e Timeout de conta)
  • Implementar Flag de Verificação/Opt-in do Usuário antes de enviar mensagens não Críticas.
  • Priorização das mensagens dos Compradores Recorrentes frente a Lead Frio.

Fase 8 — Refatoração do Dashboard Admin (React / Next.js)

Objetivo: UI Modular Avançada Desacoplada para Administrar 100% da Operação Backend.

Setup & Infraestrutura

  • Iniciar aplicação estática/SSG separada (Sugestão: Vite ou Next.js em diretório /admin-app)
  • Criar Sandbox Asaas Local (Mock): interceptar tráfego para simular PIX sem requisições reais à web
  • Configurar roteamento do Express para servir o Bundle gerado no path atual (/admin)
  • Instalar e configurar TailwindCSS + Shadcn/ui (Componentes Acessíveis Premium)
  • Configurar chamadas de API nativa (Fetch / React Query / Axios) apontando ao Backend

Core Operacional & Analytics

  • Refatorar tela de Login Autenticada Integrada ao Cookie JWT
  • Dashboard View: Gráficos aprimorados via Recharts.js (Receita, Taxas de Conversão e Horários)
  • Gestão de Pagamentos Asaas: Lista Histórica de Transactions/Orders com status visual (pending|paid|expired) e Filtros.

UI das Facilidades Backend Invisíveis

  • Interface de CRM & Prêmios (Resgate Kanban): UI drag & drop para status de Ganhadores (AprovadoEnviado)
  • Interface de Preços Dinâmicos (Campanhas): Gerir multiplicadores de preço automático do Sorteio por Time Range (Fase 4).
  • Painel NewWhats Logs Audit: Tela dedicada para listar Filas e rastreio completo de Status (Fase 7).
  • Guias Globais: Melhorar inputs de Setup do sistema (Chave API Asaas e Secretária IA).

📌 Notas Técnicas

  • Stack API: Node.js + Express + PostgreSQL
  • Stack Dashboard Novo: React (A Definir Build) + TailwindCSS
  • Banco: PostgreSQL (postgresql@15-main)
  • Notificações: BullMQ + ioredis / NewWhats Integration
  • Asaas: Webhooks implementados e processados assincronamente