feat: add Django web app, CloudKit sync, dashboard, and game_datetime_utc export

Adds the full Django application layer on top of sportstime_parser:
- core: Sport, Team, Stadium, Game models with aliases and league structure
- scraper: orchestration engine, adapter, job management, Celery tasks
- cloudkit: CloudKit sync client, sync state tracking, sync jobs
- dashboard: staff dashboard for monitoring scrapers, sync, review queue
- notifications: email reports for scrape/sync results
- Docker setup for deployment (Dockerfile, docker-compose, entrypoint)

Game exports now use game_datetime_utc (ISO 8601 UTC) instead of
venue-local date+time strings, matching the canonical format used
by the iOS app.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-02-19 14:04:27 -06:00
parent 4353d5943c
commit 63acf7accb
114 changed files with 13070 additions and 887 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
}
]