Armazenamento

@can('manage-storage')
@csrf
Novo disco @endcan
@if (session('status'))
{{ session('status') }}
@endif @if (session('error'))
{{ session('error') }}
@endif

Cada disco é independente. Sem RAID 0, RAID 1 ou LVM spanning. Falha de um não derruba os demais. Retenção atual = idade da gravação ativa mais antiga (cobertura real), não um número de política.

@php $ov = [ ['Capacidade total', \App\Support\Bytes::format($overview['capacity_bytes'])], ['Uso total', \App\Support\Bytes::format($overview['used_bytes'])], ['Espaço livre', \App\Support\Bytes::format($overview['free_bytes'])], ['Retenção atual', $overview['retention_days'] !== null ? $overview['retention_days'].' dias' : 'sem gravações'], ['Câmeras gravando', (string) ($overview['cameras_recording'] ?? 0)], ['Câmeras com arquivo', (string) ($overview['cameras_with_video'] ?? 0)], ['Segmentos protegidos', (string) ($overview['protected_count'] ?? 0)], ['Política de idade', ($overview['retention_policy_days'] ?? 0) > 0 ? $overview['retention_policy_days'].' dias' : 'desligada (dev)'], ]; @endphp @foreach ($ov as [$label, $value])
{{ $label }}
{{ $value }}
@endforeach
@forelse ($disks as $disk) @php $pct = $disk->usedPercent(); $bar = $pct === null ? 0 : min(100, $pct); $barColor = $pct === null ? 'bg-slate-200' : ($pct >= ($disk->stop_new_percent) ? 'bg-red-500' : ($pct >= $disk->prefer_avoid_percent ? 'bg-amber-500' : 'bg-sky-500')); $days = $disk->recordingSpanDays(); @endphp
{{ $disk->label }}
{{ $disk->mount_path }}
{{ $disk->state }}
Capacidade {{ $disk->capacityLabel() }} · Usado {{ $disk->usedLabel() }} · Livre {{ $disk->freeLabel() }}
Gravações: {{ $days !== null ? $days.' dias' : 'nenhuma ainda' }}
@empty
Nenhum disco cadastrado.
@endforelse