Files
CRAPP/docs/decisions/DD-051.md
T
davideandClaude Sonnet 5.5 9d047a6ecd Documentazione: DD-051 e DD-052, modulo MVP, database e changelog
Voto MVP definitivo, a pari merito, segreto e a tempo; nome del votato dalla rosa. PROJECT_STATE
segna che m35-m38 restano da applicare su Supabase (db push rinviato) e il lavoro su feature/gara.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 09:59:40 +01:00

2.5 KiB

DD-051 — Voto MVP definitivo e MVP a pari merito

Data: 26 ottobre 2026
Stato: Accettata (migration m35 e m36)

Contesto
Il voto MVP si poteva cambiare senza limiti e senza storico (mvp.md), e una parità in testa non assegnava l'MVP a nessuno finché non arrivavano altri voti. Con voti modificabili la classifica di una partita poteva ribaltarsi dopo che la squadra l'aveva già vista; e una parità, che a fine serata non si risolve più perché nessuno vota ancora, lasciava la partita senza MVP per sempre.

Decisione

  • Il voto è definitivo. Il giocatore lo registra una volta sola per partita. L'interfaccia chiede una conferma prima di inviarlo e non offre più «Cambia voto»; la mutazione è un INSERT e un secondo voto viene rifiutato dal vincolo UNIQUE (match_id, votante_id). A database (m35) il giocatore ha solo la policy di INSERT: UPDATE e DELETE restano agli admin (policy di M11), che possono correggere un voto sbagliato.

  • Una parità in testa dà più MVP. mvpPartita() restituisce tutti i più votati; ognuno conta un titolo in mvpVintiPerGiocatore(), e dove si mostra un solo nome per partita (Home, Classifica) i nomi sono uniti («Anna e Bruno»). Il quorum di DD-028 (VOTI_MINIMI_MVP = 2) resta: sotto due voti totali nessuno è MVP.

  • Presenza e orario a database (m36). Il voto MVP richiede, oltre a convocati e non-allenatori, che l'evento sia una partita, che votante e votato siano presente o ritardo e che siano passate 2 ore dall'inizio. Sta in una funzione dedicata, voto_mvp_consentito(), perché evento_permette_voto() è condivisa con pagelle e badge social, che non hanno queste regole. Gli admin restano esclusi dai vincoli.

Alternative scartate

  • Lasciare il voto modificabile entro una scadenza → serve una scadenza che non esiste (mvp.md, «Evoluzioni possibili») e un cambio di idea tardivo resta possibile.
  • Spareggio con un criterio automatico (media pagella, presenze) → introduce regole nascoste che i giocatori non vedono; il pari merito è il risultato più semplice da spiegare.

Conseguenze

  • Un voto dato per errore si corregge solo da un admin.
  • I voti già dati restano, ma le partite con una parità in testa assegnano ora i titoli: i conteggi MVP dei giocatori possono salire (badge «MVP» e «Uomo tie-break» compresi).
  • Con tre o più pari merito (per esempio tre voti a tre persone diverse) gli MVP sono tre.

Riesame
Se i pari merito risultano troppo frequenti, alzare il quorum (DD-028) o introdurre uno spareggio.