- Update ShiftPointAnalysis types: gear_ranges → gear_curves (with
acceleration data points), shift_events → crossover_points, add
runs_analyzed field
- Add UseCaseInfo type for GET /api/use-cases (now returns objects
with id, name, guidance instead of plain strings)
- Add guidance and recording_id fields to UseCaseSession
- Rewrite ShiftPointsView: scatter chart for gear acceleration curves,
dual y-axis bar chart for crossover RPM/speed, 4-column summary
- Update SessionDetailView: show session guidance, crossover points
and runs analyzed in analysis stats
- Extract shared type guard functions into src/utils/analysis.ts
- Type getAnalysis/reAnalyze as AnalysisResult instead of
Record<string, unknown>
- Type getGames return as string[] to match backend