# DD-025 — Il promemoria palloni lo manda l'admin, per un evento **Data:** 6 settembre 2026 **Stato:** Accettata **Codice:** `src/lib/palloni-core.ts`, `src/routes/api/public/promemoria-palloni.ts` **Contesto** `promemoria-palloni` era disegnata per un cron quotidiano: calcolava chi è di turno **oggi** e gli mandava una push. DD-024 l'aveva chiusa con un segreto condiviso, coerente con quel disegno. Ma nel repository non c'è nessun cron, e `docs/modules/palloni.md` lo annotava già come «da verificare lato hosting»: nei fatti quel promemoria non è mai partito. Una route che funziona e che nessuno chiama. Nel frattempo l'app aveva già il precedente giusto: `apri-sondaggio` è manuale fin dall'inizio («Nessun cron: l'invio è manuale», CHANGELOG). **Decisione** Il promemoria lo fa partire un amministratore dal pulsante «Avvisa chi è di turno», dentro il riquadro palloni della pagina evento. La route accetta un `eventoId` e avvisa i destinatari di **quell'evento** — chi deve prendere i palloni e chi deve riportarli — invece della giornata corrente. Il controllo di accesso diventa `richiediAdmin` come le altre due, e `richiediSegreto` con la sua variabile `CRON_SEGRETO` spariscono. Il testo dell'avviso viaggia dentro la push, cifrato nel payload (DD-026): il service worker lo mostra così com'è, quindi un avviso mandato il martedì per il sabato arriva col testo giusto. **Alternative scartate** - Un pulsante «manda il promemoria di oggi» in Dashboard → rispecchia la route com'era, ma premuto un martedì qualsiasi risponderebbe «inviate: 0» e sembrerebbe rotto. L'admin ragiona per evento, non per giornata. - Tenere il cron e configurarlo davvero → più lavoro, una variabile d'ambiente da gestire in ogni ambiente, e nessuno l'aveva chiesto. Un pulsante che funziona batte uno scheduler che non esiste. - Calcolare il testo al volo sulla giornata corrente → funziona solo se l'avviso parte il giorno stesso, cioè proprio il vincolo da cui volevamo uscire. **Conseguenze** - Il promemoria è ora una scelta consapevole di un admin, non un automatismo: se nessuno preme il pulsante, non parte niente. È un passo indietro rispetto all'idea originale, ma un passo avanti rispetto alla realtà, dove non partiva mai. - `destinatariPromemoriaPalloni()` non è più usata dalla route ma resta in `palloni-core.ts`. - Sparisce `CRON_SEGRETO`: nessuna variabile d'ambiente nuova da configurare in nessun ambiente. **Riesame** Se la squadra si accorge che l'admin si dimentica di premere il pulsante. A quel punto il cron torna utile, e con lui il segreto: DD-024 descrive già come farlo. --- **Aggiornamento (30 settembre 2026)** — DD-040 affianca al pulsante un invio automatico (poi ridotto a uno solo, 3 ore prima, da DD-042), per gli eventi con un incaricato confermato; il pulsante e la route restano.