MyPilotGroupPage is being retired in favour of the MEC composition. Before it goes,
every destination it links to needs checking against what the Blazor side actually provides —
some are covered by components, some still need a page, and some are not pages at all.
The headline: comparing page names says this area is nearly covered. It is not.
The native pages are scope-parameterised — one page serves both MEC and LEC via a
query string. PilotGroupEventsPage?Scope=MEC and
PilotGroupEventsPage?Scope=LEC are the same file. Blazor's routes
(/mec/events, /mec/reps) take no scope, so they cover the MEC half
only. All four LEC entries have no Blazor destination at all, and that is
invisible to a name comparison because the native page looks matched.
The list is assembled from three sources, not one. That matters for coverage, because only the first is a fixed set.
| Source | Count observed | Mechanism |
|---|---|---|
| Menu feed | 11 (7 MEC + 4 LEC) | Root MenuItem by SpecialCode = MyPilotGroup, children split by Path.Contains("Scope=MEC") / "Scope=LEC", filtered on Visible. |
| Member preferences | 0–3 | Appended only when the member service returns the flag: Is_MEC_Contact_List_User(), Is_MEC_Hotel_List_User(), Is_Hotel_Form_Active(). |
member.mecLinks | unbounded | Arbitrary WebLink records (Title, URL, Image, DisplayMode) appended to the MEC group. Each MEC can publish its own; there is no fixed list to build against. |
| Entry | Native destination | Source | Blazor today | Verdict |
|---|---|---|---|---|
| MEC Communications / News | DocumentsListPage?Scope=MEC&Category=MEC Update | feed | /documents — no scope, no category preset |
Page needed Scope + category must be routable, or the entry cannot land anywhere specific. |
| MEC Documents | DocumentCenterPage?Scope=MEC | feed | /documents renders a category list when no category is given |
Page needed Behaviour exists; the scope does not. |
| MEC Committees | PilotGroupCommitteePage | feed | /mec/committees |
Partial List covered; the committee detail level has no page, expander or modal. |
| MEC Events | PilotGroupEventsPage?Scope=MEC | feed | /mec/events |
Covered (MEC) Scope not parameterised. |
| MEC Reps | PilotGroupRepresentativesPage?Scope=MEC | feed | /mec/reps |
Covered (MEC) Scope not parameterised. |
| Pay Codes | Feed-supplied path (not in app code) | feed | none | Gap Destination is defined by the feed; confirm what it points at before scoping. |
| Pilot Dashboard | Feed-supplied path (not in app code) | feed | none | Gap Same — feed-defined. |
| LEC Update / News | DocumentsListPage?Scope=LEC&Category=LEC Update | feed | none | Gap LEC scope unsupported. |
| LEC Documents | DocumentCenterPage?Scope=LEC | feed | none | Gap LEC scope unsupported. |
| LEC Events | PilotGroupEventsPage?Scope=LEC | feed | none | Gap Same page as MEC Events natively; Blazor route is MEC-only. |
| LEC Reps | PilotGroupRepresentativesPage?Scope=LEC | feed | none | Gap Same page as MEC Reps natively; Blazor route is MEC-only. |
| MEC Contact Info | ContactsCategoryPage | preference | none | Gap Three Contacts screens, none built. Gate must be honoured. |
| MEC Hotels | PilotGroupHotelsPage | preference | /mec/hotels |
Covered Page exists. Its preference gate is missing — behaviour, tracked in AB#2405. |
| MEC Hotel Feedback | No page — mailto: with email validation and an analytics event | preference | none | Not a screen Implementation detail — scoped into AB#2405. |
member.mecLinks | WebLink.Navigate() — URL opened per DisplayMode | member API | none | Not a screen One generic handler, not per-link pages — scoped into AB#2405. |
MecOverviewPage renders two lists. The first four are real routes; the second four
are hardcoded strings that all link back to /mec:
| Row | Link | Status |
|---|---|---|
| Committees · Representatives · Events · Hotels | real routes | Navigates |
| UAL Contract (CBA) · Letter of Agreement Index · Grievance Tracker · MEC Bulletins | /mec | Dead rows — same pattern as the Member Resources scaffold. |
Neither list comes from the menu feed, so the MEC composition currently cannot show a feed-published entry — the same finding as AB#2404, in a second place.
?Scope=. Blazor hardcodes MEC into the route. Either the routes take
a scope, or every MEC page needs an LEC twin.mecLinks handler, and the three preference gates. They are implementation
detail rather than coverage, and are scoped into AB#2405 so they are not
lost in the swap. One of them is a live defect: /mec/hotels ships without its
gate, so it is visible to members the native app hides it from.
Entries were read from a live signed-in session and cross-checked against
MyPilotGroupPageViewModel and MenuService. The observed list was:
MEC Communications, MEC Documents, MEC Committees, MEC Events, MEC Reps, Pay Codes, Pilot
Dashboard, then LEC Documents, LEC Update, LEC Events, LEC Reps. No preference-gated entries
appeared for that account, and no mecLinks — so the live list understates
the surface. A different member or MEC will show more. Do not treat any single
account's list as the full set.