v2 Phase 2: match previews + team profiles

- buildPreviewData.ts: precomputes from 150y of results → h2h.json (825 WC-team
  pairings, full records + recent meetings) + scorers.json (top-10 all-time
  scorers per team). Committed goalscorers.csv.
- server/src/preview.ts: assembles MatchPreview / TeamProfile from three layers —
  historical (h2h, scorers), DB enrichment (ESPN form/lineups/venue), live model
  (W/D/L, xG, odds, Elo). /api/preview/:num + /api/team/:name.
- Client: rich /match/:num page (model expectation, recent form chips, H2H record
  + recent meetings, lineups-or-key-players) and /team/:name profile (Elo, odds,
  standing, fixtures, all-time scorers). Match cards now link to previews;
  cross-linking between matches and teams.
- Verified: Mexico-SA preview (81% W, 2-0, form, H2H 2-1-1, Borgetti 37) and
  Argentina profile (Messi 63) render; 22 tests pass; build clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 15:34:54 +02:00
parent b6f62679c9
commit 7f4838d032
12 changed files with 48216 additions and 5 deletions
+2 -1
View File
@@ -16,9 +16,10 @@
"dev:server": "tsx watch server/src/index.ts",
"data:fixtures": "bun scripts/buildFixtures.ts",
"data:ratings": "bun scripts/buildRatings.ts",
"data:preview": "bun scripts/buildPreviewData.ts",
"data:viz": "bun scripts/buildStatsbombViz.ts",
"data:icons": "bun scripts/make-icons.mjs",
"data:build": "bun run data:icons && bun run data:fixtures && bun run data:ratings"
"data:build": "bun run data:icons && bun run data:fixtures && bun run data:ratings && bun run data:preview"
},
"dependencies": {
"@tanstack/react-router": "^1.95.0",