6.4 KiB
🚀 Enviar Alertas via API (Solução Simples)
✅ Problema Resolvido!
Adicionei 2 rotas API no servidor para enviar alertas sem precisar configurar .env separado.
📋 Pré-requisitos
- Servidor rodando:
node server-supabase.js - Configurações no painel admin:
- Evolution API (URL, Instância, API Key)
- Mercado Pago (Access Token)
- Alertas WhatsApp (toggles ATIVOS)
🎯 Opção 1: Enviar Alertas Atrasados (AGORA)
Para resolver a venda de 20/10 com vencimento em 24/10:
Via curl (terminal):
curl -X POST http://localhost:5000/api/alertas/enviar-atrasados \
-H "Content-Type: application/json"
Via navegador:
Abra uma nova aba e execute no Console (F12):
fetch('http://localhost:5000/api/alertas/enviar-atrasados', {
method: 'POST'
})
.then(r => r.json())
.then(data => console.log(data));
O que faz:
- ✅ Busca parcelas vencidas ou vencendo hoje
- ✅ Gera PIX para cada uma
- ✅ Envia WhatsApp com PIX
- ✅ Retorna resumo (quantos enviados, erros)
🕐 Opção 2: Teste do Sistema Automático
Para testar se o sistema funcionaria hoje (sem enviar de verdade ainda):
Via curl:
curl -X POST http://localhost:5000/api/alertas/enviar-vencimentos \
-H "Content-Type: application/json"
Via navegador (Console F12):
fetch('http://localhost:5000/api/alertas/enviar-vencimentos', {
method: 'POST'
})
.then(r => r.json())
.then(data => {
console.log('📊 RESULTADO:');
console.log(`✅ Enviados: ${data.alertasEnviados}`);
console.log(`❌ Erros: ${data.erros}`);
console.log('\n📦 Parcelas:');
console.table(data.parcelas);
});
O que faz:
- Verifica parcelas pendentes
- Calcula dias para vencimento
- Envia alertas conforme configuração:
- 3 dias antes → Primeiro alerta
- No dia → Segundo alerta + PIX
- 3 dias após → Alerta pós-vencimento
- Retorna logs detalhados
📊 Resposta Esperada
{
"success": true,
"alertasEnviados": 2,
"erros": 0,
"parcelas": [
{
"cliente": "João Silva",
"valor": "R$ 150,00",
"vencimento": "24/10/2025",
"tipo": "segundo_alerta",
"status": "enviado"
},
{
"cliente": "Maria Santos",
"valor": "R$ 200,00",
"vencimento": "27/10/2025",
"tipo": "primeiro_alerta",
"status": "enviado"
}
],
"logs": [
"📋 Configurações: Primeiro=3d (ON), Segundo=0d (ON), Pós=3d (ON)",
"📦 15 parcela(s) pendente(s)",
"✅ segundo_alerta enviado para João Silva",
"✅ primeiro_alerta enviado para Maria Santos",
"📊 RESUMO: 2 enviados, 0 erros"
]
}
🔥 AÇÃO IMEDIATA (Para Venda 20/10)
Execute AGORA:
curl -X POST http://localhost:5000/api/alertas/enviar-atrasados
Ou no navegador:
- Abra
http://localhost:5000 - Pressione F12 (Console)
- Cole e execute:
fetch('/api/alertas/enviar-atrasados', {method: 'POST'})
.then(r => r.json())
.then(d => console.log('Resultado:', d));
Isso enviará imediatamente o alerta + PIX para a parcela vencendo hoje!
🤖 Automatização com Cron
Para executar automaticamente às 09:00 todos os dias:
Editar cron:
crontab -e
Adicionar linha:
0 12 * * * curl -X POST http://localhost:5000/api/alertas/enviar-vencimentos -H "Content-Type: application/json" >> /home/tiago/Downloads/app_estoque_v1.0.0/logs/alertas-api.log 2>&1
Nota: 0 12 em UTC = 09:00 em Brasília (UTC-3)
Criar diretório de logs:
mkdir -p /home/tiago/Downloads/app_estoque_v1.0.0/logs
✅ Verificar se Funcionou
1. Ver logs do servidor:
O servidor mostrará no terminal:
🔔 Iniciando envio de alertas de vencimento...
📋 Configurações: Primeiro=3d (ON), Segundo=0d (ON), Pós=3d (ON)
📦 15 parcela(s) pendente(s)
✅ segundo_alerta enviado para João Silva
📊 RESUMO: 2 enviados, 0 erros
2. Verificar no banco:
SELECT * FROM mensagens_whatsapp
ORDER BY created_at DESC
LIMIT 10;
3. Verificar PIX gerado:
SELECT numero_parcela, valor, pix_qr_code
FROM venda_parcelas
WHERE pix_qr_code IS NOT NULL
ORDER BY created_at DESC;
🎯 Vantagens desta Solução
| Aspecto | Benefício |
|---|---|
| Sem .env extra | Usa configurações do servidor |
| Sem permissões | Não precisa chmod |
| Fácil de testar | Um curl e pronto |
| Logs imediatos | Vê resultado na hora |
| Cron simples | Uma linha apenas |
| Debug fácil | Logs no terminal do servidor |
🔍 Troubleshooting
Erro: "Cannot POST /api/alertas/..."
Causa: Servidor não está rodando
Solução:
node server-supabase.js
Erro: "Evolution API não responde"
Causa: Evolution não configurada
Solução: Painel Admin → Configurações → Evolution API
Erro: "Nenhuma parcela encontrada"
Causa: Não há parcelas pendentes hoje
Solução: Isso é normal! Sistema está ok.
Alertas não chegam
Verificar:
- Evolution API online?
- Instância conectada?
- Cliente tem WhatsApp?
- Número correto (apenas dígitos)?
📅 Cronograma de Uso
Hoje (24/10):
# Resolver venda de 20/10
curl -X POST http://localhost:5000/api/alertas/enviar-atrasados
Configurar automação:
# Adicionar ao cron
crontab -e
Amanhã (25/10) às 09:01:
# Verificar se executou
tail logs/alertas-api.log
💡 Dicas
Teste sem enviar:
Se quiser só ver quais alertas seriam enviados:
// No console do navegador
fetch('/api/alertas/enviar-vencimentos', {method: 'POST'})
.then(r => r.json())
.then(d => {
console.log(`Seriam enviados ${d.alertasEnviados} alertas`);
console.table(d.parcelas);
});
Forçar envio para uma parcela específica:
Você pode criar uma rota customizada ou usar o sistema de vendas → Parcelas → Botão "PIX" + Chat WhatsApp.
✅ Checklist Final
- Servidor rodando (
node server-supabase.js) - Evolution API configurada no admin
- Mercado Pago configurado no admin
- Alertas ATIVOS no admin
- Executou
/api/alertas/enviar-atrasados(resolveu venda 20/10) - Adicionou ao cron (automação futura)
- Testou e viu resultado no console
🎉 Sistema pronto! Muito mais simples que scripts separados! ✨
Qualquer dúvida, os logs aparecem no terminal do servidor. 📊