Telemetria Anonima
SagraFacile Community Edition invia statistiche d’uso anonime per capire quali funzionalità vengono effettivamente utilizzate e su cosa concentrare lo sviluppo. Sono solo conteggi: nessun dato personale lascia mai la tua installazione.
La versione Cloud non usa questo meccanismo: i dati di utilizzo sono già nella piattaforma.
Cosa non raccogliamo mai
Questo elenco è vincolante. Nessuno di questi valori compare nel messaggio inviato, in nessuna forma:
- Nomi, cognomi, indirizzi email, numeri di telefono
- Nomi dell’organizzazione, degli eventi, delle aree o delle postazioni
- Il menu: nomi dei prodotti, categorie, prezzi
- Contenuto degli ordini, importi, incassi, dati fiscali
- Nome host, indirizzo IP, dominio configurato
- Credenziali, token, chiavi API
- Log applicativi
Quando viene inviato
- Una volta all’avvio dell’API, dopo circa un minuto
- Poi una volta al giorno, finché il sistema resta acceso
- Un ultimo invio quando disinstalli con
--uninstall(vedi Disinstallazione)
Se l’invio non riesce — rete assente, server irraggiungibile — l’errore viene ignorato e si riprova al ciclo successivo. La telemetria non rallenta né blocca mai l’avvio o l’arresto del sistema.
Le build di sviluppo locali non inviano nulla: solo le immagini prodotte dalla pipeline ufficiale sono considerate valide.
Cosa viene inviato
Identità
| Campo | Contenuto | Perché |
|---|---|---|
instanceId | UUID casuale dell’installazione | Distinguere 10 installazioni che pingano una volta al giorno da 1 installazione che pinga dieci volte. Non è collegato a te né ai tuoi dati. |
dbInstanceId | Secondo UUID casuale, conservato solo nel volume PostgreSQL | Riconoscere una cartella d’installazione copiata su una seconda macchina: instanceId viaggia con la cartella, questo no. |
idSource | file, db-adopted, new oppure db-fallback | Sapere da dove è arrivata l’identità (vedi Il file di identità). Serve a verificare che un aggiornamento non abbia azzerato le installazioni già note. |
Versione e ciclo di vita
| Campo | Contenuto | Perché |
|---|---|---|
version | La versione CE in esecuzione | Sapere quante installazioni restano su versioni vecchie prima di rimuovere una funzionalità. |
channel | release per una versione rilasciata, edge per una build di sviluppo | Separare le installazioni reali dai test interni. |
lifecycle | startup, periodic oppure goodbye | Distinguere un riavvio da una disinstallazione. Senza questo campo, un sistema spento a fine sagra e uno rimosso definitivamente sono indistinguibili. |
firstInstallVersion | La versione con cui l’identità è stata creata | Capire da quale versione parte chi installa oggi. |
schemaVersion | Attualmente 3 | Permette di far evolvere il formato senza rompere le installazioni non aggiornate. |
Dimensione della configurazione
| Campo | Contenuto |
|---|---|
orgsCount | Numero di organizzazioni |
areasCount | Numero di aree |
eventsCount | Numero di eventi |
activeEventsCount | Numero di eventi in stato attivo |
menuItemsCount | Numero di voci di menu |
Sono conteggi: quante aree, non come si chiamano.
Funzionalità in uso
| Campo | Contenuto |
|---|---|
features.kdsEverUsed | Se esiste almeno una postazione KDS |
features.printingEverUsed | Se esiste almeno una stampante configurata |
features.preordineLinked | Se almeno un’area è collegata a SagraPreOrdine |
Tre booleani. Servono a sapere se una funzionalità viene configurata o solo ignorata.
Attività
| Campo | Contenuto |
|---|---|
activity.operationalOrdersLast7Days | Ordini negli ultimi 7 giorni |
activity.operationalOrdersLast30Days | Ordini negli ultimi 30 giorni |
activity.totalOperationalOrders | Ordini totali |
activity.lastOperationalOrderAt | Data e ora dell’ultimo ordine, se esiste |
Sono conteggi di ordini non annullati e non pre-ordine. Il contenuto degli ordini e gli importi non vengono letti. Servono a distinguere un’installazione in produzione durante una sagra da una lasciata accesa e mai usata.
Ambiente
| Campo | Contenuto |
|---|---|
environment.osFamily | linux, windows, macos oppure unknown |
environment.isContainer | Se l’API gira dentro un container |
Due valori grossolani, utili per sapere su cosa vale la pena fare i test. Non includono versione del sistema operativo, nome host né architettura.
Come disattivarla
Imposta questa variabile nel file .env della tua installazione:
SAGRAFACILE_TELEMETRY_DISABLED=trueIl file .env viene rigenerato da start.sh a ogni avvio a partire da sagrafacile_config.json.
Modificarlo a mano non basta: rispondi “yes” alla domanda sulla telemetria nella sezione avanzata di
start.sh (o start.bat), oppure imposta "SAGRAFACILE_TELEMETRY_DISABLED": true direttamente in
sagrafacile_config.json.
Con la telemetria disattivata non viene inviato nulla: né i ping periodici, né quello di disinstallazione.
Il file di identità
L’identificativo anonimo dell’installazione è conservato in data/instance.json, nella cartella
d’installazione, montata nel container come /app/data. È anche rispecchiato nel database.
Questo significa che l’identificativo sopravvive a:
- la ricreazione dei container
- un
docker compose down -v, che cancella il volume del database - un ripristino da backup o uno spostamento su un altro server
Prima viveva solo nel database, quindi ogni ripristino faceva risultare la stessa installazione come nuova. Ora un ripristino resta la stessa installazione.
Il campo idSource racconta quale dei due archivi ha risposto:
| Valore | Significato |
|---|---|
file | Letto da data/instance.json. È il caso normale. |
db-adopted | Il file non c’era, l’identificativo già presente nel database è stato ripreso e scritto su disco. È quello che succede aggiornando un’installazione precedente. |
new | Nessuno dei due archivi aveva un identificativo: installazione nuova. |
db-fallback | Il file non è scrivibile (per esempio con un mount in sola lettura), quindi vale il database. |
Per azzerare completamente l’identità servono entrambe le cancellazioni: il file
data/instance.json e il volume del database.
Disinstallazione
./stop.sh --uninstallSu Windows, stop.bat --uninstall.
L’operazione elimina definitivamente il volume del database — con tutti gli ordini, i menu e i report
— i media caricati e la cartella ./data. Non è reversibile: fai un backup prima, se pensi di poterne
avere ancora bisogno.
Prima di rimuovere qualsiasi cosa viene inviato un ultimo ping anonimo, con lifecycle uguale a
goodbye. Contiene solo instanceId, version, lifecycle e schemaVersion: serve unicamente a
distinguere una disinstallazione da un sistema semplicemente spento a fine stagione.
Se la telemetria è disattivata, questo invio non avviene.
Dove vengono inviati i dati
I dati vengono inviati a https://api.sagrafacile.it/api/ce-telemetry e sono usati solo
internamente: non vengono condivisi con terze parti né usati per profilazione pubblicitaria.
Le versioni CE più vecchie inviano a app.sagrafacile.it, che inoltra /api/ce-telemetry a
api.sagrafacile.it. L’inoltro è permanente, quindi anche le installazioni non aggiornate
continuano a funzionare.