Inspection Detail
Route /inspections/:inspectionId — lib/features/inspection/presentation/....
Content
- Title format
type • code • room— e.g.,Checkout • INS-001 • Kitchen(type isInspectionTypeenum display name, localized via ARB). - Intro copy — localized intent sentence (checked by
inspection_detail_title_test). - Status line —
KxStatusPilldriven byRecordStatus. - Charged items lane —
ItemAction { itemName, notes, thumbnailUrl (optional), chargeId?, amountMinor? }—chargeId+amountMinorboth present or both absent (same invariant as backend). Thumbnail taps route toGET /charges/{chargeId}when charged; uncharged items are inert (no arrow semantics). - General notes — date-stamped
GeneralNote { recordedAt, text }. - Item updates —
ItemUpdate { itemName, conditionNote }.
Navigation
Hub Inspector card and charge inspectionId link both deep-link here. Inside, each charged ItemAction tile is a KxCard with onTap → goNamed(chargeName, chargeId: action.chargeId). Uncharged ItemAction renders same tile but onTap: null and no arrow/semantics button.
Responsive & semantics
Two-column at 840+: notes left, actions/updates right. 48 px target per card, heading role on title, each card button only when routable.
Test inspection_navigation_test.dart asserts charged→200, uncharged→no push.