@php
/**
* Panel de plataforma con datos reales.
*
* Reemplaza las vistas de /superadmin/* que traían los números
* escritos a mano dentro del HTML.
*/
$fmt = fn ($n) => number_format((int) $n, 0, ',', '.');
$cop = fn ($n) => '$' . number_format((int) $n, 0, ',', '.');
$e = $stats['embudo'];
$i = $stats['ingresos'];
$a = $stats['ambientes'];
$s = $stats['suscripciones'];
@endphp
Plataforma · GoberData
Plataforma
Actualizado {{ \Illuminate\Support\Carbon::parse($stats['generado_en'])->diffForHumans() }}
· refrescar
Resumen
Ambientes
Cobros
Leads de demo
Pasarelas
{{-- Lo que requiere atención hoy. Va primero a propósito. --}}
@if(count($stats['alertas']))
@foreach($stats['alertas'] as $alerta)
{{ $alerta['mensaje'] }}
@if($alerta['accion'])
Resolver → @endif
@endforeach
@endif
Dinero
Ingreso recurrente
{{ $cop($i['mrr_estimado']) }}
normalizado a 30 días
Cobrado este mes
{{ $cop($i['mes_actual']) }}
@if($i['variacion_mensual'] !== null)
{{ $i['variacion_mensual'] >= 0 ? '▲' : '▼' }} {{ abs($i['variacion_mensual']) }}%
vs mes anterior
@else
sin comparación
@endif
Total histórico
{{ $cop($i['total_historico']) }}
ticket medio {{ $cop($i['ticket_promedio']) }}
Membresías vigentes
{{ $fmt($s['vigentes']) }}
{{ $s['por_vencer_7d'] }} vencen en 7 días
Pagos rechazados
{{ $fmt($i['pagos_rechazados_30d']) }}
últimos 30 días
Embudo: de la demo al cliente
Solicitudes de demo
{{ $fmt($e['solicitudes']) }}
{{ $e['ultimos_30_dias']['solicitudes'] }} en 30 días
Ambientes creados
{{ $fmt($e['provisionadas']) }}
{{ $e['fallidas'] }} fallaron
Entraron a probar
{{ $fmt($e['accedieron']) }}
{{ $e['tasa_acceso'] }}% de los creados
Compraron
{{ $fmt($e['convirtieron']) }}
{{ $e['tasa_conversion'] }}% de los que entraron
Conversión global
{{ $e['tasa_global'] }}%
@if($e['dias_promedio_hasta_compra'])
decide en {{ $e['dias_promedio_hasta_compra'] }} días
@else
sin datos aún
@endif
Ambientes
Clientes activos
{{ $fmt($a['clientes_activos']) }}
Demos activas
{{ $fmt($a['demos_activas']) }}
{{ $a['demos_vencidas'] }} vencidas sin purgar
Suspendidos
{{ $fmt($a['suspendidos']) }}
Usuarios
{{ $fmt($a['total_usuarios']) }}
{{ $fmt($a['usuarios_activos_30d']) }} activos en 30 días
Últimos 12 meses
@php $maxIng = max(1, max(array_column($stats['series'], 'ingresos'))); @endphp
@foreach($stats['series'] as $mes)
@endforeach
Ambientes con más uso
@if(count($stats['top_tenants']))
Campaña Candidato Jurisdicción
Plan Usuarios Votantes Voluntarios Vence
@foreach($stats['top_tenants'] as $t)
{{ $t['nombre'] }}
{{ $t['candidato'] }}
{{ $t['jurisdiccion'] }}
{{ $t['plan'] ?? '—' }}
{{ $fmt($t['usuarios']) }}
{{ $fmt($t['votantes']) }}
{{ $fmt($t['voluntarios']) }}
@if($t['dias_restantes'] !== null)
{{ $t['dias_restantes'] }} días
@else — @endif
@endforeach
@else
Todavía no hay clientes activos.
@endif
Suscripciones por plan
@if(count($s['por_plan']))
Plan Vigentes Facturado
@foreach($s['por_plan'] as $p)
{{ $p['plan'] }} {{ $fmt($p['total']) }} {{ $cop($p['monto']) }}
@endforeach
@else
Sin suscripciones vigentes.
@endif