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

309 lines
6.4 KiB
Markdown

# 🚀 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):
```bash
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):
```javascript
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:
```bash
curl -X POST http://localhost:5000/api/alertas/enviar-vencimentos \
-H "Content-Type: application/json"
```
### Via navegador (Console F12):
```javascript
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
```json
{
"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:**
```bash
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:
```javascript
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:
```bash
crontab -e
```
### Adicionar linha:
```cron
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:
```bash
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:
```sql
SELECT * FROM mensagens_whatsapp
ORDER BY created_at DESC
LIMIT 10;
```
### 3. Verificar PIX gerado:
```sql
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:**
```bash
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):
```bash
# Resolver venda de 20/10
curl -X POST http://localhost:5000/api/alertas/enviar-atrasados
```
### Configurar automação:
```bash
# Adicionar ao cron
crontab -e
```
### Amanhã (25/10) às 09:01:
```bash
# Verificar se executou
tail logs/alertas-api.log
```
---
## 💡 Dicas
### Teste sem enviar:
Se quiser só ver quais alertas seriam enviados:
```javascript
// 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.** 📊