# DD-042 — Turno palloni: un solo avviso, 3 ore prima **Data:** 1 ottobre 2026 **Stato:** Accettata (migration `m27`, applicata in produzione il 1 ottobre 2026; modifica la parte «turno palloni» di [DD-040](DD-040.md)) **Contesto** DD-040 manda l'avviso del turno palloni a 12, 6 e 3 ore prima dell'evento: tre messaggi identici per chi deve portare i palloni e per chi deve prenderli. Sono troppi per un'informazione che non cambia. **Decisione** 1. L'avviso automatico parte **una sola volta, 3 ore prima** dell'inizio (finestra «meno di 3 ore»), a chi deve portare i palloni («incarico assegnato») e a chi li deve prendere («riconsegna», se è un'altra persona). Testi, destinatari, push senza email e condizione dell'incaricato confermato restano quelli di DD-040. 2. La revoca resta: chi è stato avvisato e poi non è più destinatario riceve una sola volta «incarico revocato». Un evento creato o assegnato a meno di 3 ore dall'inizio riceve l'avviso al giro successivo del job. 3. **Migration `m27`:** `genera_avvisi_palloni()` chiama solo la fascia `turno_palloni_3h`. I tipi `turno_palloni_12h` e `_6h` **restano nei `CHECK`** e nella revoca, perché notifiche e righe di registro già generate li usano; non ne nascono di nuovi. 4. Il pulsante «Avvisa chi è di turno» non cambia. I solleciti presenze non cambiano qui (poi ridotti a uno, DD-045). **Alternative scartate** - Togliere i tipi `12h` e `6h` dai `CHECK` → le righe già generate in produzione non sarebbero più valide e la revoca non vedrebbe più chi ha ricevuto quegli avvisi. - Tenere anche un avviso a 12 ore → scartata su indicazione esplicita: uno solo. **Conseguenze** - Chi non apre l'app nelle 3 ore prima può non vedere l'avviso; la push è il canale principale. - Per le notifiche palloni già generate con DD-040 non cambia nulla. **Riesame** Se 3 ore risultano poche per procurarsi i palloni, alzare la finestra (una sola, mai più avvisi).