Files
App-Estoque-LiberiKids/USAR-ALERTAS-VIA-API.md
2025-11-29 21:31:52 -03:00

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

  1. Servidor rodando: node server-supabase.js
  2. 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:

  1. Abra http://localhost:5000
  2. Pressione F12 (Console)
  3. 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:

  1. Evolution API online?
  2. Instância conectada?
  3. Cliente tem WhatsApp?
  4. 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. 📊