29 lines
1.3 KiB
Markdown
29 lines
1.3 KiB
Markdown
# UI Contracts — Tenant UI Polish
|
|
|
|
This feature does not introduce HTTP APIs. These contracts describe UI routing, filters, and definitions that must remain stable.
|
|
|
|
## Routes (tenant-scoped)
|
|
- Dashboard: tenant dashboard page (new custom page; replaces default dashboard entry).
|
|
- Inventory hub: Inventory cluster root (routes to first page/resource in cluster).
|
|
- Inventory items: Inventory items resource index, under cluster prefix.
|
|
- Inventory sync runs: Inventory sync runs resource index, under cluster prefix.
|
|
- Inventory coverage: Inventory coverage page, under cluster prefix.
|
|
- Operations index: `OperationRunResource` index (`/operations`).
|
|
- Operation run detail: `OperationRunResource` view page.
|
|
|
|
## Operations Tabs (FR-009)
|
|
Tabs filter the Operations table by:
|
|
- All: no extra constraints.
|
|
- Active: `status IN ('queued','running')`
|
|
- Succeeded: `status = 'completed' AND outcome = 'succeeded'`
|
|
- Partial: `status = 'completed' AND outcome = 'partial'`
|
|
- Failed: `status = 'completed' AND outcome = 'failed'`
|
|
|
|
## KPI Definitions
|
|
- Inventory coverage % = Restorable / Total (Partial is separate, does not inflate %).
|
|
- Drift stale threshold = 7 days.
|
|
- “Recent” lists default size = 10.
|
|
- “Active operations” shows two counts:
|
|
- All active runs (queued + running)
|
|
- Inventory-active runs (type = `inventory.sync`, queued + running)
|