DD-017: l'admin scrive al posto del giocatore
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 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,10 @@ qui: sta in [ROADMAP.md](ROADMAP.md).
|
|||||||
certificato e foto tessera, export CSV per il tesseramento CSI.
|
certificato e foto tessera, export CSV per il tesseramento CSI.
|
||||||
- Migration `m2_profili_giocatore` (tabella dei profili) e `m3_bucket_profili` (bucket
|
- Migration `m2_profili_giocatore` (tabella dei profili) e `m3_bucket_profili` (bucket
|
||||||
privato), entrambe additive.
|
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
|
### Test
|
||||||
|
|
||||||
|
|||||||
@@ -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-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-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-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**
|
**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
|
## Decisioni in valutazione
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -26,6 +26,12 @@ Può:
|
|||||||
- scaricare documenti e certificati
|
- scaricare documenti e certificati
|
||||||
- esportare i dati necessari al tesseramento CSI
|
- esportare i dati necessari al tesseramento CSI
|
||||||
- verificare lo stato di completamento dei profili
|
- 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
|
## Flusso utente
|
||||||
|
|
||||||
@@ -152,6 +158,8 @@ Azioni disponibili.
|
|||||||
- Scarica certificato
|
- Scarica certificato
|
||||||
- Scarica documento
|
- Scarica documento
|
||||||
- Scarica foto tessera
|
- Scarica foto tessera
|
||||||
|
- Modifica dati squadra e dati personali del giocatore (DD-017)
|
||||||
|
- Scollega account, per liberare uno slot assegnato per errore
|
||||||
|
|
||||||
## Esportazione CSI
|
## Esportazione CSI
|
||||||
|
|
||||||
@@ -189,7 +197,9 @@ Quando tutte le sezioni risultano complete il profilo raggiunge il 100%.
|
|||||||
|
|
||||||
**Giocatore** — può modificare esclusivamente il proprio profilo.
|
**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
|
## Versione 1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user