# 🚀 Migrar Scheduler do Windows BAT para Hospedagem Napoleon

## 📋 Situação Atual

✅ Você tem um script `run_integracoes_schedule.php` que **funciona 100%**  
✅ Ele foi executado via BAT no Windows Task Scheduler  
✅ Agora você quer rodar na hospedagem Napoleon via seu Schedule próprio

---

## ✨ O que mudou no script

O arquivo foi **reformulado** mas mantém 90% do código que já funciona:

- **Antes:** Acceptava parâmetros CLI (`--all-active`, `--id=123`, etc)
- **Depois:** Lê diretamente de `back.integracao_horarios` para saber o que executar

**Resultado final:** Mesmo funcionamento, mas sem precisa de parâmetros!

---

## 🔧 Passo a Passo: Configurar na Napoleon

### 1️⃣ Acessar Painel de Controle da Hospedagem

1. Acesse o painel da Napoleon (geralmente em `painel.napoleonjr.com.br` ou similar)
2. Procure por opções como:
   - **"Cron Jobs"**
   - **"Agendador de Tarefas"**
   - **"Schedule"**
   - **"Cron"**

### 2️⃣ Criar Nova Tarefa Agendada

Clique em **"Adicionar Nova Tarefa"** ou **"Add Cron Job"**

Você verá um formulário com campos como:

```
Minuto:   [ ]
Hora:     [ ]
Dia:      [ ]
Mês:      [ ]
Dia Semana: [ ]

Comando: [ ]
```

### 3️⃣ Configurar para Rodar a Cada 1 Minuto

Preencha assim:

```
Minuto:       *
Hora:         *
Dia:          *
Mês:          *
Dia Semana:   *
```

(Isso significa: "a cada 1 minuto, de cada hora, de cada dia")

**Ou** se houver campo de "frequência":
- Selecione: **"Every minute"** (ou **"A cada 1 minuto"**)

### 4️⃣ Inserir Caminho do Script

No campo **"Comando"**, insira:

```
/usr/bin/php /home/seu_usuario/public_html/orcamento/public/run_integracoes_schedule.php
```

**Ou** (se o anterior não funcionar):

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

**Como descobrir o caminho?**
Você terá recebido no email quando criou a hospedagem. Geralmente é:
- `/home/seu_usuario/public_html/` (comum)
- `/public_html/` (algumas hosts)
- `/var/www/html/` (raro em hospedagem compartilhada)

### 5️⃣ Salvar a Tarefa

Clique em **"Salvar"**, **"Create"**, **"Adicionar"** ou similar.

---

## ✅ Verificar se Funcionou

### Teste 1: Verificar Logs

Após 5 minutos, acesse os logs:

```
Acesse seu FTP ou File Manager em Napoleon
Navegue até: orcamento/app/logs/scheduler/
Procure por arquivo: integracoes_schedule_runner.log
```

Se houver logs ali, significa que **está funcionando!**

### Teste 2: Adicionar um Horário para AGORA

1. Acesse o painel → Integrações
2. Edite uma integração
3. Vá até "Horários Agendados"  
4. Clique `+`
5. Digite hora e minuto **atuais** (ex: se é 10h30, adicione 10:30)
6. Salve

**Resultado esperado:** Na próxima execução (máximo 1 minuto), vai executar!

### Teste 3: Verificar Banco de Dados

```sql
SELECT 
  dtexecucao, 
  status, 
  mensagem
FROM back.integracao_execucao_log
ORDER BY dtexecucao DESC
LIMIT 5;
```

Deve mostrar registros recentes com `status = 'sucesso'` ou `'agendado'`

---

## 📊 Monitorar Execuções

### Via Logs do Sistema

```
Arquivo: orcamento/app/logs/scheduler/integracoes_schedule_runner.log
```

Exemplo de conteúdo:
```
[2026-02-13 08:00:45] Iniciando runner de sincronização...
[2026-02-13 08:00:45] Buscando integrações agendadas...
[2026-02-13 08:00:45] Encontradas 1 integração(ões) para executar
[2026-02-13 08:00:45] Executando integração #5 (Realizado ERP)...
[2026-02-13 08:00:52]   -> OK (inseridos=150, ignorados=2, erros=0)
[2026-02-13 08:01:03] Consolidando views...
[2026-02-13 08:01:05] Finalizado. Executadas=1, inseridos=150, ignorados=2, erros=0
```

### Via 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 10;
```

---

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

Agora que o scheduler está rodando, configure os horários:

1. **Acesse:** Painel → **Integrações**
2. **Edite** uma integração ativa
3. **Vá até:** Seção **"Horários Agendados"**
4. **Clique no botão:** `+` (adicionar novo horário)
5. **Preencha:**
   - Hora: `08` (para 8 da manhã)
   - Minuto: `00`
6. **Marque:** ✓ Ativo
7. **Clique:** Remover (se quiser tirar depois)
8. **Salve** a integração

**Exemplo de Configuração:**

| Integração | Horários |
|------------|----------|
| Realizado ERP | 08:00, 14:00, 20:00 |
| Backup | 06:00, 18:00 |
| Consolidação | 23:30 |

---

## ❌ Se Não Funcionar

### ❌ "Erro: Arquivo não encontrado"

**Solução:**
1. Verifique o caminho correto em FTP/File Manager
2. Tente colocar `php -f` na frente:
   ```
   php -f /home/seu_usuario/public_html/orcamento/public/run_integracoes_schedule.php
   ```
3. Peça ao suporte da Napoleon o caminho completo

### ❌ "Nenhuma integração agendada"

**Solução:**
1. Confirme se adicionou horários nas integrações
2. Verifique se a hora/minuto corresponde ao momento da execução
3. Veja logs para entender o que está acontecendo

### ❌ "Permission denied"

**Solução:**
1. Peça ao suporte da Napoleon para ajustar permissões
2. Ou defina 755 nas permissões do arquivo via FTP

### ❌ "Script executa repetidamente"

**Normal!** Na primeira execução pode levar 5-30 minutos para sincronizar dados. O lock file evita duplicatas.

Se realmente travar:
1. Acesse FTP
2. Delete: `orcamento/app/logs/scheduler/integracoes_schedule_runner.lock`
3. Tente novamente

---

## 📞 Suporte Napoleon

Se não conseguir encontrar onde agendar no painel, **entre em contato com o suporte Napoleon** e diga:

> "Preciso agendar um cron job para executar um script PHP a cada 1 minuto. 
> O comando é: `php /home/meu_usuario/public_html/orcamento/public/run_integracoes_schedule.php`"

Eles vão configurar por você!

---

## 🎉 Resumo Final

```
1. ✅ Encontre "Cron Jobs" no painel da Napoleon
2. ✅ Crie novo: Frequência = a cada 1 minuto
3. ✅ Comando = php /home/.../orcamento/public/run_integracoes_schedule.php
4. ✅ Salve
5. ✅ Configure horários nas integrações
6. ✅ Pronto! A cada minuto que bater, executa!
```

**Simples assim!** 🚀

