Skip to main content

Inspection Detail

Route /inspections/:inspectionIdlib/features/inspection/presentation/....

Content

  • Title format type • code • room — e.g., Checkout • INS-001 • Kitchen (type is InspectionType enum display name, localized via ARB).
  • Intro copy — localized intent sentence (checked by inspection_detail_title_test).
  • Status line — KxStatusPill driven by RecordStatus.
  • Charged items lane — ItemAction { itemName, notes, thumbnailUrl (optional), chargeId?, amountMinor? }chargeId+amountMinor both present or both absent (same invariant as backend). Thumbnail taps route to GET /charges/{chargeId} when charged; uncharged items are inert (no arrow semantics).
  • General notes — date-stamped GeneralNote { recordedAt, text }.
  • Item updates — ItemUpdate { itemName, conditionNote }.

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.