GameDate from the provider is used for getting odds data #430
Labels
No labels
Kestra
bug
enhancement
someday
subtask
☁️ api
🎛️ infrastructure
🐞 sentry
📆 2025 Season
📝 pages
allpicks
📝 pages
picks
📝 pages
standings
🚀 performance
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
johnsturgeon/tgfp-web#430
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tank01
gameDateis a join key, not a derivable dateSource: Tank01's author, direct conversation, August 2026. Confirmed against
payload data the same day.
The fact
gameDateon/getNFLGamesForWeek(format"20250904") exists becauseconsumers read the feed from every time zone. Its value is the date that maps to
the
gameDateparameter of/getNFLBettingOdds— it is the provider'scorrelation key between the two endpoints, not a general-purpose calendar date.
Its timezone is US Eastern, and that is the provider's business, not ours.
Why it cannot be derived from
gameTime_epochDeriving it looks safe — the epoch is right there in the same row — and it is
wrong for every primetime game. Converting epoch to a UTC date rolls past
midnight for any kickoff after 8pm ET:
gameDate20250904_DAL@PHI20250905_KC@LAC20250907_BAL@BUF20250908_MIN@CHIThat is Thursday night, Sunday night and Monday night — every marquee slot.
The failure is silent. A wrong
gameDatereturns an empty odds result ratherthan an error, which yields no line for exactly the games most people care
about: no spread, no favorite, and a pick page that looks broken for reasons
nothing logged.
Re-verify any time:
Rules that follow
gameDatein the provider DTO. It is a documented cross-endpointcontract, which makes it one of the sturdiest fields to model — not the
redundant-looking field it appears to be next to
gameTime_epoch.parse it into a date and back.
gets
start_time(a real UTC datetime derived fromgameTime_epoch), whichis what any pool logic should reason about.
gameDateanswers "which oddscall does this game belong to" and nothing else.
Rule 3 already holds:
game_datedoes not appear anywhere outsideapp/tank01_api/.