## Summary - align operator-visible OperationRun terminology to canonical `Operations` / `Operation` labels across shared links, notifications, verification/onboarding surfaces, summary widgets, and monitoring/detail pages - add the Spec 171 planning artifacts under `specs/171-operations-naming-consolidation/` - close the remaining tenant dashboard and admin copy drift found during browser smoke validation ## Validation - `export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && vendor/bin/sail artisan test --compact tests/Unit/Support/RelatedNavigationResolverTest.php tests/Unit/Support/References/RelatedContextReferenceAdapterTest.php tests/Feature/OpsUx/NotificationViewRunLinkTest.php tests/Feature/Guards/ActionSurfaceContractTest.php tests/Feature/Operations/TenantlessOperationRunViewerTest.php tests/Feature/Filament/BackupSetResolvedReferencePresentationTest.php tests/Feature/Filament/TenantVerificationReportWidgetTest.php tests/Feature/Onboarding/OnboardingVerificationTest.php tests/Feature/Onboarding/OnboardingVerificationClustersTest.php tests/Feature/Onboarding/OnboardingVerificationV1_5UxTest.php tests/Feature/Filament/BaselineCompareSummaryConsistencyTest.php tests/Feature/Filament/WorkspaceOverviewContentTest.php tests/Feature/Filament/RecentOperationsSummaryWidgetTest.php tests/Feature/Monitoring/OperationLifecycleAggregateVisibilityTest.php tests/Feature/System/Spec114/OpsTriageActionsTest.php tests/Feature/System/Spec114/OpsFailuresViewTest.php tests/Feature/System/Spec114/OpsStuckViewTest.php` - `export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && vendor/bin/sail artisan test --compact tests/Browser/OnboardingDraftRefreshTest.php` - `export PATH="/bin:/usr/bin:/usr/local/bin:$PATH" && vendor/bin/sail bin pint --dirty --format agent` ## Notes - no schema or route renames - Filament / Livewire surface behavior stays within the existing admin and tenant panels - OperationRunResource remains excluded from global search Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #202
174 lines
6.8 KiB
PHP
174 lines
6.8 KiB
PHP
@php
|
|
$run = $run ?? null;
|
|
$run = $run instanceof \App\Models\OperationRun ? $run : null;
|
|
|
|
$runData = $runData ?? null;
|
|
$runData = is_array($runData) ? $runData : null;
|
|
|
|
$runUrl = $runUrl ?? null;
|
|
$runUrl = is_string($runUrl) && trim($runUrl) !== '' ? trim($runUrl) : null;
|
|
|
|
$report = $report ?? null;
|
|
$report = is_array($report) ? $report : null;
|
|
|
|
$isInProgress = (bool) ($isInProgress ?? false);
|
|
$showStartAction = (bool) ($showStartAction ?? false);
|
|
$canStart = (bool) ($canStart ?? false);
|
|
|
|
$startTooltip = $startTooltip ?? null;
|
|
$startTooltip = is_string($startTooltip) && trim($startTooltip) !== '' ? trim($startTooltip) : null;
|
|
|
|
$lifecycleNotice = $lifecycleNotice ?? null;
|
|
$lifecycleNotice = is_string($lifecycleNotice) && trim($lifecycleNotice) !== '' ? trim($lifecycleNotice) : null;
|
|
@endphp
|
|
|
|
<x-filament::section
|
|
heading="Verification report"
|
|
description="Latest verification state for this tenant (DB-only rendering)."
|
|
>
|
|
<div class="space-y-4">
|
|
@if ($run === null)
|
|
<div class="rounded-lg border border-gray-200 bg-white p-4 text-sm text-gray-600 shadow-sm dark:border-gray-800 dark:bg-gray-900 dark:text-gray-300">
|
|
No verification operation has been started yet.
|
|
</div>
|
|
|
|
<div class="flex items-center gap-2">
|
|
@if ($showStartAction)
|
|
@if ($canStart)
|
|
<x-filament::button
|
|
color="primary"
|
|
size="sm"
|
|
wire:click="startVerification"
|
|
>
|
|
Start verification
|
|
</x-filament::button>
|
|
@else
|
|
<div class="flex flex-col gap-1">
|
|
<x-filament::button
|
|
color="gray"
|
|
size="sm"
|
|
disabled
|
|
:title="$startTooltip"
|
|
>
|
|
Start verification
|
|
</x-filament::button>
|
|
|
|
@if ($startTooltip)
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">
|
|
{{ $startTooltip }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endif
|
|
@elseif ($lifecycleNotice)
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">
|
|
{{ $lifecycleNotice }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@elseif ($isInProgress)
|
|
<div class="rounded-lg border border-gray-200 bg-white p-4 text-sm text-gray-600 shadow-sm dark:border-gray-800 dark:bg-gray-900 dark:text-gray-300">
|
|
Verification is currently in progress. This section reads only stored operation state and does not call external services.
|
|
</div>
|
|
|
|
<div class="flex flex-wrap items-center gap-2">
|
|
@if ($runUrl)
|
|
<x-filament::button
|
|
tag="a"
|
|
:href="$runUrl"
|
|
color="gray"
|
|
size="sm"
|
|
>
|
|
Open operation
|
|
</x-filament::button>
|
|
@endif
|
|
|
|
@if ($showStartAction)
|
|
@if ($canStart)
|
|
<x-filament::button
|
|
color="primary"
|
|
size="sm"
|
|
wire:click="startVerification"
|
|
>
|
|
Start verification
|
|
</x-filament::button>
|
|
@else
|
|
<div class="flex flex-col gap-1">
|
|
<x-filament::button
|
|
color="gray"
|
|
size="sm"
|
|
disabled
|
|
:title="$startTooltip"
|
|
>
|
|
Start verification
|
|
</x-filament::button>
|
|
|
|
@if ($startTooltip)
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">
|
|
{{ $startTooltip }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endif
|
|
@elseif ($lifecycleNotice)
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">
|
|
{{ $lifecycleNotice }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@else
|
|
@include('filament.components.verification-report-viewer', [
|
|
'run' => $runData,
|
|
'report' => $report,
|
|
'redactionNotes' => $redactionNotes ?? [],
|
|
])
|
|
|
|
<div class="flex flex-wrap items-center gap-2">
|
|
@if ($runUrl)
|
|
<x-filament::button
|
|
tag="a"
|
|
:href="$runUrl"
|
|
color="gray"
|
|
size="sm"
|
|
>
|
|
Open operation
|
|
</x-filament::button>
|
|
@endif
|
|
|
|
@if ($showStartAction)
|
|
@if ($canStart)
|
|
<x-filament::button
|
|
color="primary"
|
|
size="sm"
|
|
wire:click="startVerification"
|
|
>
|
|
Start verification
|
|
</x-filament::button>
|
|
@else
|
|
<div class="flex flex-col gap-1">
|
|
<x-filament::button
|
|
color="gray"
|
|
size="sm"
|
|
disabled
|
|
:title="$startTooltip"
|
|
>
|
|
Start verification
|
|
</x-filament::button>
|
|
|
|
@if ($startTooltip)
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">
|
|
{{ $startTooltip }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endif
|
|
@elseif ($lifecycleNotice)
|
|
<div class="text-xs text-gray-500 dark:text-gray-400">
|
|
{{ $lifecycleNotice }}
|
|
</div>
|
|
@endif
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</x-filament::section>
|