From 98971cab26005e09411fb9d3ed1bd8fe3fe42719 Mon Sep 17 00:00:00 2001 From: gnezim Date: Wed, 15 Apr 2026 08:18:12 +0300 Subject: [PATCH] Add Phase 2E routes implementation plan Covers 6 route pages, 3 feature components, barrel updates, and MF expose. --- .../plans/2026-04-15-phase-2e-routes.md | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 docs/superpowers/plans/2026-04-15-phase-2e-routes.md diff --git a/docs/superpowers/plans/2026-04-15-phase-2e-routes.md b/docs/superpowers/plans/2026-04-15-phase-2e-routes.md new file mode 100644 index 00000000..e135d98b --- /dev/null +++ b/docs/superpowers/plans/2026-04-15-phase-2e-routes.md @@ -0,0 +1,100 @@ +# Phase 2E — Routes + Pages + +> **Parent plan:** `2026-04-14-phase-2-online-board-master.md` section 2E +> +> **Depends on:** 2A (UI adapter), 2B (URL serializer), 2C (API hooks), 2D (SignalR wiring) +> +> **Scope:** 6 route pages under `src/routes/[lang]/onlineboard/`, 3 feature-specific components in `src/features/online-board/components/`, barrel export updates, MF expose update. + +--- + +## Task inventory + +### T1 — Shared `OnlineBoardSearchPage` component + +**File:** `src/features/online-board/components/OnlineBoardSearchPage.tsx` + +Shared component composed by all 4 search pages (flight, departure, arrival, route). Accepts parsed URL params, converts to `SearchFlightsParams`, wires `useOnlineBoard` + `useLiveBoardSearch` + `useCalendarDays`, renders `FlightList` + `ConnectionStatusBadge` (inline). Provides `useNavigate` callbacks for date changes and flight detail links. + +**Test:** `src/features/online-board/components/OnlineBoardSearchPage.test.tsx` — renders with mock provider, verifies `FlightList` presence and navigation wiring. + +### T2 — `OnlineBoardStartPage` component + +**File:** `src/features/online-board/components/OnlineBoardStartPage.tsx` + +Start page with plain HTML search form: radio buttons for search mode (flight/departure/arrival/route), text inputs for flight number / airport codes, date input. Submits via `useNavigate` to the correct search URL using `buildOnlineBoardUrl`. + +**Test:** `src/features/online-board/components/OnlineBoardStartPage.test.tsx` + +### T3 — `OnlineBoardDetailsPage` component + +**File:** `src/features/online-board/components/OnlineBoardDetailsPage.tsx` + +Flight details page. Accepts `IParsedFlightId`, wires `useFlightDetails` + `useLiveFlightDetails`, renders flight info (legs, stations, times) using FlightCard + inline detail sections. + +**Test:** `src/features/online-board/components/OnlineBoardDetailsPage.test.tsx` + +### T4 — Start page route + +**File:** `src/routes/[lang]/onlineboard/page.tsx` + +Renders `OnlineBoardStartPage`. No API calls. Wraps in `SeoHead` with basic title. + +### T5 — Flight search route + +**File:** `src/routes/[lang]/onlineboard/flight/[params]/page.tsx` + +Parses URL via `parseFlightUrlParams`, renders `OnlineBoardSearchPage` with `type: "flight"`. + +### T6 — Departure search route + +**File:** `src/routes/[lang]/onlineboard/departure/[params]/page.tsx` + +Parses URL via `parseStationUrlParams`, renders `OnlineBoardSearchPage` with `type: "departure"`. + +### T7 — Arrival search route + +**File:** `src/routes/[lang]/onlineboard/arrival/[params]/page.tsx` + +Parses URL via `parseStationUrlParams`, renders `OnlineBoardSearchPage` with `type: "arrival"`. + +### T8 — Route search route + +**File:** `src/routes/[lang]/onlineboard/route/[params]/page.tsx` + +Parses URL via `parseRouteUrlParams`, renders `OnlineBoardSearchPage` with `type: "route"`. + +### T9 — Flight details route + +**File:** `src/routes/[lang]/onlineboard/[params]/page.tsx` + +Parses URL via `parseFlightUrlParams`, renders `OnlineBoardDetailsPage`. + +### T10 — Update feature barrel + +**File:** `src/features/online-board/index.ts` + +Add exports for `OnlineBoardStartPage`, `OnlineBoardSearchPage`, `OnlineBoardDetailsPage`. + +### T11 — Update MF expose + +**File:** `src/mf/expose/OnlineBoard.tsx` + +Replace stub with `React.lazy` + `Suspense` loading `OnlineBoardStartPage` from the feature barrel. + +### T12 — Verification + +Run `pnpm typecheck && pnpm lint && pnpm test && pnpm build:standalone`. + +--- + +## Execution order + +T1 → T2 → T3 → T4,T5,T6,T7,T8,T9 (parallel) → T10 → T11 → T12 + +## Commit plan + +1. Plan file (this document) +2. Feature components (T1 + T2 + T3 + tests) +3. Route pages (T4-T9) +4. Barrel + MF expose updates (T10 + T11) + verification