v1.0.4 - Pro Match Data Lake & Competitive Intelligence
Highlights
Match Detail View + Elasticsearch Data Lake
- New GET /competitive/pro-matches/match-preview — per-game picks, KDA, gold, CS, DMG from Elasticsearch for any recent series
- New GET /competitive/pro-matches/es-series — full H2H history between two teams across all leagues
- 97K+ pro games (2014–2026) indexed from Oracle's Elixir across all major leagues (LCK, LPL, LEC, LCS, CBLOL, and more)
- Prefix wildcard fix on win_team — cross-source team name mismatches (e.g. "FlyQuest" vs "FlyQuest NZXT") resolved correctly
Multi-League Historical Backfill
- CBLOL, CBLOL Academy and Circuito Desafiante now auto-sync daily via dedicated Sidekiq cron jobs
- HistoricalBackfillJob accepts league: kwarg — each league runs independently with staggered schedules
- Backfill is fully resumable — re-runs skip already-completed tournaments
PandaScore Integration
- Upcoming and recent pro matches from PandaScore
- Match preview drawer wires PandaScore series to Elasticsearch game data
New Features
- ProStaff Events — organization-wide event system
- Multi-roster — organizations can manage multiple active rosters
- ArenaBR Tournaments — full double-elimination bracket with check-in, result reporting and admin dispute resolution
- Scrims — real-time lobby chat (Action Cable), live popup, result reports
- Riot Gateway — Go-based internal proxy replacing direct Riot API calls; circuit breaker (3-state, Redis-backed) protects against cascade failures
- Response cache layer — Redis cache on 6 high-traffic endpoints (TTL 5–30 min), org-scoped, with X-Cache-Hit header
- Mailing — password reset and transactional email templates
- Scouting → Hire — hire player directly from scouting target
- Team tag on organizations
- Season history for scouting targets
- Tier thresholds for player classification
Fixes & Improvements
- Semgrep + Brakeman clean (0 HIGH/CRITICAL)
- Healthcheck, SMTP, dead job queue, Sidekiq concurrency and DB pool fixes
- MatchFilterQuery extracted as standalone object; cache invalidation hardened
- Roster import edge cases resolved
- PostgreSQL connection pooling improved (PgBouncer session mode)
- Architecture diagram auto-update workflow
Full Changelog: 1.0.3...1.0.4