## Summary - introduce a shared enterprise-detail composition layer for Filament detail pages - migrate BackupSet, BaselineSnapshot, EntraGroup, and OperationRun detail screens to the shared summary-first layout - add regression and unit coverage for section hierarchy, related context, degraded states, and duplicate fact/badge presentation ## Scope - adds shared support classes under `app/Support/Ui/EnterpriseDetail` - adds shared enterprise detail Blade partials under `resources/views/filament/infolists/entries/enterprise-detail` - updates touched Filament resources/pages to use the shared detail shell - includes Spec 133 artifacts under `specs/133-detail-page-template` ## Notes - branch: `133-detail-page-template` - base: `dev` - commit: `fd294c7` Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #162
75 lines
5.0 KiB
Markdown
75 lines
5.0 KiB
Markdown
# Quickstart: View Page Template Standard for Enterprise Detail Screens
|
|
|
|
**Feature**: 133-detail-page-template | **Date**: 2026-03-10
|
|
|
|
## Scope
|
|
|
|
This feature standardizes four existing enterprise detail screens around a shared summary-first layout contract:
|
|
|
|
- BaselineSnapshot detail,
|
|
- BackupSet detail,
|
|
- EntraGroup detail,
|
|
- OperationRun detail.
|
|
|
|
The implementation keeps existing routes and semantics intact while introducing:
|
|
|
|
- a shared enterprise-detail composition layer,
|
|
- predictable summary, main, supporting, and technical regions,
|
|
- structured related-context rendering,
|
|
- secondary technical-detail treatment,
|
|
- focused regression coverage against layout drift.
|
|
|
|
## Implementation order
|
|
|
|
1. Add the shared enterprise-detail composition classes and any shared Blade or ViewEntry partials.
|
|
2. Refactor OperationRun detail first as the operational reference implementation.
|
|
3. Refactor BaselineSnapshot detail to map its existing presenter output into the shared shell.
|
|
4. Refactor BackupSet detail to replace the current flat Infolist with lifecycle and related-context sections.
|
|
5. Refactor EntraGroup detail to promote identity and classification above raw provider fields.
|
|
6. Add unit tests for section visibility, related-context assembly, and technical-detail demotion in the shared composition layer.
|
|
7. Add or update feature and Livewire tests for all four target pages.
|
|
8. Run focused Sail-based tests.
|
|
9. Run Pint on dirty files.
|
|
|
|
## Reference files
|
|
|
|
- [app/Filament/Resources/BaselineSnapshotResource.php](../../../app/Filament/Resources/BaselineSnapshotResource.php)
|
|
- [app/Filament/Resources/BaselineSnapshotResource/Pages/ViewBaselineSnapshot.php](../../../app/Filament/Resources/BaselineSnapshotResource/Pages/ViewBaselineSnapshot.php)
|
|
- [app/Services/Baselines/SnapshotRendering/BaselineSnapshotPresenter.php](../../../app/Services/Baselines/SnapshotRendering/BaselineSnapshotPresenter.php)
|
|
- [app/Filament/Resources/BackupSetResource.php](../../../app/Filament/Resources/BackupSetResource.php)
|
|
- [app/Filament/Resources/BackupSetResource/Pages/ViewBackupSet.php](../../../app/Filament/Resources/BackupSetResource/Pages/ViewBackupSet.php)
|
|
- [app/Filament/Resources/EntraGroupResource.php](../../../app/Filament/Resources/EntraGroupResource.php)
|
|
- [app/Filament/Resources/EntraGroupResource/Pages/ViewEntraGroup.php](../../../app/Filament/Resources/EntraGroupResource/Pages/ViewEntraGroup.php)
|
|
- [app/Filament/Resources/OperationRunResource.php](../../../app/Filament/Resources/OperationRunResource.php)
|
|
- [app/Filament/Pages/Operations/TenantlessOperationRunViewer.php](../../../app/Filament/Pages/Operations/TenantlessOperationRunViewer.php)
|
|
- [app/Support/Navigation/RelatedNavigationResolver.php](../../../app/Support/Navigation/RelatedNavigationResolver.php)
|
|
- [app/Support/Badges/BadgeRenderer.php](../../../app/Support/Badges/BadgeRenderer.php)
|
|
- [resources/views/filament/infolists/entries/related-context.blade.php](../../../resources/views/filament/infolists/entries/related-context.blade.php)
|
|
- [tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php](../../../tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php)
|
|
- [tests/Feature/Filament/BaselineSnapshotDegradedStateTest.php](../../../tests/Feature/Filament/BaselineSnapshotDegradedStateTest.php)
|
|
- [tests/Feature/Filament/BackupSetRelatedNavigationTest.php](../../../tests/Feature/Filament/BackupSetRelatedNavigationTest.php)
|
|
- [tests/Feature/DirectoryGroups/BrowseGroupsTest.php](../../../tests/Feature/DirectoryGroups/BrowseGroupsTest.php)
|
|
- [tests/Feature/Operations/TenantlessOperationRunViewerTest.php](../../../tests/Feature/Operations/TenantlessOperationRunViewerTest.php)
|
|
- [tests/Feature/Guards/ActionSurfaceContractTest.php](../../../tests/Feature/Guards/ActionSurfaceContractTest.php)
|
|
|
|
## Suggested validation commands
|
|
|
|
```bash
|
|
vendor/bin/sail artisan test --compact tests/Feature/Filament/BaselineSnapshotStructuredRenderingTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Filament/BaselineSnapshotDegradedStateTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Filament/BackupSetEnterpriseDetailPageTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Filament/EntraGroupEnterpriseDetailPageTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Filament/OperationRunEnterpriseDetailPageTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Filament/EnterpriseDetailTemplateRegressionTest.php
|
|
vendor/bin/sail artisan test --compact tests/Feature/Guards/ActionSurfaceContractTest.php
|
|
vendor/bin/sail artisan test --compact tests/Unit/Support/Ui/EnterpriseDetail
|
|
vendor/bin/sail bin pint --dirty --format agent
|
|
```
|
|
|
|
## Expected outcome
|
|
|
|
- The four aligned detail pages feel like members of the same enterprise product family.
|
|
- Each page answers identity, state, context, and next-step questions before exposing technical detail.
|
|
- Related context appears in a structured, permission-aware location.
|
|
- Technical metadata remains available but secondary.
|
|
- Regression coverage protects against the return of flat scaffold-style detail pages. |