fix(data): add timezone handling for Sports-Reference scrapers and new stadiums

- Add ET timezone (America/New_York) to all Sports-Reference scrapers:
  - NBA: Basketball-Reference times parsed as ET
  - NFL: Pro-Football-Reference times parsed as ET
  - NHL: Hockey-Reference times parsed as ET
  - MLB: Baseball-Reference times parsed as ET
- Document source timezones in scraper docstrings
- Add 11 new stadiums to STADIUM_MAPPINGS:
  - NFL: 5 international venues (Corinthians Arena, Croke Park,
    Olympic Stadium Berlin, Santiago Bernabéu, Tom Benson Hall of Fame)
  - MLS: 4 alternate venues (Miami Freedom Park, Citi Field,
    LA Memorial Coliseum, M&T Bank Stadium)
  - NWSL: 2 alternate venues (Northwestern Medicine Field, ONE Spokane)
- Add 15 stadium aliases for MLS/NWSL team-based lookups
- Fix CanonicalSyncService to sync timezone identifier to SwiftData
- Update debug logging to use stadium timezone for display

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-01-21 16:04:45 -06:00
parent b339a53db3
commit 4d097883a6
11 changed files with 226 additions and 12 deletions

View File

@@ -2032,5 +2032,89 @@
"stadium_canonical_id": "stadium_wnba_purcell_pavilion",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "inter miami",
"stadium_canonical_id": "stadium_mls_chase_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "inter miami cf",
"stadium_canonical_id": "stadium_mls_chase_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "miami",
"stadium_canonical_id": "stadium_mls_chase_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "mia",
"stadium_canonical_id": "stadium_mls_chase_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "nycfc",
"stadium_canonical_id": "stadium_mls_yankee_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "nyc",
"stadium_canonical_id": "stadium_mls_yankee_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "new york city fc",
"stadium_canonical_id": "stadium_mls_yankee_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "lafc",
"stadium_canonical_id": "stadium_mls_bmo_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "los angeles fc",
"stadium_canonical_id": "stadium_mls_bmo_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "dc united",
"stadium_canonical_id": "stadium_mls_audi_field",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "d.c. united",
"stadium_canonical_id": "stadium_mls_audi_field",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "chicago red stars",
"stadium_canonical_id": "stadium_nwsl_seatgeek_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "chi",
"stadium_canonical_id": "stadium_nwsl_seatgeek_stadium",
"valid_from": null,
"valid_until": null
},
{
"alias_name": "chicago",
"stadium_canonical_id": "stadium_nwsl_seatgeek_stadium",
"valid_from": null,
"valid_until": null
}
]