Summary Implements Spec 041 – Inventory UI (Filament v4): adds Inventory navigation, landing page, and resources for Inventory Items and Inventory Sync Runs, plus a Coverage page that reflects supported policy types and capabilities from config. This PR is UI-focused and builds on Inventory Core (040). What’s included • Navigation / IA • New Inventory section with: Landing, Coverage, Inventory Items, Inventory Sync Runs • Landing page with quick links to the three Inventory views • Coverage page • Table view generated from config-derived capabilities (Type, Label, Category, Restore, Risk) • Resources • InventoryItemResource list + view (tenant-scoped) • InventorySyncRunResource list + view (tenant-scoped) • Filament v4 fixes • Updated page signatures ($navigationGroup, $navigationIcon, $view) • Updated table actions to use Filament\Actions\ViewAction Tests Inventory UI tests added/updated and passing: • InventoryItemResourceTest.php • InventorySyncRunResourceTest.php • InventoryPagesTest.php Non-goals • No dependency graph UI (Spec 042) • No cross-tenant portfolio/compare/promotion (Spec 043) • No drift dashboards (Spec 044) • No changes to restore/backup behavior Review focus • Navigation structure and naming (Inventory Landing vs direct resources) • Tenant isolation in resources/pages (no cross-tenant leakage) • Coverage page accuracy vs config/tenantpilot.php capabilities • Filament v4 action usage (ViewAction) Co-authored-by: Ahmed Darrazi <ahmeddarrazi@adsmac.local> Reviewed-on: #44
31 lines
706 B
PHP
31 lines
706 B
PHP
<?php
|
|
|
|
namespace App\Filament\Pages;
|
|
|
|
use BackedEnum;
|
|
use Filament\Pages\Page;
|
|
use UnitEnum;
|
|
|
|
class InventoryCoverage extends Page
|
|
{
|
|
protected static string|BackedEnum|null $navigationIcon = 'heroicon-o-table-cells';
|
|
|
|
protected static string|UnitEnum|null $navigationGroup = 'Inventory';
|
|
|
|
protected static ?string $navigationLabel = 'Coverage';
|
|
|
|
protected string $view = 'filament.pages.inventory-coverage';
|
|
|
|
/**
|
|
* @var array<int, array<string, mixed>>
|
|
*/
|
|
public array $supportedTypes = [];
|
|
|
|
public function mount(): void
|
|
{
|
|
$types = config('tenantpilot.supported_policy_types', []);
|
|
|
|
$this->supportedTypes = is_array($types) ? $types : [];
|
|
}
|
|
}
|