Files
MatchLiveTv/docs/MULTI_SPORT.md
Emiliano Frascaro 585332e32e Aggiunge app iOS nativa con parità multi-sport e test unitari.
Porting SwiftUI da Android (auth, hub, wizard, broadcast RTMP, overlay, scoring board-aware), reload hub al ritorno da diretta, decodifica score tollerante e documentazione allineata.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 21:37:32 +02:00

1.9 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 app mobile: OverlayKind in OverlayStateScoreboardElement (volley/racket), CompactScoreboardElement (basket/timed), WatermarkElement. Il cronometro non è renderizzato sull'overlay video (solo in regia).

Percorsi: Android native/android/.../streaming/overlay/, iOS native/ios/MatchLiveTv/Streaming/Overlay/.

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.