feat: add per-ride history charts with wait time and uptime tracking
Build and Deploy / Build & Push (push) Successful in 3m7s

Adds a cron-driven sampler that snapshots Queue-Times waits and Six Flags
Fast Lane data every 5 minutes into a new ride_wait_samples table, and a
clickable per-ride detail page at /park/[id]/ride/[slug] with Today / 7d /
30d Recharts views plus a 30d uptime pill. Rides are keyed by Queue-Times'
stable qt_ride_id so renames don't fragment history. Samples store
pre-bucketed local_date and local_time in the park's IANA timezone so
aggregations are pure SQL and DST-safe.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-29 23:35:27 -04:00
parent bfe099322f
commit 4f838d99c1
25 changed files with 2052 additions and 18 deletions
+2
View File
@@ -9,6 +9,7 @@ import { startScheduler } from "./services/scheduler";
import calendarRoutes from "./routes/calendar";
import parksRoutes from "./routes/parks";
import ridesRoutes from "./routes/rides";
import rideHistoryRoutes from "./routes/ride-history";
import statusRoutes from "./routes/status";
import scrapeRoutes from "./routes/scrape";
@@ -22,6 +23,7 @@ app.use("*", cors());
app.route("/api/calendar", calendarRoutes);
app.route("/api/parks", parksRoutes);
app.route("/api/parks", ridesRoutes);
app.route("/api/parks", rideHistoryRoutes);
app.route("/api/status", statusRoutes);
app.route("/api/scrape", scrapeRoutes);