From 9e17c2faddfd88dd0beb5cdfe65bde1972eb2109 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Sun, 30 Aug 2026 18:15:16 +0200 Subject: [PATCH] DD-017: l'admin scrive al posto del giocatore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Registra la decisione prima del codice, come chiede AGENTS.md. Il modello dei permessi passa da "ognuno i suoi" a "ognuno i suoi, più l'admin su tutti, tranne i file": senza, l'export per il tesseramento resta incompleto e il lavoro amministrativo torna in chat, contro la missione del progetto. Gli upload restano al giocatore perché su documenti d'identità e dati sanitari la catena di responsabilità deve restare leggibile. Aggiornati di conseguenza il documento di modulo (utenti, azioni della dashboard, permessi) e il changelog. Annotato nel riesame che oggi non esiste audit di chi modifica un dato. Co-Authored-By: Claude Opus 5 --- docs/CHANGELOG.md | 4 ++++ docs/DESIGN_DECISIONS.md | 38 +++++++++++++++++++++++++++++++ docs/modules/profilo-giocatore.md | 12 +++++++++- 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 1e44b2c..6c7c487 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -18,6 +18,10 @@ qui: sta in [ROADMAP.md](ROADMAP.md). certificato e foto tessera, export CSV per il tesseramento CSI. - Migration `m2_profili_giocatore` (tabella dei profili) e `m3_bucket_profili` (bucket privato), entrambe additive. +- Dalla dashboard l'amministratore modifica i dati squadra (nome, cognome, numero, ruolo), + compila i dati personali al posto di un giocatore e scollega un account da un profilo + (DD-017). I file restano esclusi: li carica solo il giocatore. Nessuna migration: le + policy di M1 e M2 lo consentivano già. ### Test diff --git a/docs/DESIGN_DECISIONS.md b/docs/DESIGN_DECISIONS.md index 384643d..ce954cf 100644 --- a/docs/DESIGN_DECISIONS.md +++ b/docs/DESIGN_DECISIONS.md @@ -32,6 +32,7 @@ Serve a rispondere a domande del tipo: | [DD-012](#dd-012--non-migrare-gli-id-giocatore-in-v11) | Non migrare ID in v1.1 | | [DD-013](#dd-013--portabilità-lapp-non-deve-dipendere-da-servizi-esclusivi) | Portabilità dello stack | | [DD-016](#dd-016--schema-dati-profilo-giocatore-v11-f0) | Schema dati Profilo Giocatore v1.1 | +| [DD-017](#dd-017--lamministratore-può-compilare-i-dati-al-posto-del-giocatore) | L'admin scrive al posto del giocatore | **In valutazione** @@ -436,6 +437,43 @@ Regole vincolanti: --- +### DD-017 — L'amministratore può compilare i dati al posto del giocatore + +**Data:** agosto 2026 +**Stato:** Accettata + +**Contesto** +Il modulo Profilo Giocatore era costruito su un confine netto: ognuno scrive solo la propria riga, l'amministratore legge e scarica. Nella pratica quel confine blocca il lavoro che il modulo doveva togliere: se metà squadra non compila i propri dati, l'export per il tesseramento CSI resta incompleto e l'admin torna a chiedere le informazioni in chat — esattamente ciò che CrAPP deve eliminare. Inoltre le docs assegnavano già agli admin la gestione dei dati squadra (nome, cognome, numero, ruolo) e il reset del collegamento all'account (DD-016 regola 2), senza che esistesse una schermata per farlo. + +**Decisione** +Dalla dashboard amministratore, un admin può: + +1. modificare i **dati squadra** di qualsiasi giocatore (nome, cognome, numero, ruolo); +2. compilare e correggere i **dati personali e del documento** di qualsiasi giocatore; +3. **scollegare** un account da un profilo, liberando lo slot. + +Restano fuori, e non cambiano: + +- i **file** (documento, certificato, foto): l'admin li scarica ma non li carica né li sostituisce. Un documento d'identità lo produce il suo titolare, e la catena di responsabilità deve restare leggibile; +- il **giocatore**, che continua a non poter toccare i propri dati squadra. + +**Alternative scartate** +- Lasciare tutto al giocatore → l'export CSI resta incompleto e il lavoro amministrativo torna in chat, contro la missione del progetto. +- Dare all'admin anche l'upload dei file → confonde chi ha fornito un documento, su dati sanitari e d'identità dove serve il contrario. +- Un ruolo intermedio (segreteria) per i soli dati personali → un ruolo in più per una squadra sola, con gli stessi tre amministratori di adesso. + +**Conseguenze** +- Il modello dei permessi non è più "ognuno i suoi": è "ognuno i suoi, più l'admin su tutti, tranne i file". Le policy RLS di M1 e M2 lo consentivano già, quindi non servono migration. +- Un admin può correggere un errore di battitura in un numero di documento senza inseguire il giocatore. +- Un admin vede e scrive dati personali altrui: è un potere reale, dato a tre persone su diciassette. Va assegnato con la stessa cura di prima (una riga in `user_roles`, nessuna auto-promozione). +- Il completamento del profilo smette di essere un indicatore di *chi ha risposto* e diventa un indicatore di *quali dati mancano*, chiunque li abbia inseriti. + +**Riesame** +- Se la squadra cresce al punto da rendere sensato un ruolo di sola segreteria. +- Se serve tracciare *chi* ha modificato un dato: oggi non c'è audit, e con la scrittura condivisa la domanda prima o poi arriva. + +--- + ## Decisioni in valutazione --- diff --git a/docs/modules/profilo-giocatore.md b/docs/modules/profilo-giocatore.md index 9c99f2b..43fab85 100644 --- a/docs/modules/profilo-giocatore.md +++ b/docs/modules/profilo-giocatore.md @@ -26,6 +26,12 @@ Può: - scaricare documenti e certificati - esportare i dati necessari al tesseramento CSI - verificare lo stato di completamento dei profili +- modificare i dati squadra di qualsiasi giocatore (nome, cognome, numero, ruolo) +- compilare e correggere i dati personali e del documento al posto di un giocatore (DD-017) +- scollegare un account da un profilo, liberando lo slot + +Non può caricare o sostituire i file altrui: documento, certificato e foto restano +responsabilità del giocatore che li fornisce. ## Flusso utente @@ -152,6 +158,8 @@ Azioni disponibili. - Scarica certificato - Scarica documento - Scarica foto tessera +- Modifica dati squadra e dati personali del giocatore (DD-017) +- Scollega account, per liberare uno slot assegnato per errore ## Esportazione CSI @@ -189,7 +197,9 @@ Quando tutte le sezioni risultano complete il profilo raggiunge il 100%. **Giocatore** — può modificare esclusivamente il proprio profilo. -**Amministratore** — può visualizzare tutti i profili, scaricare tutti i documenti ed esportare i dati. +**Amministratore** — può visualizzare tutti i profili, scaricare tutti i documenti, esportare i +dati, modificare dati squadra e dati personali di chiunque e scollegare un account (DD-017). +Non carica file al posto di altri. ## Versione 1