@php use App\Support\InstalacaoProvisionamentoPassos; $passosLista = $passos ?? []; $instalacaoProvisionamento = $instalacaoProvisionamento ?? null; $podeRetomar = $instalacaoProvisionamento !== null && auth()->check() && auth()->user()->can('gestao-write'); $temErro = collect($passosLista)->contains(fn ($p) => ($p['status'] ?? '') === 'erro'); $temPendente = collect($passosLista)->contains(fn ($p) => ($p['status'] ?? '') === 'pendente'); $passosComErro = collect($passosLista)->filter(fn ($p) => ($p['status'] ?? '') === 'erro'); $passoCronManual = collect($passosLista)->first(fn ($p) => ($p['id'] ?? '') === InstalacaoProvisionamentoPassos::CRON_TENANT && ($p['status'] ?? '') === 'manual'); $somenteCronFalhou = $temErro && $passosComErro->count() === 1 && ($passosComErro->first()['id'] ?? null) === InstalacaoProvisionamentoPassos::CRON_TENANT; $detalhesAbertos = (bool) ($mostrarDetalhes ?? false) || $passoCronManual !== null; @endphp @if(count($passosLista) > 0)

Log dos passos da criação

@if($instalacaoProvisionamento)

Instalação #{{ $instalacaoProvisionamento->id }} · {{ $instalacaoProvisionamento->slug }} @if($temPendente && ! $temErro) · passos pendentes (migrations/seeder) — execute abaixo sem recriar a instalação. @else · provisionamento incompleto — pode repetir passos sem recriar tudo. @endif

@endif
@if($podeRetomar && ($temErro || $temPendente))
@csrf
@endif
@foreach($passosLista as $passo) @php $status = $passo['status'] ?? ''; $passoId = $passo['id'] ?? null; $podeRepetirPasso = $podeRetomar && $status === 'erro' && is_string($passoId) && InstalacaoProvisionamentoPassos::podeRepetir($passoId); $temDetalhes = filled($passo['detalhes'] ?? null); @endphp
{{ $passo['nome'] }}
{{ $passo['mensagem'] }}
@if($temDetalhes)
Detalhes técnicos
{{ $passo['detalhes'] }}
@endif @if(filled($passo['executado_em'] ?? null))
Executado em {{ \Illuminate\Support\Carbon::parse($passo['executado_em'])->format('d/m/Y H:i:s') }}
@endif
@if($status === 'ok') OK @elseif($status === 'erro') Falhou @elseif($status === 'pendente') Pendente @elseif($status === 'manual') Manual @else {{ $status ?: '—' }} @endif @if($podeRepetirPasso)
@csrf
@endif
@endforeach
@if($passoCronManual)

A API Cron deste servidor não permite registro automático (Cpanel::API::Cron indisponível). Abra cPanel → Cron Jobs, crie 2 entradas com periodicidade * * * * * e cole os comandos em Detalhes técnicos do passo 9. Repetir pela gestão só funcionará se a Hostgator ativar a API.

@elseif($somenteCronFalhou && $podeRetomar)

Os passos anteriores já foram concluídos. Corrija a configuração de cron (GESTAO_TENANT_CRON_ENABLED, GESTAO_API_CRON_BASE_PATH, permissões cPanel) e clique em Repetir só cron — banco, Vercel e .env não serão tocados.

@elseif($temPendente && $podeRetomar)

Existem passos ainda não executados (migrations, seeder ou cron). Clique em Executar passos pendentes para concluir o provisionamento sem recriar a instalação.

@elseif($temErro && $podeRetomar)

Corrija a causa do erro (credenciais cPanel, Vercel, permissões, etc.) e use Repetir no passo falhado ou Continuar do erro para executar apenas os passos pendentes em sequência.

@elseif($temErro)

Corrija os erros acima e tente salvar novamente.

@else

Todos os passos foram concluídos com sucesso.

@endif
@endif