## Summary - replace the static Inventory Coverage HTML tables with a Filament native searchable, sortable, filterable table on the existing tenant page - normalize supported policy types and foundations into one runtime dataset while preserving centralized badge semantics and the documented read-only action-surface exemption - add the full spec kit artifact set for feature 124 and focused Pest coverage for rendering, search, sort, filters, empty state, and regression-sensitive page copy ## Testing - `vendor/bin/sail bin pint --dirty --format agent` - `vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryCoverageTableTest.php tests/Feature/Filament/InventoryPagesTest.php tests/Feature/Filament/InventoryHubDbOnlyTest.php` ## Filament Notes - Livewire v4.0+ compliance: yes, this uses Filament v5 table APIs on the existing page and does not introduce any Livewire v3 patterns - Provider registration: unchanged; Laravel 11+ provider registration remains in `bootstrap/providers.php` - Globally searchable resources: none changed in this feature; no Resource global-search behavior was added or modified - Destructive actions: none; the page remains read-only and only exposes a non-destructive clear-filters empty-state action - Asset strategy: no new panel or shared assets were added, so no `filament:assets` deployment change is required for this feature - Testing plan delivered: focused Filament/Pest coverage for the page table surface plus existing page-load regressions ## Follow-up - Manual dark-mode and badge-regression QA from task `T018` is still pending and should be completed before merge if that check remains mandatory in your review flow. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #151
76 lines
2.4 KiB
YAML
76 lines
2.4 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Inventory Coverage Page Contract
|
|
version: 1.0.0
|
|
description: |
|
|
Existing tenant-scoped Filament page contract for the interactive Inventory Coverage table.
|
|
This feature does not add a new API endpoint; it formalizes the page route and supported
|
|
table query-state parameters used by the Filament table surface.
|
|
paths:
|
|
/admin/t/{tenant}/inventory/coverage:
|
|
get:
|
|
summary: Render the tenant-scoped Inventory Coverage page
|
|
operationId: getInventoryCoveragePage
|
|
tags:
|
|
- Inventory Coverage
|
|
parameters:
|
|
- name: tenant
|
|
in: path
|
|
required: true
|
|
description: Tenant identifier resolved by the existing Filament tenant route binding
|
|
schema:
|
|
type: string
|
|
- name: tableSearch
|
|
in: query
|
|
required: false
|
|
description: Free-text search across policy type and label columns
|
|
schema:
|
|
type: string
|
|
- name: tableFilters[category][value]
|
|
in: query
|
|
required: false
|
|
description: Selected category filter value
|
|
schema:
|
|
type: string
|
|
- name: tableFilters[restore][value]
|
|
in: query
|
|
required: false
|
|
description: Selected restore-mode filter value when restore metadata is available
|
|
schema:
|
|
type: string
|
|
- name: tableSortColumn
|
|
in: query
|
|
required: false
|
|
description: Active table sort column
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- type
|
|
- label
|
|
- name: tableSortDirection
|
|
in: query
|
|
required: false
|
|
description: Active table sort direction
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- asc
|
|
- desc
|
|
- name: page
|
|
in: query
|
|
required: false
|
|
description: Current pagination page for the interactive coverage table
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
responses:
|
|
'200':
|
|
description: Interactive Filament page rendered successfully
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: Tenant member lacks the required capability to view the page
|
|
'404':
|
|
description: Tenant or workspace context is unavailable or the actor is not entitled to the tenant scope |