Changelog
19 ott 2026
featLe domande con dati personali non vengono più elaborate: se una domanda contiene nome e cognome, codice fiscale, email, telefono, IBAN, indirizzo di residenza o data e luogo di nascita, Zautte non la manda al modello, non la registra e invita a riformularla senza questi dati. Il limite giornaliero non viene toccato. Misura del parere del DPO.
19 ott 2026
dataTre nuove risposte dalle segnalazioni di oggi: segnalare topi o altri problemi in un parco (URP e app MUNICIPIUM), aprire un B&B (SUAP e S.C.I.A. per strutture ricettive extralberghiere) e restare aggiornati sui bandi (sezione Avvisi delle Novità e Albo pretorio). Tre fatti noti (n. 30-32).
18 ott 2026
featInformazioni sulle pagine per motori di ricerca e anteprime: le tre pagine pubbliche (accesso, «Come funziona» e pilota) ora dichiarano autore, descrizione, indirizzo canonico e dati strutturati, e condividendo un link compare un'anteprima con logo e titolo. Aggiunti anche l'immagine di anteprima e il file manifest.
16 ott 2026
featL'IP nel footer porta ai dati di rete: «Il tuo IP» in fondo a ogni pagina ora è un link che apre, in una nuova scheda, la pagina di RIPEstat con i dati di instradamento (RIS) di quell'indirizzo.
15 ott 2026
dataRicevuta di presentazione di una domanda: a chi chiede come avere la ricevuta quando presenta una domanda al Comune, Zautte ora spiega che allo sportello del protocollo è immediata e che per email o PEC arriva nella stessa casella da cui si invia, con orari e indirizzi (segnalazione di Alessandra Annunzi).
15 ott 2026
dataContributi per famiglie con figli: a chi chiede aiuti economici per una famiglia numerosa o con basso reddito, Zautte ora indica per primo l'avviso 2026 dell'Ambito 21 (domande entro il 20 ottobre alle 14, contributi da 300 euro per la natalità e per materiale sportivo, didattico e culturale dei figli minorenni, ISEE minorenni fino a 13.500 euro), invece di bandi degli anni scorsi. Precisa che non esiste un contributo specifico per «famiglia numerosa»: il numero dei figli conta come priorità a parità di ISEE.
15 ott 2026
dataQuattro segnalazioni risolte: albo degli scrutatori (Zautte non trovava la scheda; ora spiega requisiti, scadenza del 30 novembre e contatti), copia di una pratica (indica l'ufficio giusto: URP, Polizia Municipale o SUAP), contestazione di una multa (scritti difensivi entro 30 giorni, con l'avvertenza di controllare sul verbale l'autorità competente) e unione civile (contatti dello Stato civile e ripetizione della cerimonia). Commit 560d1ab.
14 ott 2026
fixPagina «Come funziona» allineata a ciò che succede davvero: non dice più che le domande sono cancellate in automatico (la cancellazione è ancora da attivare, in attesa dei tempi concordati con il responsabile della protezione dei dati), precisa che al fornitore del modello arrivano anche gli ultimi messaggi della conversazione e che li conserva di norma 30 giorni, e avverte che il commento dopo un 👎 non viene mascherato. Aggiornati anche i numeri del README. Aggiornate le librerie in produzione (anthropic 1.13, fastapi 0.143, pypdf 6.20).
12 ott 2026
featNotizie quasi in tempo reale: finora una notizia entrava in Zautte solo con il giro del lunedì notte, quindi poteva restare fuori fino a una settimana (il bando dei libri di testo dell'8 ottobre era stato aggiunto a mano). Ora ogni 15 minuti Zautte legge il Bollettino Ufficiale Municipale (bum.comunesbt.it) e le notizie del sito e indicizza subito gli articoli nuovi, la pagina gemella sul sito e gli allegati che citano (bando, modulo, avviso in PDF, ODT o DOCX), così risponde sia in generale sia nel dettaglio. Ogni articolo porta la data di pubblicazione, mostrata anche al modello. L'indice si ricarica a caldo, senza riavviare il servizio. Indicizzato anche tutto l'archivio del Bollettino dal 2021 (circa 2.600 articoli).
12 ott 2026
fixUn solo voto per risposta: ogni clic sul pollice aggiungeva un feedback (un collega ne ha registrati sei in quaranta secondi sulla stessa risposta), gonfiando i positivi nel riquadro «Feedback utenti». Ora un secondo voto dello stesso utente sulla stessa risposta sostituisce il primo, anche cambiando idea da 👍 a 👎, e il widget ignora il clic ripetuto sullo stesso pollice; i contatori applicano la stessa regola anche ai voti già registrati.
10 ott 2026
fixContatore dei feedback negativi: nel riquadro «Feedback utenti» i pollici giù continuavano a essere contati anche dopo che la segnalazione era stata marcata «✓ Risolto», così il numero (e il donut) non scendevano mai. Ora si contano solo le segnalazioni aperte; quelle risolte sono indicate a parte e il riquadro si aggiorna subito dopo ogni «✓ Risolto». feat Posta in uscita via Carbonio attiva: completato il passaggio annunciato l'8 ottobre, verificato con una consegna a Gmail (SPF, DKIM e DMARC superati).
8 ott 2026
featPosta in uscita via Carbonio: le email di Zautte (credenziali, segnalazioni, riscontri ai colleghi) partivano dal relay interno di SBTAP, che non firma i messaggi e il 7 ottobre aveva fatto rimbalzare un'email verso Gmail. Ora partono dal server di posta del Comune (Carbonio), con un account dedicato e connessione cifrata e autenticata; aggiunto il supporto per la porta 465 con TLS implicito. Le risposte continuano ad arrivare all'amministratore.
8 ott 2026
dataAliquote IMU 2026: alla domanda sull'aliquota IMU per i contratti di affitto a canone concordato Zautte citava la riduzione del 25% ma non sapeva da quale aliquota partire e rimandava all'ufficio. L'informativa IMU 2026 (PDF) è nell'indice ma non veniva scelta tra le fonti. Il fatto noto sull'IMU ora contiene la tabella completa delle aliquote 2026, le aliquote effettive per il canone concordato (inquilino con residenza, senza residenza, garage nel contratto), le esenzioni, le riduzioni, i codici tributo e i contatti del Servizio Tributi. Segnalazione di un collega del Servizio Tributi.
8 ott 2026
dataLibri di testo 2026/2027: il bando per la fornitura gratuita o semigratuita dei libri di testo (scuole medie e superiori, ISEE fino a 13.500 euro, domande entro il 10 novembre 2026) è uscito l'8 ottobre e Zautte conosceva solo l'edizione 2025/2026. Aggiunto un fatto noto con requisiti, fasce ISEE, modulo, modalità di consegna e contatti, e caricati nell'indice l'avviso, il modulo e la notizia senza aspettare l'aggiornamento settimanale del lunedì.
7 ott 2026
featRegistrazione delle risposte: finora si registrava solo la domanda, non ciò che Zautte aveva risposto, e per sapere cosa aveva letto un collega bisognava rifare la domanda. Ora ogni risposta viene salvata insieme alla domanda (testo, fonti e, se la risposta si è interrotta, un avviso) e nel log messaggi della vista amministratore la domanda si apre per leggerla. Le risposte seguono le stesse regole delle domande: stessa scadenza del testo e cancellazione su richiesta con la stessa procedura.
6 ott 2026
fixTest di installazione di Matomo: il pulsante «Test installation» di Matomo apre il sito con un codice di verifica nell'indirizzo, che andava perso in due punti: il rinvio dalla radice (bot.comunesbt.it/) alla pagina di accesso toglieva tutto ciò che segue il «?», e nel browser con la chiave amministratore le statistiche erano spente. Ora il rinvio conserva l'indirizzo completo e il test conta anche dal browser amministratore (solo la pagina del test; le visite normali da quel browser restano escluse).
6 ott 2026
featIl significato del nome: sotto il titolo c'è la riga «Cosa significa Zautte?»; con un clic si apre la spiegazione: nel dialetto sambenedettese «zautte» è il bracciante di mare, lo scaricatore di porto che porta a terra il pesce dalle barche appena rientrate e lo trasporta al mercato ittico. Chiusa occupa una sola riga, e i margini in alto sono un po' più stretti perché la chat non perda spazio. La stessa spiegazione è nella pagina Come funziona, nel paragrafo «Perché si chiama Zautte».
6 ott 2026
featStatistiche delle visite con Matomo: le pagine di Zautte (accesso e chat, Come funziona, pagina pilota) contano le visite sul nostro Matomo (sito n. 19), insieme ai link delle fonti cliccati sotto le risposte. Senza cookie, quindi senza banner, e mai il testo delle domande. Non conta le visite dal browser in cui è salvata la chiave amministratore. La pagina Come funziona e la bozza di informativa lo dicono.
6 ott 2026
fix«Torna a Zautte» nella pagina Come funziona: chi arrivava dal link «Accessibilità» del footer finiva in fondo alla pagina senza un modo per tornare indietro, se non il pulsante del browser. Ora c'è il link «← Torna a Zautte» in cima e in fondo alla pagina.
6 ott 2026
fixControlli di sicurezza del codice: l'analisi automatica di GitHub (CodeQL) ora controlla anche il codice che gira nel browser (la chat, la dashboard, il footer), non più solo quello del server. Ha trovato e sono stati corretti: nella vista amministratore un link o un titolo con le virgolette poteva uscire dal collegamento (per i link delle segnalazioni il server le scartava già), il link alla dichiarazione di accessibilità accetta solo indirizzi https://, piccole pulizie nel codice del limite giornaliero. Su GitHub sono attivi anche gli avvisi per le librerie con falle note e il modulo per segnalare in privato una vulnerabilità.
6 ott 2026
perfRicerca: prima le pagine, poi i PDF: con gli allegati delle schede del sito (1.584 PDF, 49.503 brani) la pagina giusta finiva più in basso tra i brani passati al modello. Ora, a pertinenza simile, le pagine scritte per i cittadini passano davanti ai PDF; moduli e regolamenti restano quando sono davvero più pertinenti. Sulle 100 domande di prova: pagina giusta tra i 7 brani 79 → 81, al primo posto 57 → 70, nessuna domanda persa. Escluse dal sito anche due tesi di laurea pubblicate tra gli allegati (escono dall'indice con l'aggiornamento completo del 1° novembre).
6 ott 2026
fixOllama 0.31.1: il programma che calcola i vettori per la ricerca è passato dalla 0.19 alla 0.31.1. Prima e dopo sono stati confrontati i vettori di 50 brani e 10 domande (praticamente identici) e le 100 domande di prova (stessi risultati), quindi l'indice resta valido senza ricalcolarlo.
6 ott 2026
fixIndirizzo principale: chi apriva solo https://bot.comunesbt.it/ riceveva un errore 404; ora arriva alla pagina di accesso.
6 ott 2026
featFooter su due righe: sotto release, ultimo commit, accessibilità e indirizzo IP, una seconda riga con «Powered by» SBTAP, «Served by» FreeBSD con il logo ufficiale (porta a freebsd.org), «IPv6 enabled» con il logo World IPv6 Launch dell'Internet Society e «Made with vi :wq» con un'icona da terminale; loghi tutti allineati sullo stesso asse. Crediti dei loghi in «Come funziona».
6 ott 2026
feat20 domande al giorno per utente: il limite non si conta più per indirizzo IP (20 l'ora, condivise da tutti i colleghi che escono su Internet dallo stesso indirizzo) ma per persona: 20 domande al giorno a testa, che ripartono da zero a mezzanotte. Il conteggio sopravvive ai riavvii del server e una domanda la cui risposta fallisce non viene contata. Chi arriva al limite legge «Hai raggiunto il limite di 20 domande al giorno. Potrai farne altre da domani.» invece dell'errore generico.
6 ott 2026
fixSicurezza del server: firewall attivo (in entrata solo SSH e API dalle reti di gestione e l'API dal bilanciatore di bot.comunesbt.it), la documentazione interattiva dell'API (/docs) non è più pubblica, permessi più stretti sui file con utenti, domande e chiavi, vecchie copie della configurazione spostate in un'area riservata, syslog senza porta di rete, impostazioni di sicurezza del sistema operativo e orologio sincronizzato (NTP). Corretti anche gli indirizzi IPv6 dei server DNS, scritti male.
6 ott 2026
featIndirizzo IP nel footer: in fondo a ogni pagina compare «Il tuo IP», l'indirizzo con cui il visitatore è collegato in quel momento, come lo vede il server dopo il bilanciatore. Se il server non risponde la voce non compare.
6 ott 2026
fixLog del server conservato un anno: il log dell'API, che ora contiene l'indirizzo IP di chi usa Zautte, ruotava solo sopra i 50 MB e quindi non era mai stato ruotato (cresceva da aprile). Ora ruota ogni giorno a mezzanotte, i file vengono compressi e quelli più vecchi di 365 giorni si cancellano da soli.
6 ott 2026
fixLimite di domande per persona: dietro il bilanciatore di bot.comunesbt.it l'API vedeva tutte le richieste arrivare dallo stesso indirizzo, quello del bilanciatore, quindi il limite di 20 domande l'ora era uno solo per tutti (il 16 giugno aveva fermato 27 domande con «troppe richieste»). Ora l'API accetta l'indirizzo del visitatore che il bilanciatore inoltra, solo se arriva dal bilanciatore, e il limite vale per ciascuno. Serve per aprire Zautte anche da Internet, fuori dalla rete del Comune; il login resta.
5 ott 2026
dataContributo affitti 2026: la scheda fissa sui contributi per l'affitto parlava ancora del bando 2025 (chiuso il 30 settembre 2025). Ora descrive il bando 2026 pubblicato dal Comune il 30 settembre: domande solo online con SPID o CIE dal 1° al 31 ottobre 2026 (entro le 23:59), requisiti (ISEE fino a 14.000 euro, canone fino a 650 o 750 euro), documenti, delega per chi è in difficoltà, sportello di assistenza su prenotazione, come si calcola il contributo e il link alla procedura online. Una domanda arrivata oggi sul bando aveva comunque ricevuto la risposta giusta, perché la notizia del bando 2026 era già nell'indice.
5 ott 2026
fixProva con VoiceOver e link «Accessibilità» nel footer: prima prova della chat con un lettore di schermo vero (VoiceOver su Mac): campi e pulsanti letti con il loro nome, risposta letta una volta sola e per intero, risposta in inglese con la voce inglese, titoli ed elenchi raggiungibili. La prova ha trovato un difetto, corretto: esplorando la chat dopo una risposta, il lettore incontrava una seconda copia nascosta della risposta. In fondo a tutte le pagine c'è ora il link «Accessibilità»; quando il Comune pubblicherà la dichiarazione di accessibilità sul modulo AgID diventerà «Dichiarazione di accessibilità».
5 ott 2026
fixRisposte con titoli ed elenchi veri: quando una risposta è divisa in sezioni o elenca documenti e passaggi, titoli ed elenchi sono ora titoli ed elenchi a tutti gli effetti (puntati, numerati, anche annidati), non più grassetto e righe con il trattino: si leggono meglio e chi usa un lettore di schermo può saltare da un titolo all'altro. Corretto anche un difetto dei link scritti dal modello nella forma [testo](indirizzo), che uscivano rotti. Il campo in basso ha l'etichetta «La tua domanda». Ogni modifica alla chat viene ora controllata in automatico anche per l'accessibilità.
5 ott 2026
fixChat più accessibile: primo controllo di accessibilità (obiettivo WCAG 2.1 AA, il livello richiesto alla pubblica amministrazione) e correzione dei 19 problemi trovati. Con i lettori di schermo la risposta viene letta una volta sola, intera, invece che a frammenti mentre arriva, e le risposte in inglese con la voce inglese; da tastiera la chat chiusa non «cattura» più il tasto Tab; 👍/👎 hanno un nome leggibile; i moduli di accesso e di segnalazione hanno etichette visibili; bordi e testi grigi (anche di questa pagina) sono più contrastati; le animazioni si fermano se nel sistema è attivo «riduci movimento». Restano da fare le prove con lettori di schermo veri e con persone con disabilità: lo stato aggiornato è in
ACCESSIBILITY.md.
5 ott 2026
perfUn solo processo per il servizio: giravano due copie di Zautte, una per le connessioni IPv4 e una per IPv6, ognuna con il proprio indice in memoria (circa 6 GB ciascuna) e le proprie statistiche, che si sovrascrivevano a vicenda: i numeri di questa pagina (domande, domande più frequenti, costi) erano parziali. Ora c'è una copia sola: statistiche coerenti e circa 6 GB di memoria liberati. fix Il file con le chiavi del servizio (e le sue copie di backup) è leggibile solo dal suo proprietario.
5 ott 2026
featDomande cancellabili su richiesta: se un collega chiede di cancellare una o più domande che ha fatto a Zautte, ora si tolgono da tutti i registri (messaggi, domande senza risposta, segnalazioni) senza fermare il servizio. Ogni domanda ha un codice di 12 caratteri che la lega a quei registri e alla sua eventuale segnalazione 👍/👎. fix Il registro tecnico del server non contiene più il testo delle domande, solo il codice (prima ne teneva l'inizio, senza scadenza). feat Saluti, ringraziamenti, complimenti e insulti («ciao», «grazie», «bravo», «sei inutile») ricevono una risposta breve e fissa: non passano più dal modello e non finiscono tra le domande senza risposta. Basta una parola di contenuto («grazie, e per la TARI?») perché la domanda segua il percorso normale.
5 ott 2026
dataAllegati delle schede del sito: moduli, delibere e condizioni di servizio collegati alle pagine del Comune stanno su server del fornitore del sito (Municipium) e non venivano scaricati, per esempio i moduli di richiesta del patrocinio e le delibere sull'organizzazione dei nidi. Dal prossimo aggiornamento del lunedì entrano nell'indice; lo stesso file, raggiungibile da quattro indirizzi diversi, viene indicizzato una volta sola. fix I PDF già noti non risultano più «rimossi» e riscaricati a settimane alterne (il 5 ottobre: 109 rimossi e 142 riscaricati).
5 ott 2026
fixFonti con nomi leggibili: tra le fonti i documenti PDF comparivano spesso con il nome del file salvato (es. «Engine_RAServeFile.php_f__Allegato_B_2022.pdf_bca21d565d62») o con titoli interni che non dicono nulla («COMUNE DI SAN BENEDETTO DEL TRONTO», «Layout 1», «Microsoft Word - …»). Ora il titolo si ricava dal nome del documento: «Rendiconto consolidato 2020», «Regolamento nidi e sezioni primavera comunali», «Determina di indizione procedura ed approvazione documenti di gara». Cambia per 2.418 PDF su 2.752. Per circa 340 documenti dal nome generico («Allegato B 2022», «DD 665-25») il titolo si legge nel documento stesso: la riga «Oggetto» di determine e delibere o il titolo in prima pagina, seguiti dal nome del file (es. «Piano Dettagliato degli Obiettivi P.D.O. 2022 (Allegato B 2022)»). Dagli oggetti si tolgono i riferimenti di legge e i codici CIG, così si legge subito cosa si acquista o si decide («Affidamento diretto, acquisto serbatoio da interro…»). Dal prossimo aggiornamento del lunedì il crawler salva anche il testo dei link che puntano ai PDF nelle pagine del sito («Slide suev» → «Slide della presentazione»): diventa il titolo quando è più descrittivo. La ricerca resta la stessa. Lo stesso documento raggiungibile con e senza «www.» ora compare una volta sola tra le fonti.
5 ott 2026
fixTitoli nelle risposte: quando la risposta era divisa in sezioni, nella chat comparivano i simboli ##, --- e > (per esempio «### Contatti» o «> ⚠️ Attenzione»); ora i titoli sono in grassetto, le separazioni sono una linea sottile e gli avvisi hanno un bordo a sinistra.
5 ott 2026
fixDomande di seguito dopo una risposta lunga: se la risposta precedente superava i 2000 caratteri, la domanda successiva finiva in errore; ora la parte oltre il limite viene tagliata e la conversazione prosegue. Nome completo del Comune: nelle istruzioni al modello compariva solo «Comune» (es. «contattare direttamente Comune»), ora «Comune di San Benedetto del Tronto». Lo script di avvio del servizio esportava il .env spezzando i valori con spazi; ora il file lo legge solo Python.
5 ott 2026
perfRicerca nei documenti più precisa: nuovo modello che trasforma testi e domande in vettori (bge-m3 al posto di mxbai-embed-large). Su 100 domande sui servizi del Comune la pagina giusta arriva al modello 80 volte invece di 58, ed è il primo brano trovato 43 volte invece di 12: migliorano per esempio oggetti smarriti, cambio di residenza, TARI, tassa di soggiorno, luce votiva, unioni civili, segnalazioni di buche e lampioni. Alle domande che non riguardano il Comune arrivano al modello meno di 2 brani invece di 7 (soglia minima di somiglianza 0,50). Tutti i 222.480 brani ricalcolati in 12 ore e scambiati nella notte del 5 ottobre con una pausa del servizio di 15 secondi, possibile grazie al nuovo processore della macchina virtuale (calcolo dei vettori circa 15 volte più rapido).
4 ott 2026
fixDashboard più compatta: la pagina dei colleghi sta tutta in una schermata, footer compreso, anche su un portatile 1366×768 e su un telefono di dimensioni normali; prima serviva scorrere di 70–230 px. Logo e titolo più piccoli, margini ridotti, nome ed «Esci» in alto a destra sugli schermi larghi; prima dell'accesso il riquadro della chat è alto quanto il modulo, dopo non scende sotto i 300 px. Nel modulo di accesso il titolo è «Accedi a Zautte» e il pulsante «Entra», al posto di due «Accedi».
4 ott 2026
featLogo di Zautte: il logo compare in testa alla dashboard (vista colleghi e amministratore), alla pagina «Come funziona Zautte» e alla pagina del pilota, al posto della scritta «Zautte —» nel titolo. È un'immagine vettoriale (SVG di 6 KB) ricavata dal disegno originale, nel blu del Comune: resta nitida su ogni schermo. Le lettere «ZA» del logo diventano l'icona tonda nell'intestazione della chat (al posto del logo SBTAP), l'icona delle pagine nella scheda del browser e quella per chi aggiunge la dashboard alla schermata Home del telefono. Nel footer, dopo «Powered by», c'è il logo di SBTAP al posto della scritta; davanti all'ultimo commit compare l'ultima release pubblicata su GitHub (oggi la prima, v0.1.0), con il link alle sue note.
3 ott 2026
fixUfficio giusto per alberi e siepi: alla domanda sul taglio di un pino in giardino l'assistente indicava il SUAP; ora indica il Servizio Aree verdi e cimitero, i moduli A, B e C e le specie protette (pino domestico e d'Aleppo dai 15 cm di diametro), e sa che la potatura delle siepi non richiede autorizzazione. L'ufficio suggerito si sceglie per parole intere: prima «contributi» portava ai Tributi e «extracomunitario» o «volontariato» alla TARI. data Nuovo fatto noto sul taglio e la potatura di alberi e siepi.
3 ott 2026
fixDi nuovo Claude Sonnet 4.6: con le domande a cui il sito non risponde, Sonnet 5.5 rispondeva quasi sempre con la frase fissa «Non ho trovato questa informazione… contattare direttamente l'organizzazione» e indicava meno spesso l'ufficio giusto. Istruzioni al modello riviste: quando manca l'informazione indica l'ufficio o la pagina pertinente e nomina il Comune; tiene conto della data di oggi (bandi e scadenze già passati); parla al cittadino senza termini tecnici; la riscrittura delle domande successive non aggiunge nomi di luoghi. data Nuovi fatti noti: planimetrie (catasto e accesso agli atti), contributi per l'affitto, ISEE, canali di informazione del Comune (Telegram e social).
3 ott 2026
featTitolo della pagina su due righe: «Zautte — Assistente virtuale» e «Comune di San Benedetto del Tronto» (nella scheda del browser su una riga). Nel riquadro introduttivo, centrato: «Accesso riservato a utenti autorizzati». Nuovo messaggio di benvenuto della chat. Modulo di accesso: «Accedi» centrato, senza la frase sul progetto pilota. Dopo l'accesso il riquadro introduttivo saluta per nome («Ciao Nome Cognome, fai le tue domande…») al posto di «Accesso riservato…» e dell'invito ad accedere.
3 ott 2026
featFooter visibile a tutti in ogni pagina (accesso, chat dei colleghi, vista amministratore, pagina pilota, «Come funziona»): ultimo commit su GitHub (letto all'apertura della pagina, con link al repository) e «Powered by SBTAP». perf Server aggiornato a FreeBSD 15.1 e librerie Python aggiornate (nessuna vulnerabilità nota).
3 ott 2026
perfModello Claude Sonnet 5.5 al posto di Sonnet 4.6: sulle stesse 40 domande del pilota risposte complete in 4 s invece di 8,5 s (mediana), circa l'11% in meno di costo, testi più asciutti; preferito in 5 confronti su 7. Ragionamento a sforzo basso (LLM_EFFORT=low); se il modello rifiuta una richiesta il widget mostra un messaggio che rimanda agli uffici. Si torna al modello precedente con CLAUDE_MODEL=claude-sonnet-4-6 nel .env.
3 ott 2026
featAvviso «Stai dialogando con un sistema di intelligenza artificiale» sotto il messaggio di benvenuto (sempre presente, anche con benvenuto personalizzato), badge «IA» nell'intestazione e «Risposte generate dall'IA» nel footer, con contrasto del testo più leggibile (AI Act, art. 50). Link facoltativi a «Come funziona» e all'informativa privacy (infoUrl, privacyUrl); nuova pagina come-funziona.html.
3 ott 2026
featDati personali mascherati: codice fiscale, IBAN, carte, email e telefoni scritti nelle domande vengono sostituiti da un segnaposto prima dell'invio al modello e della registrazione nei log e nei feedback (le risposte del bot nella cronologia restano intatte). Scadenza dei log: scripts/purge_logs.py (cron giornaliero) toglie il testo delle domande dopo 90 giorni e cancella le voci oltre 12 mesi (domande senza risposta: 6 mesi).
3 ott 2026
featClaude su AWS Bedrock (LLM_PROVIDER=bedrock, profilo UE da Milano), pronto per il passaggio a un servizio qualificato ACN con elaborazione in UE. fix temperature passata in modo compatibile con la libreria anthropic 1.x; costi Haiku 4.5 corretti (1/5 $ per milione di token).
2 ott 2026
featPulsante «Esci» nella pagina: titolo, descrizione (giustificata nel riquadro), modulo di accesso e chat sono centrati nella pagina. Dopo l'accesso, sotto il titolo compaiono il nome del collega e il pulsante «Esci», che riporta al modulo di login. In vista amministratore «Esci» dimentica anche la chiave admin e torna alla vista collega.
2 ott 2026
featAccesso diretto alla chat: la pagina dei colleghi mostra solo titolo, descrizione e il modulo di accesso; dopo il login Zautte compare già aperto nella pagina, senza il pulsante flottante (nuova opzione inline del widget). Un token scaduto riporta subito al login invece di far perdere la prima domanda. La vista amministratore si apre con dashboard.html#admin.
28 set 2026
dataServizi online del Comune: alla domanda «dove trovo i servizi online per presentare una domanda?» Zautte rispondeva di non avere una pagina. Nuovo fatto noto con il catalogo completo dei servizi (sezione «Accedi al servizio» in ogni scheda), il portale delle istanze telematiche con accesso SPID/CIE/CNS e l'elenco delle domande oggi presentabili online, gli sportelli SUAP, SUE e SUEV, Cityportal, prenotazioni e segnalazioni. Da una segnalazione di un collega.
28 set 2026
perfDashboard più reattiva e codice allineato al lint: le viste amministratore che leggono il log d'uso e il log del sync (decine di MB) non bloccano più le risposte del bot durante la lettura. I timestamp registrati includono ora il fuso orario, le eccezioni sono gestite in modo mirato e loggate con il dettaglio. Adottate le regole di ruff 0.16: la CI su GitHub torna verde dopo settimane. Aggiornati i requisiti minimi delle librerie (Dependabot); numpy 2.5 rinviato perché richiede Python 3.12.
26 set 2026
dataMatrimonio civile: fatto noto con pubblicazioni, documenti, testimoni, sedi (sala De Gasperi, Palazzina Azzurra, Piacentini), tempi e costi; «sposarsi» e «nozze» riconosciuti come sinonimi di «matrimonio». Da una segnalazione di un collega.
24 set 2026
dataCarta d'identità: durata e validità: il fatto noto CIE spiega ora la validità di 10/5/3 anni per fascia d'età, i 3 anni per i richiedenti asilo (validi solo in Italia) e i documenti per cittadini comunitari ed extracomunitari. Da una segnalazione di un collega.
23 set 2026
featDomande di seguito capite nel contesto: nelle conversazioni a più turni («e quali sono i requisiti?») la ricerca usava solo l'ultima frase e perdeva l'argomento. Ora la domanda viene riscritta dal modello con il contesto precedente prima di cercare nella base di conoscenza. Aggiunto il fatto noto sul trasporto pubblico agevolato (DGR 1303/2024).
18 set 2026
dataRinuncia di proprietà del cane: fatto noto su ricovero nel canile comprensoriale, ufficio competente e contatti (AMS, canile, anagrafe canina). La scheda con il modulo non è pubblicata online.
16 set 2026
fixZero chunk senza vettore: Ollama rifiutava i testi troppo densi di token anche con il troncamento richiesto; ora il testo viene accorciato lato client (800/500/300 caratteri) e i 5.861 chunk residui sono stati riparati. Tutti i contenuti sono di nuovo raggiungibili dalla ricerca semantica.
16 set 2026
dataAtti del Comune: fatto noto con i link di ricerca su Nuvola per decreti del Sindaco, ordinanze, determine, delibere e albo pretorio. Da una segnalazione di un collega.
14 set 2026
featSegnalazioni dal widget: dopo un 👎 compare un modulo con commento libero e fino a 5 link alle pagine con l'informazione corretta (POST /feedback/detail). Ogni feedback registra anche il nome del collega; la vista amministratore mostra autore, commento e link accanto a ogni feedback negativo, e l'amministratore riceve un'email automatica per ogni segnalazione (FEEDBACK_NOTIFY_EMAIL). Quando la segnalazione viene marcata "✓ Risolto", il collega riceve un'email di riscontro con una nota facoltativa (le risposte arrivano all'amministratore). Non serve più scrivere email.
14 set 2026
fixCrawler senza cookie: su turismo.comunesbt.it il cookie del plugin Post Views Counter cresceva a ogni pagina fino a superare il limite di Apache (8 KB), da lì 400 Bad Request su tutto il sito: 93 PDF salvati come pagine di errore e pagine perse dal crawl. Ora i cookie non vengono conservati, i PDF sono validati (%PDF) e i file non validi vengono riscaricati.
14 set 2026
fixSync più veloce e chunk riparati: il full sync riembedda solo i chunk cambiati e salva ogni 30 minuti invece di due volte per documento (prima durava 6,6 giorni). Il fallback di embedding ora tronca a 512 token: 14.896 chunk (6%) avevano vettore zero ed erano invisibili alla ricerca semantica. Aggiunti 8 GB di swap; il full mensile usa lo stesso lock dell'incrementale.
20 lug 2026
featAutenticazione utenti: accesso con email e password (progetto pilota a gruppo ristretto). Il bot risponde solo agli utenti autenticati.
20 lug 2026
featCredenziali via email: creando un account il collega riceve automaticamente le proprie credenziali. Aggiunto "Password dimenticata?" per il reset self-service (nuova password via email).
20 lug 2026
featDashboard a doppia vista: i colleghi vedono solo l'assistente (con login); le statistiche sono riservate alla Vista amministratore (🔓 chiave admin).
20 lug 2026
featTracciamento uso per utente: riquadro «Utenti» (registrati/attivi, messaggi, ultimo accesso) e «Log messaggi utenti» (testo della domanda, orario e utente).
20 lug 2026
fixProtezione dashboard e dati: /health pubblico ora minimale; statistiche, storico crawling e feedback accessibili solo con chiave admin (prima erano visibili a chiunque conoscesse l'URL).
25 giu 2026
featRisposte dirette su nuovi temi: pagamento TARI (modello F24, Ufficio Tributi) e Responsabile Protezione Dati / DPO come known_fact; indicizzati i documenti ufficiali su orari degli uffici, volontariato (Albo volontari civici) e segnalazione disservizi/buche (app Municipium e modulo online).
25 giu 2026
featSinonimi: intento orari (aprono/apertura → orari), dpo ↔ rpd, volontariato ↔ albo volontari, buca/segnalazione → disservizi/Municipium in config/synonyms.json.
25 giu 2026
fixCitazioni dei known_fact: corretto l'URL della fonte (prima vuoto per i fatti con source). Aggiunto il logging dei gap "deboli" (recuperi fuori tema) in gaps.jsonl.
25 giu 2026
featDashboard: rimossa la sezione «Ultime domande senza risposta» (le query senza risposta restano tracciate via /gaps e nella statistica «senza risposta»).
18 giu 2026
featDashboard: bottone "✓ Risolto" su ogni voce di feedback negativo — chiama POST /feedback/resolve (admin), la voce scompare con fade e viene esclusa dai carichi successivi (data/resolved_negative.json).
18 giu 2026
featSinonimi TARI pagamento: aggiunti unica soluzione, pagamento unico, rate tari, pagare tari in config/synonyms.json. Fix retrieval per query come "posso pagare la TARI in unica soluzione?". Aggiunto inbox document focalizzato per risposta diretta.
15 giu 2026
fixCrawler: esclusi URL con ?pub_token= da sanbenedettodeltronto.nuvolapalitalsoft.it — il portale Italsoft incorpora token di sessione in ogni link generando URL infiniti (runaway 14h+, oltre 64.000 URL per la stessa pagina).
14 giu 2026
featSinonimi giunta comunale: giunta, composizione, assessori, vicesindaco, sindaco → mapping verso termini presenti nei documenti. Fix retrieval per query sulla giunta Mozzoni 2026.
13 giu 2026
featAggiunto sanbenedettodeltronto.nuvolapalitalsoft.it come extra start URL (portale NuvolaPA/Italsoft: Amministrazione Trasparente, albo online, SUAP — non linkato dai siti principali).
28 mag 2026
perfIndexer: skip embedding quando tutti i chunk di una pagina sono già nel VS invariati (all_chunks_exist su ID deterministici MD5). Riduce drasticamente il tempo di Phase 2 per pagine non modificate nei sync incrementali.
24 mag 2026
fixSync: riavvio API via SIGKILL al termine di ogni sync (_restart_api()) per ricaricare dal disco il vector store aggiornato. Prima del fix l'API continuava a servire lo stato iniziale anche dopo ore di indicizzazione.
24 mag 2026
featCrawler: turismo.comunesbt.it aggiunto come extra start URL tramite config/crawl_extra.json (il sito del turismo non è linkato dal sito principale e non veniva raggiunto dal crawl).
22 mag 2026
fixEmbedder: strip caratteri di controllo ASCII (\x01–\x1f, esclusi tab/LF/CR) dai testi estratti da PDF prima dell'embedding, per prevenire errore HTTP 400 su /api/embed di Ollama.
18 mag 2026
featFull sync senza downtime: rimosso clear_collection() dal flusso full. Ogni sorgente viene sostituita atomicamente con replace_existing=True; l'indice resta consultabile per tutta la durata della reindicizzazione.
4 mag 2026
fixEmbedder: retry con backoff esponenziale (1s/2s/4s, 3 tentativi) su errore HTTP 500 di Ollama prima di salvare vettore zero. Nuova modalità sync reembed per ri-embedare i chunk con vettore zero già presenti nell'indice.
26 apr 2026
featAvviso privacy nel footer del widget: "Non inserire dati personali nella chat" (sempre visibile, bilingue).
26 apr 2026
featDashboard: nuova sezione "Domande con feedback negativo" — endpoint /feedback/negative pubblico (solo question+ts, nessun dato personale), caricamento automatico senza chiave admin.
26 apr 2026
featAggiunte 5 domande preimpostate nel widget.
25 apr 2026
featAggiunto link al codice sorgente su GitHub nel footer del pannello.
29 apr 2026
fixSecondo crawl runaway su turismo.comunesbt.it (calendario eventi con parametri data, 4GB RAM in 5h): killato; aggiunti pattern di esclusione tribe-bar-date=, ical=1, outlook-ical=, eventDate=; limite profondità 4 per turismo.comunesbt.it; puliti 2.801 URL spuri da crawl_state.json e 2.860 pagine da index.json. Fix bug \n nel log di completamento crawl che impediva il corretto parsing dello storico nel pannello.
28 apr 2026
fixCrawl bloccato da /Organigramma-Servizio/ (355k pagine in 39h, 5GB RAM): processo killato, pattern aggiunto alle esclusioni insieme a /Organigramma/; aggiunto limite di profondità 8 per www.comunesbt.it; puliti 178k URL spuri da index.json e crawl_state.json.
25 apr 2026
featRimossi tutti i riferimenti a "comune/PA" dai default del codice: prompt di sistema, widget (titolo, welcome, noInfo, WIDGET_ID), sinonimi spostati in config/synonyms.json, testi RAG ora neutrali.
25 apr 2026
featWidget reso agnostico: rimossi defaults SBT (subtitle, welcomeIt/En, email hardcoded); aggiunto parametro contactEmail; WIDGET_ID rinominato in comunale-chatbot.
25 apr 2026
featCodice reso agnostico rispetto all'ente: SITE_URL, SITE_NAME, CRAWL_ALLOWED_DOMAINS ora da .env; _OFFICE_MAP e _KNOWN_FACTS esternalizzati in config/offices.json e config/known_facts.json; override crawl in config/crawl_extra.json.
25 apr 2026
featGrafici nel pannello: donut feedback (positivi/negativi), barre orizzontali top query, barre costo giornaliero API.
25 apr 2026
featPulizia automatica sorgenti stale: dopo ogni crawl incrementale, i chunk HTML non più presenti sul sito vengono rimossi dal vector store.
25 apr 2026
featDomande senza risposta: aggiunto timestamp per ciascuna entry (ora l'API restituisce oggetti {ts, query} invece di semplici stringhe).
25 apr 2026
fixLayout query lunghe: aggiunto min-width:0; overflow:hidden alla classe .card — il grid item ora non supera la larghezza della colonna.
25 apr 2026
fixRimossa sezione "Domande di esempio" da questa pagina.
25 apr 2026
featToken tracking e monitoraggio costi API Anthropic per ogni query.
25 apr 2026
featStorico crawling e indicizzazione con barre di avanzamento in questa pagina.
25 apr 2026
fixWidget: regex URL ora si ferma correttamente alle entità HTML escaped (") evitando href malformati con attributi HTML accodati alle URL.
25 apr 2026
featSinonimi estesi: gazebo, cosap, occupazione suolo pubblico, banchetto, dehors, raccolta firme — ora mappati verso i termini usati nei documenti indicizzati, con suggerimento Ufficio COSAP.
22 apr 2026
dataAvviata indicizzazione completa PDF (1.540 documenti). Vector store passa da 100k a ~153k chunk attesi.
20 apr 2026
dataSync HTML completo: 29.571 pagine indicizzate, vector store a 100.682 chunk.
16 apr 2026
fixService rc.d: kill -0 sostituito con ps -p nel controllo stato (evitava falso "not running" per processi root). Log rotation estesa (100 MB, 14 copie).
15 apr 2026
fixCrawler: aggiunto limite CRAWL_MAX_PAGES=50.000 e escluso /Organigramma/ (generava URL quasi-infiniti — 228k pagine in un solo run). Pulizia cache: rimossi 187.764 file.
13 apr 2026
featWeb fallback: query temporali ("quando", "data", "2026") attivano ricerca live su /it/ajax del sito indicizzato prima di rispondere "non so".
13 apr 2026
fixCrawler: aggiunto timeout asyncio su ogni richiesta HTTP (il timeout httpx proteggeva solo i chunk, non l'intera connessione — causava blocchi indefiniti su server lenti).
09 apr 2026
featHybrid search BM25 + cosine similarity con RRF. Query expansion con sinonimi municipali. Re-ranking con boost titolo/categoria. MIN_SIMILARITY abbassato a 0.38.
08 apr 2026
featPrima versione operativa: crawler, embedder (mxbai-embed-large), vector store numpy custom, API FastAPI + streaming SSE, widget JS embeddabile.