# DD-034 — L'allenatore è uno slot della squadra con tipo diverso, non un giocatore **Data:** 24 settembre 2026 **Stato:** Accettata (implementata con le migration M20 e M21) **Contesto** Serve un account per l'allenatore: deve gestire gli eventi (oggi solo admin, `m11`) ma non è un giocatore. Non ha statistiche, badge né stagione, non vota e non viene votato. L'admin vuole registrarlo come i giocatori, inserendo la sua email Gmail. Specifica completa in [modules/allenatore.md](../modules/allenatore.md). **Decisione** L'allenatore è una riga di `giocatori_squadra` con una nuova colonna `tipo = 'allenatore'` (default `'giocatore'`). Così riusa senza cambiarli il collegamento per email (DD-018), `profili_giocatore` per i dati personali, il bucket avatar e il compleanno sincronizzato (DD-031). Il permesso di gestire gli eventi arriva da un nuovo valore `allenatore` di `app_role` in `user_roles` (DD-011), scritto da una funzione `SECURITY DEFINER` quando si collega uno slot di tipo allenatore: è quindi l'admin a concederlo, registrando lo slot. "Rosa" diventa `attivo e tipo = 'giocatore'` ovunque. **Alternative scartate** - Una tabella `staff` separata → isola l'allenatore da voti e rosa senza toccare i filtri, ma duplica collegamento per email, profilo, avatar e form admin. Resta l'alternativa se i filtri sulla rosa si rivelano troppi o fragili. - Registrare l'allenatore come admin → gli darebbe dati personali e documenti di tutta la squadra (DD-017), molto più del necessario. - Distinguere l'allenatore dal campo `ruolo` (ruolo in campo) → mescola due concetti e il campo è testo libero. **Conseguenze** - Ogni lettura della rosa (client, server, SQL di voto e promemoria) va filtrata per `tipo`: un punto dimenticato rende l'allenatore votabile o lo conta tra i convocati. L'elenco sta nella specifica e va coperto dai test di `permessi.test.ts`. - Il trigger sugli slot cambia: `tipo` lo scrive solo l'admin; nome e cognome li scrive anche l'allenatore sul proprio slot. - `numero` diventa nullabile a database, ma solo per gli allenatori (vincolo di M21); nell'app resta un numero, 0 per l'allenatore, per non toccare i tipi di tutta la rosa. - Due fonti distinte, ciascuna per il suo scopo: i permessi (eventi, sollecito) da `user_roles`, la visibilità (badge, cacche, stagione) dal tipo del proprio slot, che è immediato e non aspetta la query dei ruoli. - L'allenatore non vede le tab Stagione e Badge del Profilo, né Obiettivi e Badge di Squadra. - In Squadra compare nella tab Rosa con «Allenatore» al posto del ruolo, ricavato da `tipo`; riceve i promemoria degli eventi (dal 29/09/2026 non più: DD-039) e può sollecitare le presenze, non il turno palloni. - Non vede badge né classifiche o sondaggi sulle cacche, in nessuna schermata. **Riesame** Se arriva un secondo tipo di staff (dirigente, segreteria) o se i filtri sulla rosa diventano fonte di bug, passare alla tabella `staff` separata.