← Back to Index

KCM Screen Set — Domain-Control Data-Gap Analysis

Scoping of the Known Crewmember (KCM) screen set to map domain controls to data. Documentation only; no presentation work.

Figma file R6hPjBdjSIn6946qTJasUC · nodes 4562:7572 (KCM home) · 4562:7754 (Airlines) · 4562:8249 (Airports / "Airline Policies") · 4562:7955 (Policies search) · 4562:8545 (Filter overlay) · Source: Figma MCP + codebase (RestService, KCM.cs) · Branch docs/kcm-screen-data-gap.

Headline — KCM is data-complete. The two data-bearing screens are already backed by existing endpoints whose models match the Figma 1:1: GetKCMAirlineItemsAsyncKCMAirlineItem (airlineName / pilots / attendants) and GetKCMAirportItemsAsyncKCMAirportItem (airportName / airportCode / checkinNotes / mapUrl). No backend data gaps. The work here is the presentation scaffolds (Master Form Field, check, radio, tab group, Underline Button) plus client-side filter/search — and two small content-source confirms.
KCM home
KCM home (4562:7572)
Airlines
Airlines (4562:7754)
Airports
Airports (4562:8249)
Filter
Filter overlay (4562:8545)

1 · Screens & controls

  1. KCM home — "Known Crewmember" + 4 card-sm nav tiles: Airlines · Airports · Requirements · Usage Procedures.
  2. Airlines — header (back · sort/filter · search) + table "Airline / Pilots / Flight Attendants"; rows = Master Form Field (airline name + two checkes).
  3. Airports ("Airline Policies" node) — "NOTICE" Primary button + list of airport codes (Master Form Field rows, » → detail).
  4. Policies search — search Master Form Field + list of Master Form Field rows (client-side search).
  5. Filter overlayradio buttons (Pilots / Flight Attendants) + tab group (hidden) + Primary "Apply" + Underline "Clear".

2 · Data-source mapping

Screen / elementData neededSource (exists)StatusNote
KCM home tilestitle + icon + nav target MenuItem (or static nav)mapped Airlines/Airports → data lists; Requirements/Usage Procedures → content (see §3).
Airlines rowairline name · pilots ✓ · flight-attendants ✓ KCMAirlineItem { airlineName, pilots, attendants } · getkcmairlines exact The two check columns map directly to the pilots / attendants booleans.
Airports list + detailcode · name · check-in notes · map KCMAirportItem { airportName, airportCode, checkinNotes, mapUrl } · getkcmairports exact List shows code (» → detail); detail = checkinNotes + mapUrl.
Filter (Pilots / FA)selected filter client-side stateclient Filters the airlines list by the pilots/attendants flags. No backend.
Searchquery client-side over the loaded listclient No search endpoint needed for these bounded reference lists.

3 · Confirm items (small)

#ItemQuestionStatus
1Requirements / Usage Procedures tiles What backs this content — a document/CMS item (DocumentItem) or static in-app content? Not KCM list data. confirm
2Airports "NOTICE" banner/button Resolved: the airports list (GetKCMAirportItemsAsync) includes a sentinel item with airportName == "NOTICE"; the client pulls it out and renders its checkinNotes as the notice. Existing behavior — no change. resolved
3Airline eligibility semantics Resolved: KCMAirlineItem.pilots / attendants (bools) are the eligibility flags (true = eligible) from GetKCMAirlineItemsAsync. resolved

4 · New scaffold controls (presentation — for the component library, not backend)

ControlFigmaKCM use
Master Form Field (input_with_icons)5236:15830…Reusable (85 uses). Variants here: table row (label + checks), search input, list row (label + »).
check5236:15834Eligibility indicator (Pilots / FA).
radio button0:91 / 0:95Single-select filter option.
tab group0:89Segmented control (hidden in the filter; present for variants).
Underline Button0:107Text button ("Clear").
nav-control iconsback · i-search · btn-sort&filter · i-closeHeader / overlay chrome.

These are scaffold items for the architecture/component track — no data implications. Master Form Field is the high-leverage one (85 uses across the app).

5 · Summary

Tracked in screen-mapping.html.