{{-- Status Badge --}}
@php $hasIssues = $failedJobs > 0 || ($diskUsage['used_percent'] !== null && $diskUsage['used_percent'] > 90); @endphp {{ $hasIssues ? __('Needs Attention') : __('All Systems Operational') }} {{ __('Refresh') }}
{{-- Health cards --}}
@php $queueStatus = $pendingJobs > 100 ? 'critical' : ($pendingJobs > 50 ? 'warning' : 'healthy'); $failedStatus = $failedJobs > 10 ? 'critical' : ($failedJobs > 0 ? 'warning' : 'healthy'); $diskStatus = ($diskUsage['used_percent'] ?? 0) > 90 ? 'critical' : (($diskUsage['used_percent'] ?? 0) > 75 ? 'warning' : 'healthy'); $dbSizeStatus = ($dbSize ?? 0) > 5000 ? 'warning' : 'healthy'; $healthMetrics = [ [ 'label' => __('Queue Depth'), 'value' => number_format($pendingJobs), 'unit' => __('jobs'), 'status' => $queueStatus, 'detail' => !empty($queueDepths) ? collect($queueDepths)->map(fn($c, $q) => "$q: $c")->implode(', ') : __('No pending jobs'), 'icon' => 'M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10', ], [ 'label' => __('Failed Jobs'), 'value' => number_format($failedJobs), 'unit' => __('jobs'), 'status' => $failedStatus, 'detail' => $failedJobs > 0 && count($recentFailedJobs) > 0 ? __('Latest:') . ' ' . ($recentFailedJobs[0]->job_class ?? __('Unknown')) : __('No recent failures'), 'icon' => 'M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z', ], [ 'label' => __('Database Size'), 'value' => $dbSize !== null ? $dbSize : __('N/A'), 'unit' => $dbSize !== null ? 'MB' : '', 'status' => $dbSizeStatus, 'detail' => $dbSize !== null ? __('MySQL database size on disk') : __('Could not read database size'), 'icon' => 'M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4', ], [ 'label' => __('Disk Usage'), 'value' => $diskUsage['used_percent'] !== null ? $diskUsage['used_percent'] : __('N/A'), 'unit' => $diskUsage['used_percent'] !== null ? '%' : '', 'status' => $diskStatus, 'detail' => $diskUsage['total_gb'] !== null ? number_format($diskUsage['total_gb'] - $diskUsage['free_gb'], 1) . ' ' . __('GB used') . ' / ' . number_format($diskUsage['total_gb'], 1) . ' ' . __('GB total') : __('Could not read disk info'), 'icon' => 'M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01', ], [ 'label' => __('Log Errors'), 'value' => count($recentErrors), 'unit' => __('recent'), 'status' => count($recentErrors) > 10 ? 'critical' : (count($recentErrors) > 0 ? 'warning' : 'healthy'), 'detail' => count($recentErrors) > 0 ? __('Found in last 5KB of log file') : __('No recent errors in log'), 'icon' => 'M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z', ], [ 'label' => __('Environment'), 'value' => ucfirst($appInfo['environment']), 'unit' => '', 'status' => $appInfo['debug_mode'] && $appInfo['environment'] === 'production' ? 'critical' : 'healthy', 'detail' => __('Debug:') . ' ' . ($appInfo['debug_mode'] ? __('ON') : __('OFF')) . ' | ' . __('Cache:') . ' ' . $appInfo['cache_driver'], 'icon' => 'M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.066 2.573c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.573 1.066c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.066-2.573c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z', ], ]; @endphp @foreach($healthMetrics as $metric) @php $statusColors = [ 'healthy' => ['bg' => 'bg-success/10', 'border' => 'border-success/20', 'badge' => 'bg-success/15 text-success', 'dot' => 'bg-success/100'], 'warning' => ['bg' => 'bg-warning/10', 'border' => 'border-warning/20', 'badge' => 'bg-warning/15 text-warning', 'dot' => 'bg-warning/100'], 'critical' => ['bg' => 'bg-danger/10', 'border' => 'border-danger/20', 'badge' => 'bg-danger/15 text-danger', 'dot' => 'bg-danger/100'], ]; $sc = $statusColors[$metric['status']]; @endphp
{{ $metric['label'] }}
{{ ucfirst($metric['status']) }}
{{ $metric['value'] }} {{ $metric['unit'] }}

{{ $metric['detail'] }}

@endforeach
{{-- Table row counts --}}

{{ __('Database Table Counts') }}

@foreach($tableCounts as $table => $count)
{{ $table }} {{ is_numeric($count) ? number_format($count) : $count }}
@endforeach
{{-- Server info --}}

{{ __('Application Information') }}

@php $serverInfo = [ ['key' => __('PHP Version'), 'value' => $appInfo['php_version']], ['key' => __('Laravel Version'), 'value' => $appInfo['laravel_version']], ['key' => __('Environment'), 'value' => ucfirst($appInfo['environment'])], ['key' => __('Debug Mode'), 'value' => $appInfo['debug_mode'] ? __('Enabled') : __('Disabled')], ['key' => __('Cache Driver'), 'value' => $appInfo['cache_driver']], ['key' => __('Queue Driver'), 'value' => $appInfo['queue_driver']], ['key' => __('Session Driver'), 'value' => $appInfo['session_driver']], ]; @endphp @foreach($serverInfo as $info)
{{ $info['key'] }} {{ $info['value'] }}
@endforeach

{{ __('Storage Usage') }}

{{-- Disk usage bar --}} @if($diskUsage['used_percent'] !== null)
{{ __('Disk Usage') }} {{ $diskUsage['used_percent'] }}%

{{ number_format($diskUsage['free_gb'], 1) }} {{ __('GB free of') }} {{ number_format($diskUsage['total_gb'], 1) }} GB

@else

{{ __('Disk usage info unavailable.') }}

@endif {{-- Storage directory sizes --}} @if(!empty($storageSizes))

{{ __('Storage Directories') }}

@foreach($storageSizes as $dir => $sizeMb)
storage/{{ $dir }} {{ $sizeMb }} MB
@endforeach
@endif
{{-- Recent failed jobs --}} @if(count($recentFailedJobs) > 0)

{{ __('Recent Failed Jobs') }}

{{ __('Last') }} {{ count($recentFailedJobs) }} {{ __('failed jobs') }}

@foreach($recentFailedJobs as $job) @endforeach
{{ __('Job') }} {{ __('Queue') }} {{ __('Error') }} {{ __('Failed At') }}
{{ $job->job_class }} {{ $job->queue }} {{ Str::limit($job->exception_summary, 100) }} {{ $job->failed_at }}
@endif {{-- Recent errors from log --}} @if(count($recentErrors) > 0)

{{ __('Recent Log Errors') }}

{{ __('Extracted from laravel.log (last 5KB)') }}

@foreach($recentErrors as $error)
{{ Str::limit($error, 300) }}
@endforeach
@endif