@extends('layouts.app') @section('title', 'Dashboard') @section('actions') @can(\App\Enums\Permission::SCAN_CREATE) Scan erstellen @endcan @endsection @section('content') {{-- --------------------------------------------------------- Kennzahlen --}}
Laufende Scans
{{ $runningScans->count() }}
Limit: {{ config('barox.limits.max_parallel_jobs') }} gleichzeitig
Offene Freigaben
{{ $pendingApprovals }}
Aggressive Profile benötigen eine Freigabe
Autom. Abbrüche (30 Tage)
{{ $autoAbortedCount }}
Durch Grenzwertverletzung gestoppt
Kritische Findings
{{ $criticalFindings->count() }}
Offen, Schweregrad hoch oder kritisch
{{-- ------------------------------------------------------ Laufende Scans --}}

Laufende Scans

Aktualisiert alle 5 s
@if ($runningScans->isEmpty())
Derzeit läuft kein Scan.
@else
@foreach ($runningScans as $scan) @php $metrics = $latestMetrics->where('scan_job_id', $scan->id); @endphp @endforeach
ScanProfilPhaseFortschritt ZieleCPULatenzVerlust HTTPSSNMP
{{ $scan->name }}
{{ $scan->project->customer->name }} · {{ $scan->creator?->name }}
{{ $scan->profile->name }} {{ $scan->current_stage ?: $scan->status->label() }}
{{ (int) $scan->progress_percent }} %
{{ $scan->targets_completed }} / {{ $scan->targets_total }} {{ $metrics->max('cpu_percent') !== null ? number_format((float) $metrics->max('cpu_percent'), 0).' %' : '–' }} {{ $metrics->max('icmp_rtt_avg_ms') !== null ? number_format((float) $metrics->max('icmp_rtt_avg_ms'), 0).' ms' : '–' }} {{ $metrics->max('icmp_packet_loss_percent') !== null ? number_format((float) $metrics->max('icmp_packet_loss_percent'), 0).' %' : '–' }} @if ($metrics->contains('http_reachable', false)) Ausfall @elseif ($metrics->contains('http_reachable', true)) OK @else @endif @if ($metrics->contains('snmp_reachable', false)) Ausfall @elseif ($metrics->contains('snmp_reachable', true)) OK @else @endif @can('abort', $scan)
@csrf
@endcan
@endif
{{-- ------------------------------------------------ Offene Vorfälle --}}

Offene Auffälligkeiten

@if ($openIncidents->isEmpty())
Keine offenen Auffälligkeiten.
@else
@foreach ($openIncidents as $incident) @endforeach
GerätTypBeschreibungSeit
{{ $incident->switch?->hostname ?? '–' }} {{ $incident->type }} {{ $incident->summary }} {{ $incident->started_at?->format('d.m. H:i') }}
@endif
{{-- ---------------------------------------------- Kritische Findings --}}

Kritische Findings

@if ($criticalFindings->isEmpty())
Keine offenen kritischen Findings.
@else
@foreach ($criticalFindings as $finding) @endforeach
SchwereTitelGerätStatus
{{ $finding->severity->label() }} {{ $finding->title }} {{ $finding->switch?->hostname ?? '–' }} {{ $finding->status->label() }}
@endif
{{-- --------------------------------------------------- Neustarts ------}}

Zuletzt erkannte Neustarts

@if ($recentReboots->isEmpty())
Keine Neustarts erkannt.
@else
@foreach ($recentReboots as $switch) @endforeach
GerätModellErkannt
{{ $switch->hostname }} {{ $switch->modelLabel() }} {{ $switch->last_reboot_detected_at?->format('d.m.Y H:i') }}
@endif
{{-- ------------------------------------------------- Firmwarestände ---}}

Abweichende Firmware

@if ($outdatedFirmware->isEmpty())
Alle Geräte auf dem im Bestand höchsten Stand.
@else
@foreach ($outdatedFirmware as $switch) @endforeach
GerätModellFirmware
{{ $switch->hostname }} {{ $switch->modelLabel() }} {{ $switch->firmware_version }}
@endif
{{-- ------------------------------------------ Fehlgeschlagene Scans ---}}

Fehlgeschlagene und abgebrochene Scans

@if ($failedScans->isEmpty())
Keine Auffälligkeiten in den letzten 30 Tagen.
@else
@foreach ($failedScans as $scan) @endforeach
ScanStatusGrundEnde
{{ $scan->name }} {{ $scan->status->label() }} {{ $scan->abort_reason ?: '–' }} {{ $scan->finished_at?->format('d.m. H:i') }}
@endif
{{-- ------------------------------------------------ Wartungsfenster ---}}

Anstehende Wartungsfenster

@if ($upcomingWindows->isEmpty())
Keine Fenster geplant.
@else
@foreach ($upcomingWindows as $window) @endforeach
FensterKundeBeginnStatus
{{ $window->name }} {{ $window->customer?->name ?? 'Alle' }} {{ $window->starts_at->format('d.m.Y H:i') }} {{ $window->confirmed ? 'Bestätigt' : 'Offen' }}
@endif
@endsection @push('scripts') @endpush