chore: sincroniza projeto para gitea
This commit is contained in:
308
USAR-ALERTAS-VIA-API.md
Normal file
308
USAR-ALERTAS-VIA-API.md
Normal file
@@ -0,0 +1,308 @@
|
||||
# 🚀 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.** 📊
|
||||
Reference in New Issue
Block a user