feat: integrate oliver-cost-tracker SDK into video-accessibility
Add AI cost tracking to all Gemini and TTS call sites:
- config.py: add COST_TRACKER_* env vars (base_url, api_key, source_app,
outbox_path, enabled)
- dependencies.py: add get_cost_tracker() factory (lru_cache, graceful
degradation if SDK not installed)
- models/job.py: add cost_tracker_project_id field for cost attribution
- services/gemini.py:
- add import time, _record_gemini_usage() helper (reads usage_metadata)
- add _cost_ctx kwarg to extract_accessibility, extract_accessibility_targeted,
transcreate_content, translate_vtt, rewrite_tts_cue
- record usage after every generate_content call via asyncio.create_task()
- tasks/ingest_and_ai.py: pass _cost_ctx (user_id, job_id, project_id) to
extract_accessibility
- tasks/translate_and_synthesize.py: build _cost_ctx from job_doc and pass
to transcreate_content + translate_vtt calls
- tasks/tts_synthesis.py: add user_id + cost_project_id kwargs, add
_record_tts_cost() helper (records len(text) chars to cost tracker)
- pyproject.toml: document SDK install instructions (comment)
- .env.prod.example: add COST_TRACKER_* vars
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>