feat: Feature 1.2 (NBA stats FastAPI service) + Feature 1.4 (database schema)

Feature 1.2: Python FastAPI microservice wrapping nba_api
- GET /stats/season-avg, /stats/last-n, /stats/splits, /players/search
- Redis caching (24hr/1hr/6hr/7day), 0.6s rate limiting, PRA derived stat
- 27 Python tests passing

Feature 1.4: Complete Supabase database schema
- 6 tables: users, picks, scan_sessions, bets, outcomes, performance
- RLS enabled on all tables with auth.uid() policies
- 3 triggers: auto-create user, updated_at, scan count reset
- 37 schema validation tests passing
- Migration SQL ready, pending manual apply (WSL2 DNS blocker)

Total: 92 tests (65 Node.js + 27 Python), all passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kev
2026-03-21 10:58:58 -04:00
parent 00409fd6cd
commit 3da1b4242c
27 changed files with 2360 additions and 16 deletions
+30
View File
@@ -0,0 +1,30 @@
#!/bin/bash
# Start both BetonBLK services
# Usage: ./scripts/start.sh
set -e
echo "[BetonBLK] Starting services..."
# Start Python NBA stats service (port 8000)
echo "[BetonBLK] Starting NBA stats service on port 8000..."
cd nba-service
source venv/bin/activate
uvicorn app.main:app --host 0.0.0.0 --port 8000 &
NBA_PID=$!
cd ..
# Start Node.js API server (port 3000)
echo "[BetonBLK] Starting Node API server on port 3000..."
node src/server.js &
NODE_PID=$!
echo "[BetonBLK] Services running:"
echo " Node API: http://localhost:3000 (PID: $NODE_PID)"
echo " NBA Stats: http://localhost:8000 (PID: $NBA_PID)"
echo ""
echo "Press Ctrl+C to stop all services."
trap "kill $NBA_PID $NODE_PID 2>/dev/null; echo '[BetonBLK] Services stopped.'" EXIT
wait