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>
1.7 KiB
1.7 KiB
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) |
Catalogo
Definito in backend/config/sports.yml, caricato da Sports::Catalog.
- Nessuna tabella
sportsin 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 OverlayState → ScoreboardElement, CompactScoreboardElement, TimerElement.
Migrazione
teams.sport→sport_key(volleyball→pallavolo)matches.sport→sport_keymatches.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.