# 🔔 Sistema de Alertas Automáticos de Vencimento ## 📋 Problema Identificado **Situação:** - Venda realizada em 20/10/2025 - Primeira parcela com vencimento em 24/10/2025 - **Alertas NÃO foram enviados:** - ❌ 3 dias antes (21/10) - Não recebido - ❌ No dia do vencimento (24/10) - Não recebido com PIX **Causa:** O sistema de alertas automáticos **não estava configurado** para rodar diariamente às 09:00. --- ## ✅ Solução Implementada Criamos um sistema completo de alertas automáticos com: 1. **Script Node.js** que verifica parcelas e envia alertas 2. **Cron Job** configurado para executar às 09:00 (Brasília) 3. **Geração automática de PIX** no dia do vencimento 4. **Logs** de todas as execuções --- ## 🚀 Como Instalar ### Passo 1: Instalar o Cron Job ```bash cd /home/tiago/Downloads/app_estoque_v1.0.0 chmod +x scripts/instalar-cron-alertas.sh ./scripts/instalar-cron-alertas.sh ``` O script irá: - ✅ Configurar execução diária às 09:00 (horário de Brasília) - ✅ Criar diretório de logs - ✅ Perguntar se quer fazer um teste imediato - ✅ Mostrar configuração final ### Passo 2: Configurar Variáveis de Ambiente Crie/edite o arquivo `.env` na raiz do projeto: ```bash # Supabase SUPABASE_URL=https://ydhzylfnpqlxnzfcclla.supabase.co SUPABASE_SERVICE_KEY=seu_service_key_aqui # ou SUPABASE_ANON_KEY=seu_anon_key_aqui # Evolution API (configurar no painel admin) # Mercado Pago (configurar no painel admin) ``` ### Passo 3: Configurar no Painel Admin Acesse o painel admin → Configurações e configure: **Evolution API:** - URL da API - Nome da instância - API Key **Mercado Pago:** - Access Token (para geração de PIX) **Alertas WhatsApp:** - Primeiro alerta: 3 dias antes ✅ ATIVO - Segundo alerta: No dia (0 dias) ✅ ATIVO - Alerta após vencimento: 3 dias após ✅ ATIVO - Mensagens personalizadas para cada tipo --- ## 🕐 Como Funciona ### Execução Automática **Horário:** Todos os dias às 09:00 (horário de Brasília) **O que o script faz:** 1. **Busca configurações** do banco de dados 2. **Lista todas as parcelas pendentes** 3. **Calcula dias para vencimento** de cada parcela 4. **Verifica se deve enviar alerta:** - Primeiro alerta: 3 dias antes? ✅ - Segundo alerta: No dia? ✅ + Gera PIX - Alerta pós-vencimento: 3 dias após? ✅ 5. **Substitui variáveis** na mensagem: - `{cliente}` → Nome do cliente - `{valor}` → R$ 150,00 - `{quando}` → "em 3 dias" ou "hoje" ou "há 3 dias" - `{parcela}` → "1/3" 6. **Envia via WhatsApp** usando Evolution API 7. **Registra no histórico** de mensagens 8. **Gera log** completo da execução --- ## 📱 Tipos de Alertas ### 1. Primeiro Alerta (3 dias antes) **Quando:** 21/10 às 09:00 para vencimento em 24/10 **Mensagem padrão:** ``` Olá João! 👋 Lembramos que você tem uma parcela no valor de R$ 150,00 com vencimento em 3 dias (24/10/2025). Agradecemos a atenção! ``` ### 2. Segundo Alerta (No dia do vencimento) **Quando:** 24/10 às 09:00 **Mensagem padrão:** ``` Olá João! 👋 Sua parcela de R$ 150,00 vence hoje. 📱 PIX Copia e Cola: ```00020126580014br.gov.bcb.pix...``` Agradecemos! ``` **Ação extra:** Gera PIX automaticamente via Mercado Pago ### 3. Alerta Após Vencimento (3 dias após) **Quando:** 27/10 às 09:00 para vencimento em 24/10 **Mensagem padrão:** ``` Olá João! 👋 Identificamos que a parcela 1/3 no valor de R$ 150,00 venceu há 3 dias (24/10/2025). Por favor, regularize o pagamento. ``` --- ## 📊 Monitoramento ### Ver Logs em Tempo Real ```bash tail -f /home/tiago/Downloads/app_estoque_v1.0.0/logs/alertas-cron.log ``` ### Exemplo de Log ``` 🕐 Iniciando envio de alertas de vencimento... ⏰ Horário: 24/10/2025, 09:00:15 📋 Configurações carregadas: - Primeiro alerta: 3 dias antes (ATIVO) - Segundo alerta: 0 dias antes (ATIVO) - Alerta pós-vencimento: 3 dias após (ATIVO) 📦 15 parcela(s) pendente(s) encontrada(s) 📤 Enviando segundo_alerta para João Silva (5543999762754)... 🔄 Gerando PIX para parcela 1... ✅ Enviado com sucesso! 📤 Enviando primeiro_alerta para Maria Santos (5543988776655)... ✅ Enviado com sucesso! ================================================== 📊 RESUMO DO ENVIO ================================================== ✅ Alertas enviados: 8 ❌ Erros: 0 📦 Total de parcelas verificadas: 15 ================================================== ✅ Script finalizado com sucesso! ``` --- ## 🧪 Teste Manual Para testar o sistema sem esperar às 09:00: ```bash cd /home/tiago/Downloads/app_estoque_v1.0.0 node scripts/enviar-alertas-parcelas.js ``` Isso executará imediatamente e mostrará: - Quais alertas seriam enviados - Para quais clientes - Resultado de cada envio --- ## 🔍 Verificar Cron Instalado ```bash crontab -l ``` Deve mostrar algo como: ``` 0 12 * * * TZ='America/Sao_Paulo' /usr/bin/node /home/tiago/Downloads/app_estoque_v1.0.0/scripts/enviar-alertas-parcelas.js >> /home/tiago/Downloads/app_estoque_v1.0.0/logs/alertas-cron.log 2>&1 ``` **Nota:** `0 12` em UTC = 09:00 em Brasília (UTC-3) --- ## 🛠️ Troubleshooting ### Problema: Alertas não são enviados **Verificar:** 1. **Cron está instalado?** ```bash crontab -l | grep enviar-alertas-parcelas ``` 2. **Script tem permissão de execução?** ```bash ls -l scripts/enviar-alertas-parcelas.js chmod +x scripts/enviar-alertas-parcelas.js ``` 3. **Configurações estão corretas no admin?** - Evolution API configurada - Mercado Pago configurado - Alertas ATIVOS (toggles verdes) 4. **Clientes têm WhatsApp cadastrado?** ```sql SELECT nome_completo, whatsapp FROM clientes WHERE whatsapp IS NULL OR whatsapp = ''; ``` 5. **Parcelas estão com status "pendente"?** ```sql SELECT * FROM venda_parcelas WHERE status = 'pendente' ORDER BY data_vencimento; ``` 6. **Ver logs de erro:** ```bash tail -100 logs/alertas-cron.log ``` ### Problema: PIX não é gerado **Verificar:** 1. **Mercado Pago Access Token configurado?** - Painel Admin → Configurações → Mercado Pago 2. **Token válido?** - Tokens expiram, gere um novo se necessário 3. **Testar geração manual:** - Sistema de Vendas → Parcelas → Botão "PIX" ### Problema: Mensagens não chegam **Verificar:** 1. **Evolution API está online?** - Teste acessando a URL configurada 2. **Instância está conectada?** - Verifique no painel da Evolution API 3. **WhatsApp do cliente correto?** - Formato: apenas números (5543999762754) - Com DDD e código do país 4. **Testar envio manual:** - Sistema de Vendas → Chat WhatsApp --- ## 📅 Cronograma de Alertas ### Exemplo: Venda em 20/10, vencimento 24/10 | Data | Hora | Tipo de Alerta | Dias | Ação | |------|------|----------------|------|------| | 21/10 | 09:00 | Primeiro Alerta | -3 dias | Lembrete | | 24/10 | 09:00 | Segundo Alerta | 0 dia (hoje) | Lembrete + PIX | | 27/10 | 09:00 | Pós-Vencimento | +3 dias | Cobrança | --- ## 🔄 Desinstalar Cron Se precisar remover o cron: ```bash crontab -e ``` Remova a linha que contém `enviar-alertas-parcelas.js` e salve. Ou automaticamente: ```bash crontab -l | grep -v 'enviar-alertas-parcelas' | crontab - ``` --- ## 📝 Personalizar Mensagens No painel admin → Configurações → Alertas WhatsApp **Variáveis disponíveis:** - `{cliente}` - Primeiro nome do cliente - `{valor}` - Valor formatado (R$ 150,00) - `{quando}` - "em 3 dias", "hoje", "há 3 dias" - `{parcela}` - "1/3", "2/5", etc. **Exemplo de mensagem personalizada:** ``` Oi {cliente}! 😊 Sua parcela {parcela} de {valor} vence {quando}. Qualquer dúvida, estamos aqui! *Liberi Kids* 👗👕 ``` --- ## 🎯 Caso de Uso: Venda 20/10 **Configuração:** - Primeiro alerta: 3 dias antes ✅ - Segundo alerta: No dia ✅ - Pós-vencimento: 3 dias após ✅ **Timeline:** | Dia | Evento | |-----|--------| | **20/10** | Venda realizada, parcela 1 vence 24/10 | | **21/10 09:00** | 🔔 Primeiro alerta enviado: "vence em 3 dias" | | **24/10 09:00** | 🔔 Segundo alerta + PIX: "vence hoje" + QR Code | | **27/10 09:00** | 🔔 Alerta pós-venc: "venceu há 3 dias" | --- ## ✅ Checklist de Verificação Antes de considerar o sistema funcionando, verifique: - [ ] Cron instalado e ativo (`crontab -l`) - [ ] Horário correto (09:00 Brasília = 12:00 UTC) - [ ] Evolution API configurada no admin - [ ] Mercado Pago configurado no admin - [ ] Alertas ATIVOS (toggles verdes) - [ ] Mensagens personalizadas configuradas - [ ] Teste manual executado com sucesso - [ ] Logs sendo gerados em `/logs/alertas-cron.log` - [ ] Clientes com WhatsApp cadastrado - [ ] Parcelas com status "pendente" --- ## 📞 Suporte **Logs importantes:** ```bash # Logs do cron tail -f logs/alertas-cron.log # Logs do servidor tail -f logs/server.log # Histórico de mensagens (SQL) SELECT * FROM mensagens_whatsapp ORDER BY created_at DESC LIMIT 50; # Parcelas pendentes SELECT vp.*, v.id_venda, c.nome_completo, c.whatsapp FROM venda_parcelas vp JOIN vendas v ON vp.venda_id = v.id JOIN clientes c ON v.cliente_id = c.id WHERE vp.status = 'pendente' ORDER BY vp.data_vencimento; ``` --- **Desenvolvido para: Liberi Kids - Moda Infantil** 👗👕 **Data: 24 de outubro de 2025** **Versão: 1.0** **Status: ✅ Pronto para Produção**