@section('title', __('Planejador de Lançamento'))
@if (empty($selectedCity)) @if(!empty($setupMissing))
Estrutura de metas ainda nao criada no banco. Execute php artisan migrate --force.
@else
Nenhuma cidade ativa configurada. Acesse Configurar Metas para cadastrar o contexto operacional.
@endif
@else @php $portalLabel = trim((string) setting('websiteName', '')); if (empty($portalLabel)) { $portalLabel = strtoupper(str_replace('_', ' ', $profile->portal_key ?? 'portal')); } @endphp

Plano de Lançamento · {{ $portalLabel }}

{{ $selectedCity->city_name }}

Perfil: {{ $profile->name }} · Estratégia: {{ str_replace('_', ' ', ucfirst($profile->strategy)) }} · Janela de execução: {{ $horizonMonths }} meses

Cidades no plano: {{ implode(' · ', $launchAreas) }}

@php $setup = $metrics['payment_setup']; @endphp
Wallet offline: {{ $setup['offline_wallet_enabled'] ? 'ATIVO' : 'INATIVO' }} Cash final: {{ $setup['cash_enabled'] ? 'ATIVO' : 'INATIVO' }} Offline no táxi: {{ $setup['offline_taxi_enabled'] ? 'ATIVO' : 'DESLIGADO' }}

Atualizado em {{ $metrics['generated_at']->format('d/m/Y H:i') }}

Cidade analisada

Busca dinâmica: use Google para localizar e o sistema tenta vincular com uma cidade do plano.

@if (!empty($citySearchMessage))

{{ $citySearchMessage }}

@endif

{{ number_format($readiness['score'], 1) }}%

Prontidão

{{ $readiness['label'] }}
@foreach ($targetProgress as $item) @php $progressWidth = max(4, min(100, (float) $item['progress'])); $progressClass = 'bg-rose-500'; if ($item['on_track']) { $progressClass = 'bg-emerald-500'; } elseif ($item['progress'] >= 60) { $progressClass = 'bg-amber-500'; } @endphp

{{ $item['label'] }}

@if ($item['unit'] === '%') {{ number_format($item['current'], 1) }}% @else {{ number_format($item['current']) }} @endif

Meta: @if ($item['unit'] === '%') {{ number_format($item['target'], 1) }}% @else {{ number_format($item['target']) }} {{ $item['unit'] }} @endif

{{ number_format($item['progress'], 1) }}%

@if ($item['direction'] === 'up') @if ($item['gap'] > 0) Faltam {{ number_format($item['gap']) }} ({{ number_format($item['monthly_need']) }}/mes) @else Meta atingida. @endif @else @if ($item['gap'] > 0) Excesso de {{ number_format($item['gap'], 1) }} (reduzir {{ number_format($item['monthly_need'], 1) }}/mes) @else Dentro do limite. @endif @endif

@endforeach

Situacao de pedidos (30 dias)

{{ number_format($metrics['orders_last_30']) }}

Taxi: {{ number_format($metrics['taxi_orders_last_30']) }} · Entrega: {{ number_format($metrics['delivery_orders_last_30']) }}

Comprovantes pendentes

{{ number_format($metrics['total_reviews_pending']) }}

Wallet: {{ number_format($metrics['wallet_offline_reviews_pending']) }} · Pedidos: {{ number_format($metrics['order_offline_reviews_pending']) }}

Mix cash no fechamento

{{ number_format($metrics['cash_mix_last_30'], 1) }}%

{{ number_format($metrics['cash_orders_last_30']) }} pedidos cash em {{ number_format($metrics['orders_last_30']) }} pedidos

Remessa pendente

{{ currencyFormat($metrics['remittance_pending_amount']) }}

{{ number_format($metrics['remittance_pending_count']) }} registros · {{ number_format($metrics['remittance_pending_vs_wallet'], 1) }}% do saldo da carteira

Saldo em carteiras de motoristas

{{ currencyFormat($metrics['driver_wallet_float']) }}

Top-up aprovado 30d: {{ currencyFormat($metrics['topup_successful_30']) }}

Base ativa atual

{{ number_format($metrics['drivers_active']) }}

Taxi: {{ number_format($metrics['taxi_drivers_active']) }} · Entrega: {{ number_format($metrics['couriers_active']) }} · Lojas: {{ number_format($metrics['vendors_active']) }}

Situacao atual por zona de lancamento

Pedidos detectados por endereco/cidade nos ultimos 30 dias

@php $weakestZone = collect($zoneSnapshot)->sortBy('total_orders_last_30')->first()['name'] ?? null; @endphp @foreach ($zoneSnapshot as $zone) @endforeach
Zona Lojas ativas Clientes mapeados Entregas 30d Taxi 30d Total 30d
{{ $zone['name'] }} {{ number_format($zone['vendors_active']) }} {{ number_format($zone['clients_detected']) }} {{ number_format($zone['delivery_orders_last_30']) }} {{ number_format($zone['taxi_orders_last_30']) }} {{ number_format($zone['total_orders_last_30']) }} {{ number_format($zone['readiness_score'], 1) }}%

O que ajustar para atingir a meta

Plano pratico para os proximos ciclos de operacao

@foreach ($actions as $action) @php $priority = strtolower($action['priority']); $badgeClass = 'bg-emerald-100 text-emerald-700 border-emerald-200'; if ($priority === 'alta') { $badgeClass = 'bg-rose-100 text-rose-700 border-rose-200'; } elseif ($priority === 'media') { $badgeClass = 'bg-amber-100 text-amber-700 border-amber-200'; } @endphp

{{ $action['title'] }}

{{ strtoupper($action['priority']) }}

{{ $action['detail'] }}

KPI: {{ $action['kpi'] }}

Owner: {{ $action['owner'] }}

@endforeach

Projecao de 6 meses

Comparativo entre ritmo atual e ritmo minimo necessario

Motoristas/entregadores (mes)

Atual: {{ number_format($projection['current_pace']['drivers']) }} · Necessario: {{ number_format($projection['required_pace']['drivers']) }}

Lojas ativas (mes)

Atual: {{ number_format($projection['current_pace']['vendors']) }} · Necessario: {{ number_format($projection['required_pace']['vendors']) }}

Pedidos liquidos (mes)

Atual: {{ number_format($projection['current_pace']['orders']) }} · Necessario: {{ number_format($projection['required_pace']['orders']) }}

@foreach ($projection['rows'] as $row) @endforeach
Mes Motoristas (Atual/Nec.) Lojas (Atual/Nec.) Pedidos (Atual/Nec.) Status
{{ $row['month'] }} {{ number_format($row['drivers_current']) }} / {{ number_format($row['drivers_required']) }} {{ number_format($row['vendors_current']) }} / {{ number_format($row['vendors_required']) }} {{ number_format($row['orders_current']) }} / {{ number_format($row['orders_required']) }} @if ($row['status'] === 'on_track') NO RITMO @else ABAIXO @endif

Fluxo operacional definido

Carteira

Top-up somente offline com comprovante e revisao manual.

Pagamento final

Fechamento em cash no pedido/corrida.

Controles diarios

Conciliar comprovantes, remessas e saldo de carteira por turno.

@endif