# Sistema de Envio de WhatsApp - Geocontrole

## 📱 Visão Geral

Este sistema permite o envio automático de mensagens WhatsApp para notificar sobre:
- RNC vencidas (mais de 5 dias)
- RNC prestes a vencer (exatamente 5 dias)
- Análises SGI vencidas
- E outros tipos de verificações

## 🔧 Configuração

### 1. Variáveis de Ambiente (.env)

Adicione as seguintes variáveis no arquivo `.env`:

```bash
# Opção 1: WhatsApp Business API (Meta/Facebook)
WHATSAPP_TOKEN=your_whatsapp_access_token_here
WHATSAPP_PHONE_NUMBER_ID=your_phone_number_id_here

# Opção 2: Outras APIs (ex: Twilio, ChatAPI, etc.)
WHATSAPP_API_URL=https://api.your-whatsapp-provider.com/send
WHATSAPP_API_KEY=your_api_key_here
```

### 2. Dependências

Instale o axios se ainda não estiver instalado:
```bash
npm install axios
```

### 3. Estrutura do Banco de Dados

Certifique-se de que a tabela `loginmobile` tenha a coluna `Telefone`:

```sql
ALTER TABLE loginmobile ADD COLUMN Telefone VARCHAR(20);
```

## 📋 Provedores de WhatsApp API Suportados

### 1. WhatsApp Business API (Meta/Facebook)
- **Mais confiável**
- **Oficial do WhatsApp**
- Requer aprovação do Facebook
- Configurar: `WHATSAPP_TOKEN` e `WHATSAPP_PHONE_NUMBER_ID`

### 2. Twilio WhatsApp API
```bash
WHATSAPP_API_URL=https://api.twilio.com/2010-04-01/Accounts/YOUR_ACCOUNT_SID/Messages.json
WHATSAPP_TOKEN=your_twilio_auth_token
```

### 3. ChatAPI
```bash
WHATSAPP_API_URL=https://api.chat-api.com/instance123456/sendMessage
WHATSAPP_TOKEN=your_chatapi_token
```

## 🕐 Horários de Execução

Todos os cron jobs estão configurados para rodar às **08:00 (GMT-3 - Brasília)** diariamente:

- **VerificarRncWhatsApp**: RNC vencidas
- **VerificarRncAVencerWhatsApp**: RNC a vencer em 5 dias
- **VerificarAnalSgiVencidaWhatsApp**: Análises SGI vencidas

## 📝 Logs

Cada verificação gera logs específicos:
- `logs/whatsapp-rnc-vencida.log`
- `logs/whatsapp-rnc-avencer.log`
- `logs/whatsapp-anal-sgi-vencida.log`

## 🧪 Testando o Sistema

### 1. Teste Manual via API

**Enviar para um setor:**
```bash
POST /whatsapp/enviar-setor
{
    "setor": "SGI",
    "subject": "Teste WhatsApp",
    "text": "Mensagem de teste"
}
```

**Enviar para um usuário específico:**
```bash
POST /whatsapp/enviar-usuario
{
    "usuario": "João Silva",
    "subject": "Teste WhatsApp",
    "text": "Mensagem de teste"
}
```

**Teste automático:**
```bash
POST /whatsapp/teste
```

### 2. Teste de Desenvolvimento

Para testar durante desenvolvimento, descomente no arquivo de verificação:
```javascript
// TESTE: Agendar também para rodar a cada 5 minutos durante desenvolvimento
cron.schedule('*/5 * * * *', async () => {
    try {
        logger.info('TESTE: Executando tarefa de teste WhatsApp');
        await verificarPrazosVencidaWhatsApp();
    } catch (error) {
        logger.error('TESTE: Erro na execução WhatsApp:', error);
    }
});
```

## 📊 Monitoramento

### Verificar Logs
```bash
# Ver logs em tempo real
tail -f logs/whatsapp-*.log

# Ver logs específicos
tail -f logs/whatsapp-rnc-vencida.log
```

### Verificar Status do Cron
```bash
# Verificar se os cron jobs foram carregados
grep "Cron job.*WhatsApp.*configurado" logs/whatsapp-*.log
```

## 🔒 Segurança

1. **Nunca commitar tokens** no repositório
2. **Usar variáveis de ambiente** para todas as credenciais
3. **Validar números** antes do envio
4. **Limitar taxa de envio** para evitar spam

## 🚨 Troubleshooting

### Mensagens não chegam
1. Verificar se o token está correto
2. Verificar se o número está no formato correto (+55XXXXXXXXXXX)
3. Verificar logs de erro
4. Testar com a API do provedor diretamente

### Erro de conexão
1. Verificar conectividade com a internet
2. Verificar se a URL da API está correta
3. Verificar se o provedor não está bloqueado

### Números não encontrados
1. Verificar se a coluna `Telefone` existe na tabela `loginmobile`
2. Verificar se os números estão cadastrados
3. Verificar se o setor está correto

## 📱 Formato das Mensagens

As mensagens seguem o padrão:
```
🚨 [TÍTULO]

Olá [NOME],

[CONTEÚDO DA MENSAGEM]

📅 Detalhes específicos
⚠️ Status atual
```

## 🔄 Próximos Passos

1. **Adicionar mais verificações** (tratativas, etc.)
2. **Implementar templates** de mensagens
3. **Adicionar envio de imagens/documentos**
4. **Criar dashboard** de monitoramento
5. **Implementar resposta automática**

## 📞 Suporte

Para dúvidas ou problemas:
1. Verificar logs primeiro
2. Testar com rota de teste
3. Verificar configurações do provedor
4. Contatar desenvolvedor se necessário