[T02] Number Stock View

Summary

Tenant-scoped current stock view of all RaceNumbers. Filter by NumberType / subtype / state; KPI tiles per state; drill-down to per-number audit log. Bulk-select hands off to T04.

Actor & Context

Actor: tenant admin, stock operator. Frequency: weekly+ during event seasons; less often otherwise. Precondition: user has TENANT_ADMIN permission. Entry point: Tenant-admin workspace nav Number stock (or equivalent from C01 sidebar revision).

Main Flow

  1. Render filter strip: NumberType / subtype / state (multi-select) + search.

  2. KPI tiles: counts by state (IN_STOCK, ISSUED, IN_USE, UNFIT_FOR_SERVICE, DESTROYED).

  3. Table: number, type, subtype, state, current person_id (if any), last_used, audit-log popout.

  4. Row click → drill-down panel: full audit log of state transitions for that number (from race_number_state_log).

  5. Bulk-select for actions handed off to T04.

Alternative Flows

  • AF-1: UNFIT row selected — actions filtered to dispose-only per ADR-0003.

  • AF-2: DESTROYED row — read-only; no actions available.

  • AF-3: Empty stock for selected filters — empty state with hint to adjust filters.

Acceptance Criteria

  • Use-case page authored.

  • Status design-todo → handoff-ready after Claude Design pass.

  • Implementation surfaces existing backend state truthfully (state column from WS1a; audit log from race_number_state_log).

  • Filter, sort, paginate.

  • Honour ADR-0003 — no actions on UNFIT rows other than dispose.

API Surface

Call Purpose

GET /api/race-numbers?type=&subtype=&state=&q=

Filtered stock list (existing).

GET /api/race-numbers/{id}/state-log

Audit log for drill-down.

GET /api/race-numbers/stats?groupBy=state

KPI tile counts (likely existing or trivial composite).

Out of Scope

  • Stock-take return workflow — T03.

  • Bulk flag/dispose actions — T04.

  • Reports — T05.

  • Pre-assignment for events — E07.

Design Anchors

Notes

Backend WS1a + WS1b shipped; T02 surfaces existing endpoints. Hub for the rest of D2b — T03/T04 launch from selections here.