Add skip tracking, compressed heatmap, listening log, docs, tests, and OpenAI support

Major changes:
- Add skip tracking: poll currently-playing every 15s, detect skips (<30s listened)
- Add listening-log and sessions API endpoints
- Fix ReccoBeats client to extract spotify_id from href response
- Compress heatmap from 24 hours to 6 x 4-hour blocks
- Add OpenAI support in narrative service (use max_completion_tokens for new models)
- Add ListeningLog component with timeline and list views
- Update all frontend components to use real data (album art, play counts)
- Add docker-compose external network (dockernet) support
- Add comprehensive documentation (API, DATA_MODEL, ARCHITECTURE, FRONTEND)
- Add unit tests for ingest and API endpoints
This commit is contained in:
bnair123
2025-12-30 00:15:01 +04:00
parent faee830545
commit 887e78bf47
26 changed files with 1942 additions and 662 deletions

View File

@@ -16,14 +16,18 @@ services:
- SPOTIFY_REFRESH_TOKEN=${SPOTIFY_REFRESH_TOKEN}
- GEMINI_API_KEY=${GEMINI_API_KEY}
- GENIUS_ACCESS_TOKEN=${GENIUS_ACCESS_TOKEN}
- OPENAI_API_KEY=${OPENAI_API_KEY}
- OPENAI_APIKEY=${OPENAI_APIKEY}
ports:
- '8000:8000'
networks:
- dockernet
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/"]
test: ["CMD", "curl", "-f", "http://localhost:8000/snapshots?limit=1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
start_period: 60s
frontend:
build:
@@ -33,6 +37,8 @@ services:
restart: unless-stopped
ports:
- '8991:80'
networks:
- dockernet
depends_on:
backend:
condition: service_healthy
@@ -40,3 +46,7 @@ services:
volumes:
music_data:
driver: local
networks:
dockernet:
external: true