Files
MatchLiveTv/docs/MULTI_SPORT.md
Emiliano Frascaro e727069d43 Introduce architettura multi-sport con catalogo, engine scoring e overlay.
Catalogo sport in YAML, board implicito, engine per volley/basket/timed/racket/timer/generic, regia e app Android allineate.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 20:11:21 +02:00

1.7 KiB
Raw Blame History

Multi-sport — Match Live TV

Concetti

Concetto Descrizione
sport_key Disciplina (pallavolo, basket, tennis…) — sulla squadra e snapshot sulla partita
board_type Macro-tabellone implicito dal catalogo (volley, basket, timed, racket, timer, generic)
overlay_kind Layout video sulla partita (none, timer, volley, basket, timed, racket)
scoring_rules Regole effettive della partita (override sui default del catalogo)

Definito in backend/config/sports.yml, caricato da Sports::Catalog.

  • Nessuna tabella sports in DB
  • API: GET /api/v1/sports

Scoring

Scoring::Engine.for(match) seleziona l'engine:

Board Engine Azioni principali
volley VolleyEngine +1, 1, chiudi set
racket RacketEngine come volley (fase 1)
generic GenericEngine +1, 1 (nessuna chiusura set)
basket BasketEngine +1/+2/+3, quarti, cronometro
timed TimedEngine +1, 1, tempi, cronometro
timer TimerEngine solo cronometro

score_states.data (JSONB) per basket/timed/timer.

Overlay

Scelto per partita (overlay_kind), limitato da allowed_overlays dello sport.

Rendering Android: OverlayKind in OverlayStateScoreboardElement, CompactScoreboardElement, TimerElement.

Migrazione

  • teams.sportsport_key (volleyballpallavolo)
  • matches.sportsport_key
  • matches.overlay_kind (nullable)
  • score_states.board_type, score_states.data

Regia web

Partial per board in app/views/public/regia/_*.html.erb, data-board su #regia-app.