From e539abcc5f9ef88a1ed308b8a5dbb0f207491c67 Mon Sep 17 00:00:00 2001 From: AmanTahiliani Date: Mon, 25 May 2026 10:29:31 -0400 Subject: [PATCH] Add command center screen --- .../refactor/21-mvp-completion-checklist.md | 3 +- .../refactor/23-phase-15-command-center.md | 48 ++ documentations/refactor/README.md | 2 + frontend/src/components/Nav.tsx | 3 + frontend/src/lib/schedule.ts | 168 +++++++ frontend/src/pages/CommandCenterPage.tsx | 413 ++++++++++++++++++ frontend/src/router.tsx | 11 +- frontend/src/styles/app.css | 264 +++++++++++ frontend/src/test/CommandCenterPage.test.tsx | 131 ++++++ frontend/src/test/schedule.test.ts | 81 ++++ tests/command-center.spec.ts | 40 ++ tests/production-smoke.spec.ts | 14 +- .../__snapshots__/desktop/command-center.png | Bin 0 -> 52746 bytes .../__snapshots__/mobile/command-center.png | Bin 0 -> 50149 bytes .../__snapshots__/tablet/command-center.png | Bin 0 -> 51792 bytes tests/visual/helpers.ts | 8 + tests/visual/mvp-screens.spec.ts | 6 + 17 files changed, 1182 insertions(+), 10 deletions(-) create mode 100644 documentations/refactor/23-phase-15-command-center.md create mode 100644 frontend/src/lib/schedule.ts create mode 100644 frontend/src/pages/CommandCenterPage.tsx create mode 100644 frontend/src/test/CommandCenterPage.test.tsx create mode 100644 frontend/src/test/schedule.test.ts create mode 100644 tests/command-center.spec.ts create mode 100644 tests/visual/__snapshots__/desktop/command-center.png create mode 100644 tests/visual/__snapshots__/mobile/command-center.png create mode 100644 tests/visual/__snapshots__/tablet/command-center.png diff --git a/documentations/refactor/21-mvp-completion-checklist.md b/documentations/refactor/21-mvp-completion-checklist.md index a455319..e203e5c 100644 --- a/documentations/refactor/21-mvp-completion-checklist.md +++ b/documentations/refactor/21-mvp-completion-checklist.md @@ -111,8 +111,7 @@ Snapshots are stored under `tests/visual/__snapshots__/`. See - Add track outline ingestion/read models to the React app if the local data source is reliable enough. - Expand from weekend/session ingestion toward safe full-season backfill. -- Add Command Center, Drivers, Standings, and Settings as separate product - phases. +- Add Drivers, Standings, and Settings as separate product phases. - Revisit static archive feasibility after source mapping is proven. ## Notes diff --git a/documentations/refactor/23-phase-15-command-center.md b/documentations/refactor/23-phase-15-command-center.md new file mode 100644 index 0000000..15ebcc2 --- /dev/null +++ b/documentations/refactor/23-phase-15-command-center.md @@ -0,0 +1,48 @@ +# Phase 15: Command Center V1 + +## Goal + +Make the Web UI default route a useful local-first operations screen instead of +requiring users to know a raw Race Hub session key. + +## Completed Scope + +- Added `/` as the Command Center route. +- Added a top-level Command nav item while preserving Race Hub, Live, and Data + Library routes. +- Shows local season coverage, weekend coverage, local session counts, and live + availability. +- Selects a focus weekend from local data using current, upcoming, then recent + weekend priority. +- Provides quick actions into Live Timing, Race Hub for the default local + session, and Data Library. +- Lists recent local sessions with direct Race Hub links. +- Added unit coverage for schedule selection helpers and the Command Center + page. +- Added Playwright E2E and production smoke coverage for `/`. +- Added visual regression coverage for Command Center at desktop, tablet, and + mobile viewports. + +## Constraints + +- React continues to call only local-first Go APIs; no direct OpenF1 reads were + added. +- Live state remains read-only status from the existing Web live endpoint. +- The page stays dense and operational rather than becoming a marketing landing + page. + +## Verification + +```bash +npm --prefix frontend test -- --run +npm --prefix frontend run build +npm run test:e2e +npm run test:e2e:prod +npm run test:visual +npm run test:visual:prod +``` + +## Related + +- [21 MVP Completion Checklist](21-mvp-completion-checklist.md) +- [22 Phase 14 Visual Regression](22-phase-14-visual-regression.md) diff --git a/documentations/refactor/README.md b/documentations/refactor/README.md index aa1a64e..a12a162 100644 --- a/documentations/refactor/README.md +++ b/documentations/refactor/README.md @@ -79,6 +79,8 @@ not implementation tickets yet. implementation status, verification commands, and remaining post-MVP work. - [22 Phase 14 Visual Regression](22-phase-14-visual-regression.md): Playwright screenshot coverage for MVP routes and responsive viewports. +- [23 Phase 15 Command Center](23-phase-15-command-center.md): default Web + entry screen for local coverage, weekend focus, live status, and next actions. ## External References diff --git a/frontend/src/components/Nav.tsx b/frontend/src/components/Nav.tsx index c4ef195..8d37bf4 100644 --- a/frontend/src/components/Nav.tsx +++ b/frontend/src/components/Nav.tsx @@ -7,6 +7,9 @@ export function Nav() { box-box
+ + Command + Race Hub diff --git a/frontend/src/lib/schedule.ts b/frontend/src/lib/schedule.ts new file mode 100644 index 0000000..926af49 --- /dev/null +++ b/frontend/src/lib/schedule.ts @@ -0,0 +1,168 @@ +import type { Meeting, Session } from '../types' + +const DEFAULT_SESSION_DURATION_MS = 3 * 60 * 60 * 1000 + +export function parseScheduleTime(value: string): Date | null { + if (!value) return null + const parsed = Date.parse(value) + if (!Number.isNaN(parsed)) return new Date(parsed) + const dateOnly = Date.parse(value.slice(0, 10)) + return Number.isNaN(dateOnly) ? null : new Date(dateOnly) +} + +export function meetingStartTime(meeting: Meeting): Date | null { + return parseScheduleTime(meeting.date_start) +} + +export function meetingEndTime(meeting: Meeting): Date | null { + const end = parseScheduleTime(meeting.date_end) + if (end) return end + const start = meetingStartTime(meeting) + return start ? new Date(start.getTime() + 72 * 60 * 60 * 1000) : null +} + +export function sessionStartTime(session: Session): Date | null { + return parseScheduleTime(session.date_start) +} + +export function sessionEndTime(session: Session): Date | null { + const end = parseScheduleTime(session.date_end) + if (end) return end + const start = sessionStartTime(session) + return start ? new Date(start.getTime() + DEFAULT_SESSION_DURATION_MS) : null +} + +export function sortSessionsByStart(sessions: Session[]): Session[] { + return [...sessions].sort((a, b) => { + const left = sessionStartTime(a)?.getTime() ?? 0 + const right = sessionStartTime(b)?.getTime() ?? 0 + if (left !== right) return left - right + return a.date_start.localeCompare(b.date_start) + }) +} + +export function currentMeeting(meetings: Meeting[], now: Date): Meeting | null { + let selected: Meeting | null = null + let latest = 0 + + for (const meeting of meetings) { + const start = meetingStartTime(meeting) + if (!start || start > now) continue + const end = meetingEndTime(meeting) + if (!end || now > new Date(end.getTime() + 24 * 60 * 60 * 1000)) continue + const startMs = start.getTime() + if (!selected || startMs > latest) { + selected = meeting + latest = startMs + } + } + + return selected +} + +export function nextUpcomingMeeting(meetings: Meeting[], now: Date): Meeting | null { + for (const meeting of meetings) { + const start = meetingStartTime(meeting) + if (start && start > now) return meeting + } + return null +} + +export function mostRecentPastMeeting(meetings: Meeting[], now: Date): Meeting | null { + let selected: Meeting | null = null + let latest = 0 + + for (const meeting of meetings) { + const start = meetingStartTime(meeting) + if (!start || start > now) continue + const startMs = start.getTime() + if (!selected || startMs > latest) { + selected = meeting + latest = startMs + } + } + + return selected +} + +export function pickFocusMeeting(meetings: Meeting[], now: Date): Meeting | null { + return ( + currentMeeting(meetings, now) ?? + nextUpcomingMeeting(meetings, now) ?? + mostRecentPastMeeting(meetings, now) ?? + meetings[0] ?? + null + ) +} + +export function meetingHasStarted(meeting: Meeting, now: Date): boolean { + const start = meetingStartTime(meeting) + return start != null && now >= start +} + +export function currentAndNextSession( + sessions: Session[], + now: Date, +): { current: Session | null; next: Session | null } { + const sorted = sortSessionsByStart(sessions) + + for (const session of sorted) { + const start = sessionStartTime(session) + const end = sessionEndTime(session) + if (!start || !end) continue + + if (now >= start && now < end) { + return { current: session, next: null } + } + if (now < start) { + return { current: null, next: session } + } + } + + return { current: null, next: null } +} + +export function formatCountdown(target: Date, now: Date): string { + const diffMs = Math.max(0, target.getTime() - now.getTime()) + const totalSeconds = Math.floor(diffMs / 1000) + const days = Math.floor(totalSeconds / 86400) + const hours = Math.floor((totalSeconds % 86400) / 3600) + const mins = Math.floor((totalSeconds % 3600) / 60) + const secs = totalSeconds % 60 + return `${days}d ${String(hours).padStart(2, '0')}h ${String(mins).padStart(2, '0')}m ${String(secs).padStart(2, '0')}s` +} + +export function formatSessionScheduleTime(value: string): string { + const date = parseScheduleTime(value) + if (!date) return '—' + return date.toLocaleString('en-GB', { + weekday: 'short', + day: '2-digit', + month: 'short', + hour: '2-digit', + minute: '2-digit', + hour12: false, + }) +} + +export type FocusMeetingKind = 'current' | 'next' | 'recent' | 'fallback' + +export function focusMeetingKind(meeting: Meeting, now: Date): FocusMeetingKind { + if (currentMeeting([meeting], now)) return 'current' + if (nextUpcomingMeeting([meeting], now)) return 'next' + if (mostRecentPastMeeting([meeting], now)) return 'recent' + return 'fallback' +} + +export function focusMeetingLabel(kind: FocusMeetingKind): string { + switch (kind) { + case 'current': + return 'Current Weekend' + case 'next': + return 'Next Weekend' + case 'recent': + return 'Recent Local Weekend' + default: + return 'Weekend' + } +} diff --git a/frontend/src/pages/CommandCenterPage.tsx b/frontend/src/pages/CommandCenterPage.tsx new file mode 100644 index 0000000..1ff52d7 --- /dev/null +++ b/frontend/src/pages/CommandCenterPage.tsx @@ -0,0 +1,413 @@ +import { useEffect, useMemo, useState } from 'react' +import { useQueries, useQuery } from '@tanstack/react-query' +import { Link } from '@tanstack/react-router' +import { fetchLiveState, fetchLocalMeetings, fetchSeasons, fetchWeekend } from '../api' +import { countWeekendStats, formatCoverageHint, sessionTypeAbbrev } from '../lib/coverage' +import { + currentAndNextSession, + focusMeetingKind, + focusMeetingLabel, + formatCountdown, + formatSessionScheduleTime, + meetingHasStarted, + pickFocusMeeting, + sessionStartTime, + sortSessionsByStart, +} from '../lib/schedule' +import { SourceBadge, weekendStatusLabel } from '../components/SourceBadge' +import { CliCommands } from '../components/CliCommands' +import type { Meeting, Weekend, WeekendSession } from '../types' + +function formatMeetingDates(meeting: Meeting): string { + const start = meeting.date_start?.slice(0, 10) + const end = meeting.date_end?.slice(0, 10) + if (start && end && start !== end) return `${start} – ${end}` + return start || end || '—' +} + +function countSessionStats(weekends: (Weekend | undefined)[]) { + let local = 0 + let partial = 0 + let total = 0 + + for (const weekend of weekends) { + if (!weekend) continue + for (const entry of weekend.sessions) { + total++ + if (entry.source === 'local') local++ + else if (entry.source === 'partial') partial++ + } + } + + return { local, partial, total } +} + +function collectRecentSessions(weekends: (Weekend | undefined)[], limit = 8) { + const rows: Array = [] + + for (const weekend of weekends) { + if (!weekend) continue + for (const entry of weekend.sessions) { + rows.push({ ...entry, meeting: weekend.meeting }) + } + } + + return rows + .sort((a, b) => { + const left = Date.parse(a.session.date_start) + const right = Date.parse(b.session.date_start) + return right - left + }) + .slice(0, limit) +} + +export function CommandCenterPage() { + const [now, setNow] = useState(() => Date.now()) + + const seasonsQuery = useQuery({ + queryKey: ['seasons'], + queryFn: fetchSeasons, + }) + + const latestSeason = seasonsQuery.data?.[0] ?? null + + const meetingsQuery = useQuery({ + queryKey: ['meetings', latestSeason], + queryFn: () => fetchLocalMeetings(latestSeason!), + enabled: latestSeason != null, + }) + + const meetings = meetingsQuery.data ?? [] + + const weekendQueries = useQueries({ + queries: meetings.map((meeting) => ({ + queryKey: ['weekend', meeting.meeting_key], + queryFn: () => fetchWeekend(meeting.meeting_key), + enabled: meetings.length > 0, + staleTime: 60_000, + })), + }) + + const liveQuery = useQuery({ + queryKey: ['live-state'], + queryFn: fetchLiveState, + staleTime: 5_000, + }) + + useEffect(() => { + const timer = window.setInterval(() => setNow(Date.now()), 1000) + return () => window.clearInterval(timer) + }, []) + + const nowDate = useMemo(() => new Date(now), [now]) + + const weekendsByKey = useMemo(() => { + const map = new Map() + meetings.forEach((meeting, i) => { + const data = weekendQueries[i]?.data + if (data) map.set(meeting.meeting_key, data) + }) + return map + }, [meetings, weekendQueries]) + + const weekendList = useMemo(() => weekendQueries.map((q) => q.data), [weekendQueries]) + const meetingStats = countWeekendStats(weekendList) + const sessionStats = countSessionStats(weekendList) + const focusMeeting = pickFocusMeeting(meetings, nowDate) + const focusWeekend = focusMeeting ? weekendsByKey.get(focusMeeting.meeting_key) : undefined + const focusKind = focusMeeting ? focusMeetingKind(focusMeeting, nowDate) : null + const focusSessions = focusWeekend ? sortSessionsByStart(focusWeekend.sessions.map((s) => s.session)) : [] + const { current: currentSession, next: nextSession } = currentAndNextSession(focusSessions, nowDate) + const defaultSessionKey = focusWeekend?.default_session_key ?? focusWeekend?.sessions[0]?.session.session_key + const recentSessions = collectRecentSessions(weekendList) + const weekendsLoading = weekendQueries.some((q) => q.isLoading) + + if (seasonsQuery.isLoading) { + return
loading command center…
+ } + + if (seasonsQuery.isError) { + return ( +
+ {seasonsQuery.error instanceof Error ? seasonsQuery.error.message : 'Failed to load seasons'} +
+ ) + } + + const seasons = seasonsQuery.data ?? [] + + if (seasons.length === 0) { + return ( +
+
+

Command Center

+ Local-first F1 operations +
+
+
No ingested seasons yet
+
+ Ingest a season or session from the CLI, then return here for coverage and navigation. +
+
+
+
+ Get Started +
+ ' }, + ]} + /> +
+
+ ) + } + + const liveActive = liveQuery.data?.is_live === true + + return ( +
+
+
+

Command Center

+ + {latestSeason} season · {seasons.length} season{seasons.length === 1 ? '' : 's'} local + +
+
+ + {liveActive ? 'Live session active' : 'No live session'} +
+
+ +
+
+ Seasons + {seasons.length} +
+
+ Weekends Full + {meetingStats.full} +
+
+ Partial + {meetingStats.partial} +
+
+ Missing + {meetingStats.missing} +
+
+ Sessions Local + + {sessionStats.local}/{sessionStats.total || '—'} + +
+
+ +
+
+
+ {focusKind ? focusMeetingLabel(focusKind) : 'Weekend'} + {focusWeekend && ( + + )} +
+ + {meetingsQuery.isLoading &&
loading meetings…
} + + {meetingsQuery.isError && ( +
+ {meetingsQuery.error instanceof Error + ? meetingsQuery.error.message + : 'Failed to load meetings'} +
+ )} + + {!meetingsQuery.isLoading && !meetingsQuery.isError && focusMeeting && ( + <> +
+
+
{focusMeeting.meeting_name}
+
+ {focusMeeting.location} + {focusMeeting.country_code ? ` · ${focusMeeting.country_code}` : ''} + {' · '} + {formatMeetingDates(focusMeeting)} +
+
+ {focusMeeting.circuit_short_name && ( + {focusMeeting.circuit_short_name} + )} +
+ +
+ {liveActive && ( +
+ LIVE + SignalR feed connected — open Live Timing +
+ )} + {currentSession && ( +
+ ON TRACK + {currentSession.session_name} +
+ )} + {!currentSession && nextSession && sessionStartTime(nextSession) && ( +
+ Next session + {nextSession.session_name} + + {formatCountdown(sessionStartTime(nextSession)!, nowDate)} + +
+ )} + {!currentSession && !nextSession && focusMeeting && meetingHasStarted(focusMeeting, nowDate) && ( +
Weekend finished
+ )} + {!currentSession && !nextSession && focusKind === 'recent' && ( +
Historical weekend — local data available
+ )} +
+ + {weekendsLoading && !focusWeekend && ( +
loading weekend schedule…
+ )} + + {focusWeekend && focusWeekend.sessions.length > 0 && ( +
+ + + + + + + + + + + {focusWeekend.sessions.map(({ session, source, datasets }) => { + const isCurrent = currentSession?.session_key === session.session_key + const isNext = nextSession?.session_key === session.session_key + return ( + + + + + + + ) + })} + +
SessionStartCoverageOpen
+ + {sessionTypeAbbrev(session.session_type, session.session_name)} + + {session.session_name} + {session.session_key === focusWeekend.default_session_key && ( + default + )} + + {formatSessionScheduleTime(session.date_start)} + + + {formatCoverageHint(datasets)} + + + + + Race Hub + +
+
+ )} + + )} + + {!meetingsQuery.isLoading && meetings.length === 0 && ( +
+ No meetings ingested for {latestSeason}. Run{' '} + box-box --ingest-year {latestSeason} +
+ )} +
+ + +
+
+ ) +} diff --git a/frontend/src/router.tsx b/frontend/src/router.tsx index 8e0af01..00ae1a6 100644 --- a/frontend/src/router.tsx +++ b/frontend/src/router.tsx @@ -1,5 +1,6 @@ -import { createRootRoute, createRoute, createRouter, Outlet, redirect } from '@tanstack/react-router' +import { createRootRoute, createRoute, createRouter, Outlet } from '@tanstack/react-router' import { Nav } from './components/Nav' +import { CommandCenterPage } from './pages/CommandCenterPage' import { RaceHubPage } from './pages/RaceHubPage' import { DataLibraryPage } from './pages/DataLibraryPage' import { LiveTimingPage } from './pages/LiveTimingPage' @@ -17,12 +18,10 @@ const rootRoute = createRootRoute({ ), }) -const indexRoute = createRoute({ +export const commandCenterRoute = createRoute({ getParentRoute: () => rootRoute, path: '/', - beforeLoad: () => { - throw redirect({ to: '/race-hub', search: {} }) - }, + component: CommandCenterPage, }) export const raceHubRoute = createRoute({ @@ -50,7 +49,7 @@ export const liveTimingRoute = createRoute({ component: LiveTimingPage, }) -const routeTree = rootRoute.addChildren([indexRoute, raceHubRoute, dataLibraryRoute, liveTimingRoute]) +const routeTree = rootRoute.addChildren([commandCenterRoute, raceHubRoute, dataLibraryRoute, liveTimingRoute]) export const router = createRouter({ routeTree }) diff --git a/frontend/src/styles/app.css b/frontend/src/styles/app.css index 4ff4a63..f106129 100644 --- a/frontend/src/styles/app.css +++ b/frontend/src/styles/app.css @@ -970,6 +970,266 @@ a { color: inherit; text-decoration: none; } .analysis-notice strong { color: var(--text); } .analysis-notice code { font-family: var(--f-mono); font-size: 11px; color: var(--text-3); } +/* ── Command Center ── */ +.cc-page { + max-width: 1120px; + margin: 0 auto; + padding: var(--s5) var(--s6); + min-height: calc(100vh - var(--nav-h)); +} + +.cc-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: var(--s5); + margin-bottom: var(--s5); + padding-bottom: var(--s5); + border-bottom: 1px solid var(--border); +} + +.cc-title { + font-size: 16px; + font-weight: 700; + margin-bottom: 2px; +} + +.cc-subtitle { + font-size: 12px; + font-family: var(--f-mono); + color: var(--text-3); +} + +.cc-live-pill { + display: flex; + align-items: center; + gap: var(--s3); + font-size: 11px; + font-family: var(--f-mono); + color: var(--text-2); + white-space: nowrap; +} + +.cc-live-dot { + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--text-3); + flex-shrink: 0; +} +.cc-live-dot.live { + background: var(--red); + box-shadow: 0 0 6px rgba(225, 6, 0, 0.6); +} + +.badge-live { + background: rgba(225, 6, 0, 0.15); + color: var(--red); + border: 1px solid rgba(225, 6, 0, 0.35); +} + +.cc-summary { + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); + gap: 1px; + border: 1px solid var(--border); + margin-bottom: var(--s5); +} + +.cc-stat { + padding: var(--s4); + background: var(--surface); + display: flex; + flex-direction: column; + gap: 2px; +} + +.cc-stat-label { + font-size: 9px; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-3); +} + +.cc-stat-val { + font-family: var(--f-mono); + font-size: 18px; + font-weight: 700; + color: var(--text-2); +} +.cc-stat-full { color: var(--green); } +.cc-stat-partial { color: var(--yellow); } + +.cc-grid { + display: grid; + grid-template-columns: 1fr; + gap: var(--s5); + align-items: start; +} + +.cc-panel { + background: var(--surface); + border: 1px solid var(--border); + padding: var(--s5); +} + +.cc-side { + display: flex; + flex-direction: column; + gap: var(--s5); +} + +.cc-focus-head { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: var(--s4); + margin-bottom: var(--s4); +} + +.cc-focus-name { + font-size: 15px; + font-weight: 700; + margin-bottom: 2px; +} + +.cc-focus-meta { + font-size: 11px; + color: var(--text-3); +} + +.cc-circuit { + font-size: 11px; + color: var(--text-2); + padding: 2px 8px; + border: 1px solid var(--border); + border-radius: 2px; +} + +.cc-focus-status { + margin-bottom: var(--s5); + display: flex; + flex-direction: column; + gap: var(--s3); +} + +.cc-status-row { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: var(--s3); + font-size: 12px; + color: var(--text-2); +} +.cc-status-row.muted { color: var(--text-3); } + +.cc-status-label { + font-size: 10px; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-3); +} + +.cc-status-value { font-weight: 600; color: var(--text); } + +.cc-countdown { + font-size: 13px; + font-weight: 700; + color: var(--red); +} + +.cc-schedule-table { margin-top: var(--s3); } +.cc-schedule-table .badge { margin-left: var(--s3); } + +.cc-session-type { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 28px; + padding: 1px 4px; + margin-right: var(--s3); + font-family: var(--f-mono); + font-size: 10px; + font-weight: 700; + color: var(--text-3); + background: var(--surface-2); + border: 1px solid var(--border); + border-radius: 2px; +} + +.cc-row-live td { background: rgba(225, 6, 0, 0.06); } +.cc-row-next td { background: rgba(255, 214, 0, 0.04); } + +.cc-actions { + display: flex; + flex-direction: column; + gap: 1px; + border: 1px solid var(--border); +} + +.cc-action { + display: flex; + flex-direction: column; + gap: 2px; + padding: var(--s4); + background: var(--surface-h); + transition: background 0.1s; +} +.cc-action:hover { background: var(--surface-2); } + +.cc-action-label { + font-size: 13px; + font-weight: 600; + color: var(--text); +} + +.cc-action-meta { + font-size: 11px; + font-family: var(--f-mono); + color: var(--text-3); +} + +.cc-session-list { + display: flex; + flex-direction: column; + gap: 1px; + border: 1px solid var(--border); +} + +.cc-session-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--s4); + padding: var(--s3) var(--s4); + background: var(--surface-h); + transition: background 0.1s; +} +.cc-session-row:hover { background: var(--surface-2); } + +.cc-session-row-title { + font-size: 12px; + font-weight: 600; +} + +.cc-session-row-meta { + font-size: 10px; + color: var(--text-3); + margin-top: 1px; +} + +.cc-side-empty, +.cc-cli-section { + font-size: 12px; + color: var(--text-3); +} + +.mono { font-family: var(--f-mono); } + +@media (min-width: 1101px) { + .cc-grid { grid-template-columns: minmax(0, 1.6fr) minmax(260px, 1fr); } +} + /* ── Mobile ── */ @media (max-width: 640px) { .page { padding: var(--s3); } @@ -1017,4 +1277,8 @@ a { color: inherit; text-decoration: none; } .dl-detail-wrap { border-top: 1px solid var(--border); } .dl-content-header { padding: var(--s3) var(--s4); } .dl-content-meta { font-size: 11px; } + + .cc-page { padding: var(--s4); } + .cc-header { flex-direction: column; align-items: flex-start; } + .cc-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } } diff --git a/frontend/src/test/CommandCenterPage.test.tsx b/frontend/src/test/CommandCenterPage.test.tsx new file mode 100644 index 0000000..0f3a443 --- /dev/null +++ b/frontend/src/test/CommandCenterPage.test.tsx @@ -0,0 +1,131 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest' +import { render, screen, waitFor } from '@testing-library/react' +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { RouterProvider, createRouter, createRootRoute, createRoute } from '@tanstack/react-router' +import { CommandCenterPage } from '../pages/CommandCenterPage' +import type { DatasetInfo, Meeting, Weekend } from '../types' + +vi.mock('../api', () => ({ + fetchSeasons: vi.fn(), + fetchLocalMeetings: vi.fn(), + fetchWeekend: vi.fn(), + fetchLiveState: vi.fn(), +})) + +import { fetchSeasons, fetchLocalMeetings, fetchWeekend, fetchLiveState } from '../api' + +const mockFetchSeasons = vi.mocked(fetchSeasons) +const mockFetchLocalMeetings = vi.mocked(fetchLocalMeetings) +const mockFetchWeekend = vi.mocked(fetchWeekend) +const mockFetchLiveState = vi.mocked(fetchLiveState) + +const meeting: Meeting = { + meeting_key: 1229, + meeting_name: 'Monaco', + meeting_official_name: 'FORMULA 1 GRAND PRIX DE MONACO 2025', + location: 'Monaco', + country_name: 'Monaco', + country_code: 'MON', + country_flag: '', + circuit_short_name: 'Monaco', + date_start: '2025-05-23T00:00:00+00:00', + date_end: '2025-05-25T00:00:00+00:00', + year: 2025, +} + +const fullDatasets: Record = { + meeting: { status: 'available', source: 'local', count: 1 }, + session: { status: 'available', source: 'local', count: 1 }, + drivers: { status: 'available', source: 'local', count: 20 }, + results: { status: 'available', source: 'local', count: 20 }, + starting_grid: { status: 'available', source: 'local', count: 20 }, + stints: { status: 'available', source: 'local', count: 2 }, + pit_stops: { status: 'available', source: 'local', count: 1 }, + positions: { status: 'available', source: 'local', count: 3 }, + race_control: { status: 'available', source: 'local', count: 1 }, + weather: { status: 'available', source: 'local', count: 1 }, + laps: { status: 'available', source: 'local', count: 1 }, +} + +const weekend: Weekend = { + source: 'local', + meeting_key: 1229, + meeting, + default_session_key: 9472, + sessions: [ + { + session: { + session_key: 9472, + session_name: 'Race', + session_type: 'Race', + meeting_key: 1229, + date_start: '2025-05-25T13:00:00+00:00', + date_end: '2025-05-25T15:00:00+00:00', + gmt_offset: '02:00:00', + }, + source: 'local', + datasets: fullDatasets, + }, + ], +} + +function renderPage() { + const queryClient = new QueryClient({ + defaultOptions: { queries: { retry: false } }, + }) + + const rootRoute = createRootRoute({ + component: () => ( + + + + ), + }) + + const indexRoute = createRoute({ + getParentRoute: () => rootRoute, + path: '/', + component: CommandCenterPage, + }) + + const router = createRouter({ routeTree: rootRoute.addChildren([indexRoute]) }) + + return render() +} + +describe('CommandCenterPage', () => { + beforeEach(() => { + vi.clearAllMocks() + mockFetchLiveState.mockResolvedValue({ is_live: false, data: null }) + }) + + it('shows empty state when no seasons are ingested', async () => { + mockFetchSeasons.mockResolvedValue([]) + + renderPage() + + await waitFor(() => { + expect(screen.getByTestId('command-center-empty')).toBeInTheDocument() + }) + expect(screen.getByText('No ingested seasons yet')).toBeInTheDocument() + }) + + it('shows coverage summary and focus weekend when data exists', async () => { + mockFetchSeasons.mockResolvedValue([2025]) + mockFetchLocalMeetings.mockResolvedValue([meeting]) + mockFetchWeekend.mockResolvedValue(weekend) + + renderPage() + + await waitFor(() => { + expect(screen.getByTestId('command-center')).toBeInTheDocument() + }) + + expect(screen.getByText('Command Center')).toBeInTheDocument() + await waitFor(() => { + expect(screen.getByTestId('cc-session-9472')).toBeInTheDocument() + }) + expect(screen.getByTestId('cc-focus')).toHaveTextContent('Monaco') + expect(screen.getByText('No live session')).toBeInTheDocument() + }) +}) diff --git a/frontend/src/test/schedule.test.ts b/frontend/src/test/schedule.test.ts new file mode 100644 index 0000000..1bf05d6 --- /dev/null +++ b/frontend/src/test/schedule.test.ts @@ -0,0 +1,81 @@ +import { describe, it, expect } from 'vitest' +import { + currentMeeting, + currentAndNextSession, + focusMeetingKind, + focusMeetingLabel, + formatCountdown, + nextUpcomingMeeting, + pickFocusMeeting, +} from '../lib/schedule' +import type { Meeting, Session } from '../types' + +const meeting = (overrides: Partial = {}): Meeting => ({ + meeting_key: 1, + meeting_name: 'Monaco', + meeting_official_name: 'Monaco GP', + location: 'Monaco', + country_name: 'Monaco', + country_code: 'MON', + country_flag: '', + circuit_short_name: 'Monaco', + date_start: '2025-05-23T00:00:00+00:00', + date_end: '2025-05-25T23:59:59+00:00', + year: 2025, + ...overrides, +}) + +const session = (overrides: Partial = {}): Session => ({ + session_key: 9472, + session_name: 'Race', + session_type: 'Race', + meeting_key: 1, + date_start: '2025-05-25T13:00:00+00:00', + date_end: '2025-05-25T15:00:00+00:00', + gmt_offset: '02:00:00', + ...overrides, +}) + +describe('schedule helpers', () => { + it('picks current meeting when now is inside the weekend window', () => { + const now = new Date('2025-05-24T12:00:00Z') + const meetings = [meeting()] + expect(currentMeeting(meetings, now)?.meeting_key).toBe(1) + expect(pickFocusMeeting(meetings, now)?.meeting_key).toBe(1) + }) + + it('picks next upcoming meeting when all meetings are in the future', () => { + const now = new Date('2025-01-01T00:00:00Z') + const meetings = [meeting()] + expect(nextUpcomingMeeting(meetings, now)?.meeting_key).toBe(1) + expect(pickFocusMeeting(meetings, now)?.meeting_key).toBe(1) + expect(focusMeetingKind(meetings[0], now)).toBe('next') + expect(focusMeetingLabel('next')).toBe('Next Weekend') + }) + + it('falls back to most recent past meeting for historical local data', () => { + const now = new Date('2026-01-01T00:00:00Z') + const meetings = [meeting()] + expect(pickFocusMeeting(meetings, now)?.meeting_key).toBe(1) + expect(focusMeetingKind(meetings[0], now)).toBe('recent') + }) + + it('detects current and next sessions', () => { + const sessions = [ + session({ session_key: 1, session_name: 'FP1', date_start: '2025-05-23T10:00:00+00:00', date_end: '2025-05-23T11:00:00+00:00' }), + session({ session_key: 2, session_name: 'Race', date_start: '2025-05-25T13:00:00+00:00', date_end: '2025-05-25T15:00:00+00:00' }), + ] + + const duringRace = new Date('2025-05-25T14:00:00+00:00') + expect(currentAndNextSession(sessions, duringRace).current?.session_key).toBe(2) + + const beforeRace = new Date('2025-05-24T12:00:00+00:00') + expect(currentAndNextSession(sessions, beforeRace).next?.session_key).toBe(2) + }) + + it('formats countdown strings', () => { + const now = new Date('2025-05-25T12:00:00+00:00') + const target = new Date('2025-05-25T13:00:00+00:00') + expect(formatCountdown(target, now)).toBe('0d 01h 00m 00s') + }) +}) diff --git a/tests/command-center.spec.ts b/tests/command-center.spec.ts new file mode 100644 index 0000000..3a29f57 --- /dev/null +++ b/tests/command-center.spec.ts @@ -0,0 +1,40 @@ +import { test, expect } from '@playwright/test' + +const FULL_SESSION = 9472 + +test.describe('Command Center', () => { + test('loads as default route with local coverage summary', async ({ page }) => { + await page.goto('/') + + await expect(page.getByTestId('command-center')).toBeVisible() + await expect(page.getByText('Command Center')).toBeVisible() + await expect(page.getByTestId('cc-focus')).toBeVisible() + await expect(page.getByTestId('cc-session-9472')).toBeVisible() + }) + + test('nav link reaches command center from race hub', async ({ page }) => { + await page.goto('/race-hub') + await page.getByRole('link', { name: 'Command' }).click() + await expect(page).toHaveURL('/') + await expect(page.getByTestId('command-center')).toBeVisible() + }) + + test('quick action opens race hub for default session', async ({ page }) => { + await page.goto('/') + await expect(page.getByTestId('cc-action-race-hub')).toContainText(String(FULL_SESSION)) + await page.getByTestId('cc-action-race-hub').click() + await expect(page).toHaveURL(new RegExp(`/race-hub\\?session_key=${FULL_SESSION}`)) + await expect(page.getByText('Final Classification')).toBeVisible() + }) + + test('existing routes continue to work', async ({ page }) => { + await page.goto(`/race-hub?session_key=${FULL_SESSION}`) + await expect(page.getByText('Final Classification')).toBeVisible() + + await page.goto('/data-library') + await expect(page.getByTestId('data-library')).toBeVisible() + + await page.goto('/live') + await expect(page.getByTestId('live-empty')).toBeVisible() + }) +}) diff --git a/tests/production-smoke.spec.ts b/tests/production-smoke.spec.ts index 05ed147..5c98949 100644 --- a/tests/production-smoke.spec.ts +++ b/tests/production-smoke.spec.ts @@ -3,6 +3,13 @@ import { test, expect } from '@playwright/test' const FULL_SESSION = 9472 test.describe('Production serving (Go + built React)', () => { + test('serves command center as default route', async ({ page }) => { + await page.goto('/') + + await expect(page.getByTestId('command-center')).toBeVisible() + await expect(page.getByTestId('cc-session-9472')).toBeVisible() + }) + test('serves race hub with classification from built assets', async ({ page }) => { await page.goto(`/race-hub?session_key=${FULL_SESSION}`) @@ -25,8 +32,11 @@ test.describe('Production serving (Go + built React)', () => { }) test('nav links work from built SPA', async ({ page }) => { - await page.goto('/race-hub') - await page.getByRole('link', { name: 'Data Library' }).click() + await page.goto('/') + await page.locator('.app-nav').getByRole('link', { name: 'Race Hub' }).click() + await expect(page).toHaveURL(/\/race-hub/) + + await page.locator('.app-nav').getByRole('link', { name: 'Data Library' }).click() await expect(page).toHaveURL(/\/data-library/) await page.getByRole('link', { name: 'Live' }).click() diff --git a/tests/visual/__snapshots__/desktop/command-center.png b/tests/visual/__snapshots__/desktop/command-center.png new file mode 100644 index 0000000000000000000000000000000000000000..65199954110fac4bbd6ba1d1a091476e81f28306 GIT binary patch literal 52746 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 literal 0 HcmV?d00001 diff --git a/tests/visual/__snapshots__/mobile/command-center.png b/tests/visual/__snapshots__/mobile/command-center.png new file mode 100644 index 0000000000000000000000000000000000000000..f5cbc64a04d770bcc5570c23d6d6cfe047f62ea0 GIT binary patch literal 50149 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 PuMkueH05*TECT)q{Mvk& literal 0 HcmV?d00001 diff --git a/tests/visual/helpers.ts b/tests/visual/helpers.ts index fb56d35..8d9d227 100644 --- a/tests/visual/helpers.ts +++ b/tests/visual/helpers.ts @@ -14,6 +14,14 @@ export async function waitForScreenshotReady(page: Page): Promise { await page.waitForTimeout(150) } +export async function gotoCommandCenterReady(page: Page): Promise { + await page.goto('/') + await expect(page.getByTestId('command-center')).toBeVisible() + await expect(page.getByTestId('cc-focus')).toBeVisible() + await expect(page.getByTestId('cc-session-9472')).toBeVisible() + await waitForScreenshotReady(page) +} + export async function gotoRaceHubReady(page: Page, sessionKey = FULL_SESSION): Promise { await page.goto(`/race-hub?session_key=${sessionKey}`) await expect(page.getByText('Final Classification')).toBeVisible() diff --git a/tests/visual/mvp-screens.spec.ts b/tests/visual/mvp-screens.spec.ts index 0d20c15..b6844c4 100644 --- a/tests/visual/mvp-screens.spec.ts +++ b/tests/visual/mvp-screens.spec.ts @@ -1,5 +1,6 @@ import { test } from '@playwright/test' import { + gotoCommandCenterReady, gotoDataLibraryReady, gotoLiveEmptyReady, gotoRaceHubReady, @@ -7,6 +8,11 @@ import { } from './helpers' test.describe('MVP visual regression', () => { + test('command-center', async ({ page }) => { + await gotoCommandCenterReady(page) + await screenshotPage(page, 'command-center') + }) + test('race-hub', async ({ page }) => { await gotoRaceHubReady(page) await screenshotPage(page, 'race-hub')