feat: Feature 1.1 — Odds API integration complete, 28 tests passing

This commit is contained in:
Kev
2026-03-21 08:31:15 -04:00
parent f70db389e2
commit 00409fd6cd
16 changed files with 6896 additions and 6 deletions
+20 -5
View File
@@ -1,21 +1,36 @@
# BetonBLK — Build State
## Last Updated
[Not yet started]
2026-03-21
## Current Phase
Phase 1 — Foundation
## What Has Shipped
Nothing yet. Project initialized.
### Feature 1.1 — Odds API Integration (COMPLETE)
- GET /api/odds/nba — live NBA player props from DraftKings, FanDuel, BetMGM
- GET /api/odds/ncaab — NCAAB props (with off-season detection)
- Normalizer: pairs Over/Under outcomes, maps 8 market types, filters to 3 books
- Redis cache: 15-min TTL, stale fallback on API failure
- Quota tracking via response headers, 429 when exhausted
- Query filters: stat_type, player (partial match), book
- 28 tests passing (18 unit, 10 integration)
- Known limitation: player-to-team assignment deferred to Feature 1.2 (uses home_team/away_team instead of team/opponent)
## What's Next
Feature 1.1Odds API Integration (no dependencies)
Feature 1.2 — NBA_API Stats Wrapper (no dependencies, can build parallel)
Feature 1.2NBA_API Stats Wrapper (no dependencies, can build now)
Feature 1.4 — Database Schema (no dependencies, can build parallel)
## Active Blockers
See BLOCKERS.md
## Session Log
[No sessions yet]
### Session 1 — 2026-03-21
- Made live Odds API test call, documented raw response format in DECISIONS.md
- Built: oddsNormalizer.js, oddsService.js, routes/odds.js, teamMap.js, redis.js, app.js
- Wrote 28 tests (unit + integration), all passing
- Logged DECISION-001 (API response format) and DECISION-002 (credit conservation)
- Spec updated: home_team/away_team replaces team/opponent (API limitation)
- Credits used: 2 of 500 (498 remaining)