@extends('layouts.app') @section('title', __('admin.queue.title')) @section('breadcrumbs') @include('components.breadcrumbs', ['items' => []]) @endsection @section('content')

{{ __('admin.queue.title') }}

{{ __('admin.queue.last_update') }}: {{ now()->format('H:i:s') }}
{{ __('app.nav.back_to_dashboard') }}
{{-- Health Status Alert --}}
{{ __('admin.queue.health_status') }}: {{ $healthStatus['message'] }}
@if($healthStatus['severity'] !== 'healthy') @endif
{{-- Statistics Cards --}}
{{ __('admin.queue.stats.total_jobs') }}

{{ $queueStats->sum('total') ?? 0 }}

{{ __('admin.queue.stats.active_batches') }}

{{ $activeBatches->count() }}

{{ __('admin.queue.stats.scans_in_progress') }}

{{ $scansInProgress->count() }}

{{ __('admin.queue.stats.failed_jobs_24h') }}

{{ $failedJobs->count() }}

{{-- Queue Stats by Type --}}
@php $queueNames = ['scans' => 'Scansioni', 'reports' => 'Report', 'high-priority' => 'Alta Priorità', 'default' => 'Default']; @endphp @foreach($queueNames as $queueKey => $queueLabel)
{{ $queueLabel }}

{{ $queueStats[$queueKey]->total ?? 0 }}

@endforeach
{{-- Tabs Navigation --}} {{-- Tabs Content --}}
{{-- Batches Tab --}}
{{ __('admin.queue.batches.title') }}
@forelse($activeBatches as $batch) @empty @endforelse
{{ __('admin.queue.batches.name') }} {{ __('admin.queue.batches.progress') }} {{ __('admin.queue.batches.total') }} {{ __('admin.queue.batches.pending') }} {{ __('admin.queue.batches.failed') }} {{ __('admin.queue.batches.created') }} {{ __('admin.queue.actions.title') }}
{{ $batch->name }}
{{ $batch->progress }}%
{{ $batch->total_jobs }} {{ $batch->pending_jobs }} @if($batch->failed_jobs > 0) {{ $batch->failed_jobs }} @else 0 @endif {{ $batch->created_at_formatted }}
{{ __('admin.queue.batches.no_active') }}
{{-- Scans in Progress Tab --}}
{{ __('admin.queue.scans.title') }}
@forelse($scansInProgress as $scan) @empty @endforelse
ID {{ __('admin.queue.scans.url') }} {{ __('admin.queue.scans.client') }} {{ __('admin.queue.scans.status') }} {{ __('admin.queue.scans.device') }} {{ __('admin.queue.scans.created') }} {{ __('admin.queue.scans.started') }} {{ __('admin.queue.actions.title') }}
{{ $scan->id }} {{ $scan->url }} {{ $scan->client->name ?? 'N/A' }} @if($scan->status === 'running') @endif {{ $scan->status_label }} {{ ucfirst($scan->device) }} {{ $scan->created_at->format('H:i:s') }} {{ $scan->started_at ? $scan->started_at->format('H:i:s') : '-' }}
{{ __('admin.queue.scans.no_in_progress') }}
{{-- Failed Jobs Tab --}}
{{ __('admin.queue.failed.title') }}
@if($failedJobs->count() > 0) @endif
@forelse($failedJobs as $job) @empty @endforelse
ID {{ __('admin.queue.failed.job') }} {{ __('admin.queue.failed.queue') }} {{ __('admin.queue.failed.failed_at') }} {{ __('admin.queue.failed.exception') }} {{ __('admin.queue.actions.title') }}
{{ $job->id }} {{ $job->display_name }} {{ $job->queue }} {{ $job->failed_at }} {{ $job->exception_short }}
{{ __('admin.queue.failed.no_failed') }}
{{-- Workers Tab --}}
{{ __('admin.queue.workers.title') }}
@foreach($healthStatus['worker_status'] as $queue => $status)
{{ ucfirst($queue) }}

{{ $status['active'] ? __('admin.queue.workers.active') : __('admin.queue.workers.inactive') }}

{{ __('admin.queue.workers.queued') }}: {{ $status['queued_jobs'] }} | {{ __('admin.queue.workers.reserved') }}: {{ $status['recently_reserved'] }}
@endforeach
{{-- Issues Section --}} @if($healthStatus['stuck_jobs_count'] > 0 || $healthStatus['stale_batches_count'] > 0 || $healthStatus['stuck_scans_count'] > 0)
{{ __('admin.queue.workers.detected_issues') }}
    @if($healthStatus['stuck_jobs_count'] > 0)
  • {{ __('admin.queue.workers.stuck_jobs', ['count' => $healthStatus['stuck_jobs_count']]) }}
  • @endif @if($healthStatus['stale_batches_count'] > 0)
  • {{ __('admin.queue.workers.stale_batches', ['count' => $healthStatus['stale_batches_count']]) }}
  • @endif @if($healthStatus['stuck_scans_count'] > 0)
  • {{ __('admin.queue.workers.stuck_scans', ['count' => $healthStatus['stuck_scans_count']]) }}
  • @endif
@endif
@endsection