8.0 KiB
8.0 KiB
🗺️ 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
alemaono PostgreSQL - Criar schema SQL equivalente ao atual (raffles, tickets, users, admins, promotions, plugins)
- Adicionar campo
statusemraffles(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
buyTicketcom transação atômica (BEGIN / COMMIT) - Migrar dados existentes do
.sqlitepara PostgreSQL - Testar todos os endpoints existentes
- Atualizar
.envcom credenciais PostgreSQL - Migrar
plugins/index.jseplugins/config.jspara async/await - Serviço
alemaoconveniencias.serviceativo 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 porend_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
statusemtickets(available | reserved | sold) - Criar campo
reserved_untilemtickets - Implementar reserva temporária (TTL 5 min via cron PostgreSQL)
- Integração Asaas: criar cliente (
POST /customers) - Integração Asaas: gerar cobrança (
POST /paymentsPIX) - Endpoint Webhook Asaas: confirmar pagamento →
order.status = paid→ númerosold - 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_defaultdo 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_logsa 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 Enginerobusto (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 (
Aprovado→Enviado) - 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