# Configurar Schedule Direto na Hospedagem (Sem API External)

## 📋 O que foi reformulado

O arquivo `public/run_integracoes_schedule.php` foi simplificado para:

- ✅ Remover opções de linha de comando (`--all-active`, `--respect-min`, `--id=123`)
- ✅ Ler APENAS `back.integracao_horarios` para determinar quais sincronizações executar
- ✅ Manter toda a lógica robusta que já funcionava (locks, anti-repetição, logs, etc)
- ✅ Ser chamado diretamente pelo schedule da hospedagem a cada 1 minuto

---

## 🔧 Como Configurar a Hospedagem

### Opção 1: Via CPanel (Mais comum em hospedagem compartilhada)

1. Acesse o **CPanel** da sua hospedagem
2. Procure por **"Cron Jobs"** (ou Schedule)
3. Clique em **"Add New Cron Job"** (ou "Add Cron Expression")
4. Configure assim:

   ```
   Minute:  *
   Hour:    *
   Day:     *
   Month:   *
   Day of Week: *
   
   Command: php /home/seu_usuario/public_html/orcamento/public/run_integracoes_schedule.php
   ```

   Ou de forma resumida (equivalente a `*/1 * * * *`):
   ```
   Command: /usr/bin/php /home/seu_usuario/public_html/orcamento/public/run_integracoes_schedule.php
   ```

5. Clique em **"Add Cron Job"**

---

### Opção 2: Via Painel de Hospedagem Alternativo

Se seu painel não for CPanel, procure por:
- **"Cron Jobs"**
- **"Scheduled Tasks"**
- **"Task Scheduler"**
- **"Agendador de Tarefas"**

E configure para:
- **Frequência**: A cada 1 minuto (`*/1 * * * *` ou "Every minute")
- **Comando**: `php /caminho/para/orcamento/public/run_integracoes_schedule.php`

---

## 📝 Encontrar o Caminho Correto

Se não sabe qual é o caminho completo, faça:

1. Acesse o painel (CPanel)
2. Abra **"File Manager"** (ou similar)
3. Navegue até a pasta raiz (public_html, www, etc)
4. Procure pela pasta `orcamento`
5. O caminho será algo como:
   ```
   /home/seu_usuario/public_html/orcamento
   ```

Ou use PHP CLI para descobrir:
```php
<?php
echo __DIR__; // Mostra caminho completo
?>
```

---

## 🧪 Testar Manualmente

Após adicionar ao cron, você pode testar localmente:

```bash
php /home/seu_usuario/public_html/orcamento/public/run_integracoes_schedule.php
```

Isso retornará algo como:
```
[2026-02-13 10:30:45] Iniciando runner de sincronização...
[2026-02-13 10:30:45] Diretório de logs: /home/seu_usuario/public_html/orcamento/app/logs/scheduler
[2026-02-13 10:30:45] Buscando integrações agendadas...
[2026-02-13 10:30:45] Nenhuma integração agendada para este horário (10:30).
```

---

## 📊 Monitorar Execuções

### 1. Verificar Logs

Os logs são salvos em:
```
/orcamento/app/logs/scheduler/integracoes_schedule_runner.log
```

Ou acesse via CPanel **"File Manager"**.

### 2. Ver Histórico no Banco de Dados

```sql
SELECT 
  i.dsintegracao,
  l.dtexecucao,
  l.status,
  l.mensagem
FROM back.integracao_execucao_log l
JOIN back.integracao i ON i.cdintegracao = l.cdintegracao
ORDER BY l.dtexecucao DESC
LIMIT 20;
```

### 3. Configurar Email de Notificação (CPanel)

No CPanel, ao adicionar o Cron Job, você pode habilitar:
- **Notification Email**: Receber email com output do cron
- **Log Output**: Guardar logs do cron

---

## 🎯 Configurar Integrações com Horários

Agora que o cron está rodando a cada 1 minuto, configure os horários:

1. Acesse o painel → **Integrações**
2. Edite uma integração
3. Vá até **"Horários Agendados"**
4. Clique `+` e adicione horários como:
   - **08:00** (manhã)
   - **14:00** (tarde)  
   - **20:00** (noite)
5. Marque como "Ativo"
6. **Salve**

**Resultado:** A cada minuto que corresponder ao horário agendado, a sincronização será executada automaticamente!

---

## 📌 Exemplo Prático

Suponha que você configura uma integração para rodar em **08:00, 14:00 e 20:00**:

```
07:59:xx → Nenhuma ação (não bate)
08:00:xx → ✅ EXECUTA (bate com 08:00)
08:01:xx → Pula (já executou neste minuto)
...
13:59:xx → Nenhuma ação
14:00:xx → ✅ EXECUTA (bate com 14:00)
14:01:xx → Pula (já executou neste minuto)
```

---

## 🔒 Segurança

✅ Rotação é local, sem dependência de serviço externo  
✅ Apenas CLI (não pode ser acionado via web)  
✅ Lock file evita duplicatas  
✅ Logs detalhados de tudo que acontece  

---

## ⚠️ Troubleshooting

### ❌ "Não encontra o arquivo"
- Verifique o caminho completo em CPanel
- Use `/usr/bin/php` em vez de apenas `php`

### ❌ "Permission denied"
- Confirme que `public/run_integracoes_schedule.php` tem permissão 644 (ou 755)
- Pode pedir ao suporte da hospedagem para ajustar

### ❌ "Sincronização não executa"
- Verifique se há horários configurados nas integrações
- Confira se a hora do servidor corresponde aos horários agendados
- Veja os logs em `app/logs/scheduler/`

### ❌ "Script executando infinitamente"
- Normal em primeiro teste - leva 5-15 minutos
- Tem lock para evitar duplicatas  
- Se travar, delete manualmente: `app/logs/scheduler/integracoes_schedule_runner.lock`

---

## 🚀 Resumo Rápido

1. ✅ Edite o CPanel → Cron Jobs
2. ✅ Adicione: `php /caminho/run_integracoes_schedule.php`
3. ✅ Frequência: A cada 1 minuto
4. ✅ Configure horários nas integrações
5. ✅ Pronto! ✓

**Simples assim!** 🎉

