# Operação 24h no Windows (XAMPP local)

Guia objetivo para deixar o pipeline rodando sem parar no seu XAMPP local enquanto não há servidor em produção.

## 1. Pré-requisitos

- XAMPP com PHP em `C:\xampp\php\php.exe`
- Projeto em `C:\xampp\htdocs\promocoes-alyne`
- Todas as migrations rodadas: `php artisan migrate`
- Pelo menos uma fonte Telegram ativa: `php artisan telegram:source-list`
- Pelo menos um destino Telegram cadastrado: `php artisan telegram:target-list`

## 2. Fluxo recomendado — passo a passo

### Dia 1 — Validação manual no PowerShell

```powershell
# 1. cadastrar destino
php artisan telegram:target-add @ogerenteendoidou "O Gerente Endoidou"
php artisan telegram:target-list

# 2. puxar mensagens novas dos canais fonte
php artisan telegram:read-links

# 3. processar (resolver URL, scraping, gerar afiliado, montar texto)
php artisan telegram:process-pending --platform=mercadolivre
php artisan telegram:process-pending --platform=amazon

# 4. PUBLICAR em modo interativo (o mais importante!)
#    Vai exibir um card com titulo/preco/imagem/texto/destino
#    E perguntar [s] publica  [n] pula  [i] ignora p/sempre  [q] sai
php artisan telegram:post-offers
```

**Dica:** use `--dry-run` para só visualizar sem publicar nada, nem alterar o banco:

```powershell
php artisan telegram:post-offers --dry-run
```

### Dia 2 em diante — Automático

Depois de confortável com o resultado:

1. Ative a publicação automática no `.env`:
   ```env
   TELEGRAM_PUBLISH_AUTO_ENABLED=true
   ```

2. Cadastre a tarefa agendada do Windows (uma vez só, **PowerShell como Administrador**):

```powershell
schtasks /Create /SC MINUTE /MO 1 ^
  /TN "LaravelScheduleRun-PromocoesAlyne" ^
  /TR "cmd.exe /c cd /d C:\xampp\htdocs\promocoes-alyne && C:\xampp\php\php.exe artisan schedule:run >> storage\logs\schedule.log 2>&1"
```

A partir daí o `schedule:run` roda a cada minuto sem janela visível. Ele dispara, em ordem:
- `telegram:read-links` a cada 15 min
- `telegram:process-pending --platform=mercadolivre` a cada 10 min
- `telegram:process-pending --platform=amazon` a cada 10 min
- `telegram:post-offers --auto` a cada minuto (respeitando intervalo mínimo)
- `telegram:prune` diariamente às 03:00

## 3. Monitorar em tempo real

Em um PowerShell qualquer:

```powershell
# Log do schedule (Windows)
Get-Content storage\logs\schedule.log -Wait -Tail 30

# Log principal do Laravel
Get-Content storage\logs\laravel.log -Wait -Tail 50

# Log do MadelineProto (telegram)
Get-Content storage\logs\madeline.log -Wait -Tail 30
```

## 4. Verificar se a tarefa está ativa

```powershell
schtasks /Query /TN "LaravelScheduleRun-PromocoesAlyne"

# ou mais detalhado
schtasks /Query /TN "LaravelScheduleRun-PromocoesAlyne" /V /FO LIST
```

## 5. Pausar / retomar / remover

```powershell
# pausar sem remover
schtasks /Change /TN "LaravelScheduleRun-PromocoesAlyne" /DISABLE

# retomar
schtasks /Change /TN "LaravelScheduleRun-PromocoesAlyne" /ENABLE

# remover de vez
schtasks /Delete /TN "LaravelScheduleRun-PromocoesAlyne" /F
```

## 6. Alternativa rápida (sem schtasks)

Se não quer mexer com Agendador, rode num PowerShell dedicado (fecha se a janela cair):

```powershell
cd C:\xampp\htdocs\promocoes-alyne
while ($true) { php artisan schedule:run; Start-Sleep -Seconds 60 }
```

Bom para testes. Use **schtasks** para rodagem 24h de verdade.

## 7. Migração futura para VPS Linux

Quando sair do XAMPP local para uma VPS Linux, a única diferença operacional é o cron.

**1. Remover a tarefa do Windows Scheduler:**
```powershell
schtasks /Delete /TN "LaravelScheduleRun-PromocoesAlyne" /F
```

**2. Adicionar a entrada no crontab do Linux:**
```bash
crontab -e
```

Adicione a linha (ajuste o caminho conforme a VPS):
```bash
* * * * * cd /var/www/promocoes-alyne && php artisan schedule:run >> /dev/null 2>&1
```

Tudo mais — Kernel.php, comandos, configurações — continua idêntico. O schedule do Laravel é agnóstico ao sistema operacional.

---

## 8. Diagnóstico de problemas comuns

| Sintoma | Causa provável | Como investigar |
|---|---|---|
| `Sessao nao encontrada` | Login Telegram expirou | `php artisan telegram:test-login` |
| `Nenhuma oferta elegivel` | Nada processado ainda ou tudo já publicado | `php artisan telegram:process-pending` e conferir dashboard |
| Erro `CHAT_WRITE_FORBIDDEN` | Sua conta não é admin do canal de destino | Adicionar conta como administradora no Telegram |
| `FLOOD_WAIT_X` | Rate limit do Telegram | Aumentar `TELEGRAM_PUBLISH_INTERVAL_MINUTES` no `.env` |
| Schedule não dispara | Tarefa agendada não criada ou desabilitada | `schtasks /Query /TN "LaravelScheduleRun-PromocoesAlyne"` |
