# 🔧 CORREÇÃO: ATUALIZAÇÃO AUTOMÁTICA E FILA DO WHATSAPP

## 📋 DIAGNÓSTICO INICIAL

Execute no servidor para diagnosticar:

```bash
cd /var/www/gestorstream/backend

# 1. Verificar se o scheduler está rodando
php artisan schedule:list

# 2. Verificar se o queue worker está rodando
systemctl status laravel-queue.service

# 3. Verificar jobs pendentes na fila
php artisan queue:work --once --verbose

# 4. Verificar jobs do WhatsApp pendentes
php artisan tinker --execute="
\$pending = \App\Models\WhatsAppQueueJob::where('status', 'pending')->count();
\$processing = \App\Models\WhatsAppQueueJob::where('status', 'processing')->count();
echo 'Pendentes: ' . \$pending . PHP_EOL;
echo 'Processando: ' . \$processing . PHP_EOL;
"

# 5. Verificar se o comando existe
php artisan list | grep whatsapp

# 6. Testar processamento manual
php artisan whatsapp:process-queue --count=1

# 7. Verificar logs recentes
tail -50 storage/logs/laravel.log | grep -i "whatsapp\|queue\|scheduler" | tail -20
```

---

## 🎯 CORREÇÃO 1: ATUALIZAÇÃO AUTOMÁTICA

### Problemas Identificados

1. ✅ Sistema de manutenção já foi removido
2. ⚠️ Webhook pode não estar validando corretamente
3. ⚠️ Job pode não estar sendo processado pela queue
4. ⚠️ Script de build pode falhar por permissões

### Ações de Correção

#### 1.1. Verificar Webhook

```bash
# Testar webhook manualmente
curl -X GET https://gestor.jf.eng.br/api/v1/webhook/gitea
```

Deve retornar mensagem de que está funcionando.

#### 1.2. Verificar Configuração do Gitea

No painel admin, verificar:
- ✅ URL do Gitea configurada
- ✅ Token de acesso válido
- ✅ Webhook secret configurado
- ✅ Auto-update habilitado

#### 1.3. Testar Atualização Manual

```bash
# No painel admin, tentar atualização manual
# Verificar logs durante a atualização
tail -f storage/logs/laravel.log
```

#### 1.4. Adicionar Logs Detalhados

Já adicionados no `UpdateWebhookController` e `UpdateService`.

---

## 🎯 CORREÇÃO 2: FILA DO WHATSAPP

### Problemas Identificados

1. ✅ Comando `whatsapp:process-queue` existe
2. ✅ Scheduler está configurado (a cada 30 segundos)
3. ⚠️ Scheduler pode não estar rodando
4. ⚠️ Queue worker pode não estar processando jobs

### Ações de Correção

#### 2.1. Verificar Scheduler

```bash
# Verificar se o cron está configurado
crontab -l | grep schedule:run

# Deve ter:
# * * * * * cd /var/www/gestorstream/backend && /usr/bin/php artisan schedule:run >> /var/www/gestorstream/backend/storage/logs/scheduler.log 2>&1
```

#### 2.2. Verificar Queue Worker

```bash
# Verificar status
systemctl status laravel-queue.service

# Se não estiver rodando, iniciar
systemctl start laravel-queue.service
systemctl enable laravel-queue.service
```

#### 2.3. Testar Processamento Manual

```bash
# Processar 1 job manualmente
php artisan whatsapp:process-queue --count=1

# Verificar se processou
php artisan tinker --execute="
\$job = \App\Models\WhatsAppQueueJob::where('status', 'pending')->first();
if (\$job) {
    echo 'Job pendente encontrado: ' . \$job->id . PHP_EOL;
} else {
    echo 'Nenhum job pendente' . PHP_EOL;
}
"
```

#### 2.4. Verificar Jobs Presos

```bash
# Resetar jobs presos em "processing" há mais de 5 minutos
php artisan tinker --execute="
\$stuck = \App\Models\WhatsAppQueueJob::where('status', 'processing')
    ->where('updated_at', '<', now()->subMinutes(5))
    ->update(['status' => 'pending', 'scheduled_at' => now()]);
echo 'Jobs resetados: ' . \$stuck . PHP_EOL;
"
```

---

## 🛡️ PREVENÇÃO DE ERROS

### Garantias Implementadas

1. ✅ Manutenção desabilitada permanentemente
2. ✅ Logs detalhados adicionados
3. ⚠️ Monitoramento precisa ser adicionado

### Próximas Ações

1. Adicionar health checks
2. Adicionar alertas para erros críticos
3. Documentar processo completo

---

## 📝 PRÓXIMOS PASSOS

1. **Execute o diagnóstico** acima
2. **Envie os resultados** para identificar problemas específicos
3. **Aplicaremos correções** baseadas nos resultados

