37 lines
1.4 KiB
Markdown
Executable File
37 lines
1.4 KiB
Markdown
Executable File
# BetonBLK — Build State
|
|
|
|
## Last Updated
|
|
2026-03-21
|
|
|
|
## Current Phase
|
|
Phase 1 — Foundation
|
|
|
|
## What Has Shipped
|
|
|
|
### 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.2 — NBA_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
|
|
|
|
### 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)
|