122 lines
7.2 KiB
PHP
122 lines
7.2 KiB
PHP
<x-filament-panels::page>
|
|
<div class="space-y-4">
|
|
<div class="rounded-xl border bg-white p-4 dark:border-white/10 dark:bg-gray-900">
|
|
<div class="mb-3 text-sm font-semibold text-gray-900 dark:text-white">Scansione qualità (Filament SuperAdmin)</div>
|
|
|
|
<div class="grid grid-cols-1 gap-3 md:grid-cols-3">
|
|
<label class="text-xs text-gray-600 dark:text-gray-300">
|
|
Percorsi
|
|
<input wire:model.defer="path" type="text" class="mt-1 w-full rounded-md border-gray-300 text-sm dark:border-white/10 dark:bg-gray-800" />
|
|
</label>
|
|
|
|
<label class="text-xs text-gray-600 dark:text-gray-300">
|
|
Severità
|
|
<select wire:model.defer="severity" class="mt-1 w-full rounded-md border-gray-300 text-sm dark:border-white/10 dark:bg-gray-800">
|
|
<option value="all">Tutte</option>
|
|
<option value="critical">Critical</option>
|
|
<option value="error">Error</option>
|
|
<option value="warning">Warning</option>
|
|
<option value="info">Info</option>
|
|
</select>
|
|
</label>
|
|
|
|
<label class="text-xs text-gray-600 dark:text-gray-300">
|
|
Modulo
|
|
<select wire:model.defer="module" class="mt-1 w-full rounded-md border-gray-300 text-sm dark:border-white/10 dark:bg-gray-800">
|
|
<option value="all">Tutti</option>
|
|
<option value="gescon-import">Gescon Import</option>
|
|
<option value="stabili">Stabili</option>
|
|
<option value="contabilita-gescon">Contabilità Gescon</option>
|
|
<option value="supporto">Supporto</option>
|
|
</select>
|
|
</label>
|
|
|
|
<label class="text-xs text-gray-600 dark:text-gray-300">
|
|
Menù
|
|
<select wire:model.defer="menu" class="mt-1 w-full rounded-md border-gray-300 text-sm dark:border-white/10 dark:bg-gray-800">
|
|
<option value="all">Tutti</option>
|
|
<option value="stabili">Stabili</option>
|
|
<option value="condomini">Condomini</option>
|
|
<option value="contabilita">Contabilità</option>
|
|
<option value="supporto">Supporto</option>
|
|
<option value="gescon-import">Gescon Import</option>
|
|
</select>
|
|
</label>
|
|
|
|
<label class="text-xs text-gray-600 dark:text-gray-300">
|
|
Stabile QA
|
|
<input wire:model.defer="stabile" type="text" placeholder="es. GES00148, 148, 0021" class="mt-1 w-full rounded-md border-gray-300 text-sm dark:border-white/10 dark:bg-gray-800" />
|
|
</label>
|
|
|
|
<label class="text-xs text-gray-600 dark:text-gray-300">
|
|
Anno QA
|
|
<input wire:model.defer="anno" type="text" placeholder="es. 2025" class="mt-1 w-full rounded-md border-gray-300 text-sm dark:border-white/10 dark:bg-gray-800" />
|
|
</label>
|
|
|
|
<label class="flex items-center gap-2 self-end text-xs text-gray-700 dark:text-gray-300">
|
|
<input wire:model.defer="includeDataChecks" type="checkbox" class="rounded border-gray-300" />
|
|
Controlli integrità archivi/procedure
|
|
</label>
|
|
|
|
<div class="self-end">
|
|
<x-filament::button wire:click="runScan" icon="heroicon-o-magnifying-glass">
|
|
Avvia scansione
|
|
</x-filament::button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid grid-cols-2 gap-3 md:grid-cols-5">
|
|
<div class="rounded-lg border bg-white p-3 dark:border-white/10 dark:bg-gray-900">
|
|
<div class="text-[11px] text-gray-500">File scansionati</div>
|
|
<div class="text-lg font-semibold">{{ (int) ($summary['total_scanned_files'] ?? 0) }}</div>
|
|
</div>
|
|
<div class="rounded-lg border bg-white p-3 dark:border-white/10 dark:bg-gray-900">
|
|
<div class="text-[11px] text-gray-500">Problemi</div>
|
|
<div class="text-lg font-semibold">{{ (int) ($summary['total_issues'] ?? 0) }}</div>
|
|
</div>
|
|
<div class="rounded-lg border bg-white p-3 dark:border-white/10 dark:bg-gray-900">
|
|
<div class="text-[11px] text-gray-500">Critical</div>
|
|
<div class="text-lg font-semibold text-red-600">{{ (int) (($summary['by_severity']['critical'] ?? 0)) }}</div>
|
|
</div>
|
|
<div class="rounded-lg border bg-white p-3 dark:border-white/10 dark:bg-gray-900">
|
|
<div class="text-[11px] text-gray-500">Error</div>
|
|
<div class="text-lg font-semibold text-orange-600">{{ (int) (($summary['by_severity']['error'] ?? 0)) }}</div>
|
|
</div>
|
|
<div class="rounded-lg border bg-white p-3 dark:border-white/10 dark:bg-gray-900">
|
|
<div class="text-[11px] text-gray-500">Warning</div>
|
|
<div class="text-lg font-semibold text-amber-600">{{ (int) (($summary['by_severity']['warning'] ?? 0)) }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rounded-xl border bg-white p-4 dark:border-white/10 dark:bg-gray-900">
|
|
<div class="mb-3 text-sm font-semibold">Risultati</div>
|
|
<div class="mb-3 text-xs text-gray-500 dark:text-gray-400">
|
|
Filtro QA attivo: stabile <span class="font-semibold">{{ $stabile !== '' ? $stabile : 'tutti' }}</span>, anno <span class="font-semibold">{{ $anno !== '' ? $anno : 'tutti' }}</span>.
|
|
</div>
|
|
<div class="space-y-3">
|
|
@forelse($results as $fileResult)
|
|
<div class="rounded-lg border p-3 dark:border-white/10">
|
|
<div class="mb-2 text-xs font-medium text-gray-700 dark:text-gray-200">{{ $fileResult['file'] ?? '—' }}</div>
|
|
<div class="space-y-2">
|
|
@foreach(($fileResult['issues'] ?? []) as $issue)
|
|
<div class="rounded-md border-l-4 border-gray-300 bg-gray-50 p-2 text-xs dark:bg-white/5">
|
|
<div class="font-semibold">
|
|
{{ strtoupper((string)($issue['severity'] ?? 'info')) }} · {{ $issue['name'] ?? 'Issue' }}
|
|
</div>
|
|
<div class="text-gray-700 dark:text-gray-300">{{ $issue['description'] ?? '' }}</div>
|
|
@if(!empty($issue['suggestion']))
|
|
<div class="mt-1 text-gray-500">Suggerimento: {{ $issue['suggestion'] }}</div>
|
|
@endif
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
@empty
|
|
<div class="text-sm text-gray-500">Nessun risultato disponibile.</div>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</x-filament-panels::page>
|