Dati sintetici — nessuna persona reale
Comune di Bologna

Come calcoliamo il livello di allerta

Come funziona il bollettino ministeriale

Bologna è tra le 27 città italiane — capoluoghi di regione e comuni sopra 200.000 abitanti — per le quali il Ministero della Salute pubblica ogni giorno un bollettino di allerta ondate di calore. Il livello che vedi nella pagina pubblica di Bologna è quello ministeriale: non lo stimiamo noi.

Le soglie del bollettino sono calibrate sulla mortalità storica di ciascuna città: vent'anni di dati epidemiologici che collegano temperatura, ricoveri e decessi. È la differenza che fa di questo un bollettino sanitario, non una lettura statistica del meteo.

Il bollettino esce dal lunedì al venerdì dalle ore 11, per tre orizzonti: il giorno stesso, domani e dopodomani. Il bollettino di venerdì copre il weekend con gli orizzonti a 48 e 72 ore. È pubblicato da maggio a settembre (nel 2026 la finestra dichiarata dal Ministero è dal 25 maggio al 20 settembre; le date esatte cambiano ogni anno).

Il bollettino non esce tutti i giorni: solo dal lunedì al venerdì, e solo nella stagione di pubblicazione. Nei giorni scoperti — una mancata pubblicazione, i mesi fuori stagione — Bologna resterebbe senza livello. Per questo il sistema ripiega sulla stima statistica, la stessa che usa per i comuni fuori dalle 27 città.

Quando succede, il badge lo dice: da «bollettino del Ministero» diventa «livello stimato · non ufficiale». La fonte non cambia mai in silenzio.

Il file sorgente è pubblicato in formato aperto dal collettivo civico onData su GitHub. Il nostro cron lo scarica e lo legge ogni giorno.

Il metodo di stima, usato dove il bollettino non arriva, è documentato in /parma/metodo.

Dove il progetto usa un modello di linguaggio e dove no

Un'architettura che sa dove fermarsi è più credibile di una che mette l'LLM ovunque. In Bologna l'intelligenza artificiale interviene in tre punti: due sulla pagina pubblica, uno sulla dashboard del coordinatore. Tutti e tre con fallback silenzioso — se il modello non risponde, il blocco semplicemente sparisce e il resto della pagina resta.

Dove usiamo un modello (dichiarato accanto al testo, come vuole l'art. 50 dell'AI Act, oltre che qui):
  • La frase «allerta città» in cima alla pagina pubblica, dentro la card colorata del livello. Parla della città intera — livello di oggi, previsioni a 48 e 72 ore quando ci sono, notti tropicali consecutive.
  • Il consulente locale quando scegli un quartiere sulla pagina pubblica. Dice dove andare per stare al fresco — nome, distanza, orari dei punti che il codice ha già scelto per quel quartiere. Non ordina, non inventa numeri, non attribuisce orari che non gli abbiamo passato.
  • Il riassunto della giornata sulla dashboard del coordinatore (non visibile sulla pagina pubblica). In poche righe racconta cosa è successo oggi — contatti fatti, esiti, sintomi rilevati. Descrive numeri già calcolati, non li produce.
  • La sintesi vocale accanto ai tre testi qui sopra: un pulsante di ascolto legge il testo con una voce sintetica. Il motore è Piper (voce it_IT-paola-medium), modello neurale che gira sul server della stessa istanza: nessun testo viene inviato a servizi esterni per essere letto. È un modello, ma locale — e la differenza è il punto.
Dove NON usiamo un modello (deterministico, senza chiamate API, dove l'affidabilità conta):
  • Il livello di allerta: viene direttamente dal Ministero della Salute; per i comuni fuori dalle 27 città è calcolato statisticamente su Open-Meteo, documentato in /parma/metodo. Un modello non stima un livello di allerta meglio di questi metodi.
  • Il profilo del quartiere (persone per famiglia, abitazioni per edificio, distanza dal parco): sono aggregati del censimento ISTAT 2021 e distanze calcolate da PostGIS su geometrie OpenStreetMap. Dati fissi, non generati.
  • Le raccomandazioni sanitarie (bevi acqua, chiudi le persiane, ecc.): testo fisso preso dalle indicazioni ufficiali. Se un modello le riscrivesse ogni volta, prima o poi ne ometterebbe una e nessuno lo intercetterebbe.
  • I punti freschi e le distanze nella mappa e nell'elenco: elenco OpenStreetMap + Comune di Bologna (biblioteche), distanze in linea d'aria calcolate da PostGIS. Il modello non sceglie quali punti mostrare — quello è codice.

Clic su un pallino: nome, tipo, orari se noti. Dove gli orari non sono nel dato è scritto “verifica gli orari” — meglio che presumere un'apertura che non c'è.

Ogni testo generato porta accanto la dichiarazione «Testo generato con il supporto di intelligenza artificiale», sotto il testo stesso. È una scelta coerente con l'art. 50 dell'AI Act (Regolamento UE 2024/1689): i testi generati che informano il pubblico su questioni di interesse pubblico devono essere dichiarati in modo chiaro e contestuale, non nascosto in una pagina legale. L'etichetta compare accanto al testo perché è lì che il cittadino la incontra.

Fonti dei dati

  • Temperature: Open-Meteo. I dati sono rilasciati con licenza CC-BY 4.0; l'uso gratuito dell'API è riservato a impieghi non commerciali, con tetto di 10.000 chiamate al giorno. I termini di Open-Meteo considerano non commerciale l'uso da parte di enti pubblici e organizzazioni senza scopo di lucro — chi installa in un contesto diverso deve verificare le condizioni.
  • Bollettino ufficiale del Ministero: pubblicato per 27 città in formato aperto da onData (licenza CC-BY 4.0).
  • Basi territoriali del quartiere: censimento ISTAT 2021 (licenza CC-BY 4.0).
  • Distanze dai parchi e punti freschi (biblioteche, farmacie, centri commerciali, centri sociali, chiese, fontanelle, casette dell'acqua, parchi): OpenStreetMap contributors (ODbL 1.0).
  • Biblioteche comunali e aree statistiche di Bologna: portale open data del Comune di Bologna (licenza CC-BY 4.0).

← Torna alla pagina pubblica di Bologna