#!/bin/bash
# Diagnóstico completo do sistema - Atualização e Fila WhatsApp

echo "🔍 =========================================="
echo "   DIAGNÓSTICO COMPLETO DO SISTEMA"
echo "=========================================="
echo ""

cd /var/www/gestorstream/backend

# 1. Verificar Scheduler
echo "📅 [1/8] Verificando Scheduler..."
if crontab -l 2>/dev/null | grep -q "schedule:run"; then
    echo "✅ Cron configurado para scheduler"
    crontab -l | grep "schedule:run"
else
    echo "❌ Cron NÃO configurado para scheduler"
fi
echo ""

# 2. Verificar Queue Worker
echo "⚙️  [2/8] Verificando Queue Worker..."
if systemctl is-active --quiet laravel-queue.service; then
    echo "✅ Queue worker está rodando"
    systemctl status laravel-queue.service --no-pager -l | head -10
else
    echo "❌ Queue worker NÃO está rodando"
    echo "   Execute: systemctl start laravel-queue.service"
fi
echo ""

# 3. Verificar Comando WhatsApp
echo "📱 [3/8] Verificando Comando WhatsApp..."
if php artisan list 2>/dev/null | grep -q "whatsapp:process-queue"; then
    echo "✅ Comando whatsapp:process-queue existe"
else
    echo "❌ Comando whatsapp:process-queue NÃO encontrado"
fi
echo ""

# 4. Verificar Jobs Pendentes
echo "📋 [4/8] Verificando Jobs Pendentes..."
php artisan tinker --execute="
\$pending = \App\Models\WhatsAppQueueJob::where('status', 'pending')->count();
\$processing = \App\Models\WhatsAppQueueJob::where('status', 'processing')->count();
\$sent = \App\Models\WhatsAppQueueJob::where('status', 'sent')->count();
\$failed = \App\Models\WhatsAppQueueJob::where('status', 'failed')->count();
echo 'Pendentes: ' . \$pending . PHP_EOL;
echo 'Processando: ' . \$processing . PHP_EOL;
echo 'Enviados: ' . \$sent . PHP_EOL;
echo 'Falhados: ' . \$failed . PHP_EOL;
" 2>/dev/null || echo "❌ Erro ao verificar jobs"
echo ""

# 5. Verificar Jobs Presos
echo "🔒 [5/8] Verificando Jobs Presos..."
php artisan tinker --execute="
\$stuck = \App\Models\WhatsAppQueueJob::where('status', 'processing')
    ->where('updated_at', '<', now()->subMinutes(5))
    ->count();
echo 'Jobs presos (>5min): ' . \$stuck . PHP_EOL;
" 2>/dev/null || echo "❌ Erro ao verificar jobs presos"
echo ""

# 6. Verificar Configuração Gitea
echo "🔗 [6/8] Verificando Configuração Gitea..."
php artisan tinker --execute="
\$settings = \App\Models\GiteaSettings::getActive();
if (\$settings) {
    echo 'URL: ' . \$settings->gitea_url . PHP_EOL;
    echo 'Repositório: ' . \$settings->repository . PHP_EOL;
    echo 'Auto-update: ' . (\$settings->auto_update_enabled ? 'Habilitado' : 'Desabilitado') . PHP_EOL;
    echo 'Webhook secret: ' . (\$settings->webhook_secret ? 'Configurado' : 'NÃO configurado') . PHP_EOL;
} else {
    echo '❌ Configuração do Gitea não encontrada' . PHP_EOL;
}
" 2>/dev/null || echo "❌ Erro ao verificar configuração Gitea"
echo ""

# 7. Verificar Webhook
echo "🌐 [7/8] Verificando Webhook..."
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://gestor.jf.eng.br/api/v1/webhooks/gitea 2>/dev/null)
if [ "$HTTP_CODE" = "200" ]; then
    echo "✅ Webhook está acessível (HTTP $HTTP_CODE)"
    echo "   URL: https://gestor.jf.eng.br/api/v1/webhooks/gitea"
else
    echo "⚠️  Webhook retornou HTTP $HTTP_CODE"
    echo "   URL testada: https://gestor.jf.eng.br/api/v1/webhooks/gitea"
    echo "   Verifique se a rota está configurada corretamente"
fi
echo ""

# 8. Verificar Logs Recentes
echo "📝 [8/8] Verificando Logs Recentes..."
echo "Últimas 10 linhas com 'whatsapp', 'queue' ou 'scheduler':"
tail -100 storage/logs/laravel.log 2>/dev/null | grep -i "whatsapp\|queue\|scheduler" | tail -10 || echo "Nenhum log encontrado"
echo ""

echo "✅ =========================================="
echo "   DIAGNÓSTICO CONCLUÍDO!"
echo "=========================================="
echo ""
echo "📋 Próximos passos:"
echo "   1. Revise os resultados acima"
echo "   2. Execute correções conforme necessário"
echo "   3. Teste manualmente:"
echo "      - php artisan whatsapp:process-queue --count=1"
echo "      - php artisan schedule:run"

