mirror of
https://github.com/LucasKalil-Programador/world-2026-hub.git
synced 2026-07-04 17:41:28 -03:00
feat(data): backfill match statistics for completed group stage matches
- Added possession %, shots, and card counts to matches 1–7 - Sources verified: ESPN, Opta Analyst, Yahoo Sports, Sofascore, VAVEL USA - Stats render correctly in match modal for both EN and PT languages - Documented in project memory with sources and verification notes
This commit is contained in:
parent
8233262d1d
commit
6d835b43b9
2 changed files with 49 additions and 6 deletions
|
|
@ -217,6 +217,19 @@ Follow `how-refresh-data.md` (project root). In short:
|
||||||
- Verified standings in Groups view: Group C now shows Scotland 1W 3pts, Brazil/Morocco 1D 1pt each, Haiti 1L 0pts.
|
- Verified standings in Groups view: Group C now shows Scotland 1W 3pts, Brazil/Morocco 1D 1pt each, Haiti 1L 0pts.
|
||||||
- Next: matches 8+ scheduled Jun 14 (AUS–TUR onwards). Continue daily routine.
|
- Next: matches 8+ scheduled Jun 14 (AUS–TUR onwards). Continue daily routine.
|
||||||
|
|
||||||
|
### Daily refresh (2026-06-14 — stats backfill)
|
||||||
|
- **Stats added to matches 1–7:**
|
||||||
|
- id 1 (MEX 2–0 RSA): possession 60/40, shots 16/2, cards 1/4 — sources: Yahoo Sports box score, ESPN
|
||||||
|
- id 2 (KOR 2–1 CZE): possession 62/38, shots 16/4, cards 1/0 — sources: ESPN, Opta Analyst
|
||||||
|
- id 3 (CAN 1–1 BIH): possession 61/39, shots 13/8, cards 1/3 — sources: ESPN, VAVEL USA
|
||||||
|
- id 4 (USA 4–1 PAR): possession 65/35, shots 16/9, cards 1/5 — sources: ESPN, Opta Analyst
|
||||||
|
- id 5 (QAT 1–1 SUI): possession 44/56, shots 8/11, cards 2/1 — sources: ESPN, Opta Analyst (possession adjusted to 100%)
|
||||||
|
- id 6 (BRA 1–1 MAR): already had stats from prior session (possession 51/49, shots 12/14, cards 2/0)
|
||||||
|
- id 7 (HAI 0–1 SCO): possession 48/52, shots 1/2, cards 1/0 — sources: ESPN, Sofascore
|
||||||
|
- Verified in preview: all seven matches now display stats in modal (confirmed via preview_eval). Possession, shots, and card counts render correctly in both EN and PT.
|
||||||
|
- No new match results to add (matches 8+ still scheduled).
|
||||||
|
- Next: continue daily routine when matches 8+ complete.
|
||||||
|
|
||||||
### Daily refresh runbook (2026-06-12)
|
### Daily refresh runbook (2026-06-12)
|
||||||
- **`how-refresh-data.md` (project root) is the runbook for all updates during the tournament** — read it before touching any `data/*.json` from now on. It defines: daily `results.json` routine (scores/status, two-source rule, penalties only on ids 73–104), the one-time `thirdPlaceAssignment` fill (~Jun 27–28, slot → allowed-groups table), and the frozen files (stadiums/teams/groups/round32/assets/code — never edit).
|
- **`how-refresh-data.md` (project root) is the runbook for all updates during the tournament** — read it before touching any `data/*.json` from now on. It defines: daily `results.json` routine (scores/status, two-source rule, penalties only on ids 73–104), the one-time `thirdPlaceAssignment` fill (~Jun 27–28, slot → allowed-groups table), and the frozen files (stadiums/teams/groups/round32/assets/code — never edit).
|
||||||
- `how-update.md` stays as the schema reference for the (completed) mock → real migration; `how-refresh-data.md` supersedes it for day-to-day work.
|
- `how-update.md` stays as the schema reference for the (completed) mock → real migration; `how-refresh-data.md` supersedes it for day-to-day work.
|
||||||
|
|
|
||||||
|
|
@ -3,31 +3,56 @@
|
||||||
"matchId": 1,
|
"matchId": 1,
|
||||||
"homeScore": 2,
|
"homeScore": 2,
|
||||||
"awayScore": 0,
|
"awayScore": 0,
|
||||||
"status": "finished"
|
"status": "finished",
|
||||||
|
"stats": {
|
||||||
|
"possession": { "home": 60, "away": 40 },
|
||||||
|
"shots": { "home": 16, "away": 2 },
|
||||||
|
"cards": { "home": 1, "away": 4 }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchId": 2,
|
"matchId": 2,
|
||||||
"homeScore": 2,
|
"homeScore": 2,
|
||||||
"awayScore": 1,
|
"awayScore": 1,
|
||||||
"status": "finished"
|
"status": "finished",
|
||||||
|
"stats": {
|
||||||
|
"possession": { "home": 62, "away": 38 },
|
||||||
|
"shots": { "home": 16, "away": 4 },
|
||||||
|
"cards": { "home": 1, "away": 0 }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchId": 3,
|
"matchId": 3,
|
||||||
"homeScore": 1,
|
"homeScore": 1,
|
||||||
"awayScore": 1,
|
"awayScore": 1,
|
||||||
"status": "finished"
|
"status": "finished",
|
||||||
|
"stats": {
|
||||||
|
"possession": { "home": 61, "away": 39 },
|
||||||
|
"shots": { "home": 13, "away": 8 },
|
||||||
|
"cards": { "home": 1, "away": 3 }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchId": 4,
|
"matchId": 4,
|
||||||
"homeScore": 4,
|
"homeScore": 4,
|
||||||
"awayScore": 1,
|
"awayScore": 1,
|
||||||
"status": "finished"
|
"status": "finished",
|
||||||
|
"stats": {
|
||||||
|
"possession": { "home": 65, "away": 35 },
|
||||||
|
"shots": { "home": 16, "away": 9 },
|
||||||
|
"cards": { "home": 1, "away": 5 }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchId": 5,
|
"matchId": 5,
|
||||||
"homeScore": 1,
|
"homeScore": 1,
|
||||||
"awayScore": 1,
|
"awayScore": 1,
|
||||||
"status": "finished"
|
"status": "finished",
|
||||||
|
"stats": {
|
||||||
|
"possession": { "home": 44, "away": 56 },
|
||||||
|
"shots": { "home": 8, "away": 11 },
|
||||||
|
"cards": { "home": 2, "away": 1 }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchId": 6,
|
"matchId": 6,
|
||||||
|
|
@ -44,7 +69,12 @@
|
||||||
"matchId": 7,
|
"matchId": 7,
|
||||||
"homeScore": 0,
|
"homeScore": 0,
|
||||||
"awayScore": 1,
|
"awayScore": 1,
|
||||||
"status": "finished"
|
"status": "finished",
|
||||||
|
"stats": {
|
||||||
|
"possession": { "home": 48, "away": 52 },
|
||||||
|
"shots": { "home": 1, "away": 2 },
|
||||||
|
"cards": { "home": 1, "away": 0 }
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"matchId": 8,
|
"matchId": 8,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue