Adesso
Attivi in questo momento
—
ultimi 5 minuti live
Attivi oggi
—
—
Attivi nel periodo
—
—
Costo stimato periodo
—
dai consumi contati stima
Chi usa cosa
| App | Attivi oggi | Attivi periodo | Aperture | Azioni | Costo stimato | Stato |
|---|---|---|---|---|---|---|
| Nessun dato nel periodo. | ||||||
Attività giorno per giorno
—
Dettaglio per app
Funzioni più usate
| Funzione | App | Volte | Utenti | Peso |
|---|---|---|---|---|
| Nessun dato. | ||||
Chi lavora — utenti per ruolo
| Ruolo | Utenti attivi | Azioni | Azioni per utente | |
|---|---|---|---|---|
| Nessun dato. | ||||
Iscritti e ritenzione
Nuovi nel periodo
—
primo accesso dentro il periodo
Mai tornati
—
un solo giorno di attività
Tornati entro 7 giorni
—
ritenzione a 7 giorni
Tornati entro 30 giorni
—
ritenzione a 30 giorni
Calcolato sulle schede utente costruite dall'aggregatore: primo accesso, ultimo accesso e giorni attivi sono valori esatti, non campioni. Un iscritto entrato ieri non può ancora avere una ritenzione a 7 giorni: resta fuori dal conto finché la finestra non è passata.
Nuovi iscritti per app
| App | Nuovi | Attivati | Mai tornati | Tasso di attivazione |
|---|---|---|---|---|
| Nessun dato. | ||||
«Attivato» = ha fatto almeno un'azione oltre l'apertura. È il numero che conta per gli abbonamenti: un iscritto che apre e basta non rinnova.
Utenti spenti — nessun accesso da oltre 30 giorni
| Utente (pseudonimo) | Ruolo | App | Ultimo accesso | Giorni |
|---|---|---|---|---|
| Nessun dato. | ||||
Gli utenti sono pseudonimi non reversibili: il cruscotto misura il lavoro, non la persona. Nessun nome, nessuna email, nessun contatto attraversa il canale.
Due colonne, e non si confondono. Il costo STIMATO è calcolato qui dai consumi che le app contano davvero, moltiplicati per il listino della scheda «Listino»: è una formula, non una fattura.
Il costo REALE è quello che Firebase, Netlify e i fornitori AI ti fatturano, e lo si registra sotto quando arriva, con la sua data. Nessuno dei due viene inventato: se un prezzo non è impostato, quella voce resta fuori dal totale e te lo dice.
Stima dai consumi contati — periodo selezionato
Totale stimato
—
—
Database (Firestore)
—
—
Intelligenza artificiale
—
—
Banda e funzioni
—
—
Stima per app
| App | Letture | Scritture | Token AI | Costo stimato | Per utente attivo |
|---|---|---|---|---|---|
Nessun consumo registrato. Le app devono chiamare GCM.consumo({...}). | |||||
Costo reale — dalle fatture reale
Il costo esatto in euro sta sulle fatture dei fornitori e si consolida a giorni, non al secondo: qui si registra quello vero, con la sua data, e il cruscotto lo confronta con la stima.
| Voce | Periodo | Importo | Data fattura | Registrato da |
|---|---|---|---|---|
| Nessuna fattura registrata. | ||||
Stima contro realtà
Serve almeno una fattura registrata per fare il confronto.
Cosa dicono i dati
Nessun consiglio ancora.I consigli nascono dai dati veri: servono almeno qualche giorno di telemetria. Niente ipotesi, niente riempimenti.
Funzioni dichiarate che nessuno usa
| Funzione | App | Volte usata | Verdetto |
|---|---|---|---|
Nessuna app ha ancora dichiarato il suo inventario di funzioni (GCM.funzioni([...])). | |||
Una funzione dichiarata e mai usata in tutto il periodo è un candidato: o è un tasto morto, o nessuno sa che esiste. Il verdetto lo dai tu, il dato lo do io.
App ferme
| App | Ultima attività | Giorni di silenzio | Costo stimato nel periodo |
|---|---|---|---|
| Nessun dato. | |||
Tutte le app, viste da fuori
La sentinella apre ogni indirizzo come farebbe un cliente, ogni quarto d'ora. Non entra in nessuna app, non fa login, non legge dati di nessuno: vede quello che vede un estraneo con l'indirizzo in mano. Per questo funziona su tutte le app da subito, anche su quelle dove la telemetria non è ancora innestata.
Stato adesso
| App | Stato | Risposta | Peso | Versione servita | Sicurezza | Ultimo controllo |
|---|---|---|---|---|---|---|
| La sentinella non ha ancora fatto il primo giro. | ||||||
—
Cosa guarda, e perché
Versione servita
Di ogni pagina si prende un'impronta del contenuto. Se cambia senza un rilascio annunciato, qualcuno ha pubblicato qualcosa. Se non cambia dopo un deploy, quel deploy non è arrivato dove doveva. È il controllo che ti dice se il sito ha davvero il codice che credi.
Intestazioni di sicurezza
HSTS, nosniff, protezione dall'inserimento in pagine altrui, referrer. Sono quelle che si perdono per prime quando un deploy diretto salta il
netlify.toml: lezione già pagata, ora la vedi in tabella invece di scoprirla dopo.
Chiavi a vista
Nel sorgente servito si cerca ciò che somiglia a una chiave privata, a un service account o a un token lungo. Se compare, è visibile a chiunque apra «visualizza sorgente»: qui viene segnalato in rosso.
Tempi e disponibilità
Tempo di risposta e quante volte il sito non ha risposto sul totale dei controlli. Non è un contratto di servizio: è la misura onesta di quello che la sentinella ha visto, con il numero di controlli sempre scritto accanto.
Quali app del gruppo si parlano, su quale canale e com'è andata. Qui non passa mai un dato di un cliente: solo il nome delle due app, la categoria dello scambio, l'esito e i tempi. Le app restano autonome — questo è l'occhio sul collegamento, non il collegamento.
I canali, provati sul serio
Ogni quarto d'ora questi collegamenti vengono aperti davvero e si legge cosa esce. Due cose non si prendono sulla parola: che non passi nulla che risalga a una persona o a un'azienda, e che il canale rifiuti di scrivere — un canale che accetta scritture può far pubblicare qualcosa dentro un'altra app senza che nessuno l'abbia deciso.
Chi ha parlato con chi
Il traffico vero registrato dalle app nel periodo scelto.
Semafori
Ogni semaforo porta scritta la soglia che lo accende. Un elemento che questo cruscotto non è in grado di misurare resta «—»: non si inventa un verde per far bella figura.
0 · Cosa non va, adesso
Scritto dai controlli automatici, che girano da soli ogni quarto d'ora: i siti visti da fuori, i nomi di dominio, gli scudi di sicurezza, le chiavi a vista, i file interni che non devono essere scaricabili, le credenziali del server. Nessun browser può scrivere qui dentro: quello che leggi l'ha misurato il server.
1 · Stato del sistema
non provata
2 · Chi entra qui dentro
| Account ammesso | Ruolo | Gate del cruscotto | Regole Firestore |
|---|
I due cancelli devono dire la stessa cosa. Se un account passasse il gate ma non le regole vedrebbe una pagina vuota; se passasse le regole ma non il gate resterebbe fuori pur avendone diritto. Qui si controlla che coincidano.
3 · Dati · 6 · Prestazioni · 7 · Consumo del cruscotto
Documenti letti all'ultimo caricamento
—
—
Tempo di caricamento
—
dalla richiesta al disegno completo
Costo di questa apertura
—
letture del cruscotto × listino stima
4 · Errori registrati dalle app
| Quando | App | Errore | Ruolo |
|---|
Le app riportano un errore chiamando
GCM.evento('errore-qualcosa', {…}). Nessun contenuto e nessun dato personale: solo il nome dell'errore.9 · Versioni in circolazione
| App | Versione dichiarata | Utenti su quella versione | Ultimo segnale |
|---|
Se della stessa app compaiono due versioni, qualcuno sta usando una copia vecchia: è il modo più veloce per scoprire una cache che non si aggiorna o un deploy arrivato a metà.
11 · Federazione · chi trasmette
| App | Prima volta vista | Ultimo segnale | Inventario funzioni | Consumi |
|---|
12 · Azioni
—
La chiave si digita al momento e non viene mai salvata da nessuna parte: sparisce chiudendo la pagina. Le azioni irreversibili non stanno qui: cancellare dati resta un atto tuo dalla Console.
14 · Marchio e conformità
Quello che questo pannello NON misura
Ogni prezzo qui dentro ha una fonte e una data. Quelli precompilati sono stati letti dalle pagine ufficiali il 2 agosto 2026. Le voci lasciate a zero non sono state verificate: finché valgono zero, la stima le esclude e te lo scrive. Un prezzo senza fonte non entra: sarebbe un dato finto.
Prezzi unitari
| Voce | Prezzo | Unità | Fonte | Data |
|---|
—
I costi si aggiornano da soli ogni 24 ore, alle 03:10. Non più spesso: i fornitori chiudono la giornata una volta al giorno e il rapporto dei costi dell'AI ha granularità giornaliera — girare ogni 12 ore riscriverebbe lo stesso numero due volte facendolo sembrare nuovo.
I fornitori fatturano in dollari. Imposta il cambio del giorno qui sotto: se lo lasci a 1, la stima resta in dollari e il cruscotto lo dichiara.
Come funziona il canale
Il cruscotto non entra dentro le app: le app gli parlano, e gli parlano attraverso una porta nostra. Nel sorgente di un'app non finisce nessuna chiave e nessun accesso al database: solo un indirizzo web. Chi apre «visualizza sorgente» non trova niente da rubare. Ogni app resta autonoma: federazione, non fusione.
app → POST /api/telemetria → funzione Netlify (valida, ripulisce, scrive)
→ Firestore
aggregatore notturno → totali per giorno → cruscotto (solo Direzione e Amministrazione, sola lettura)
aggregatore notturno → totali per giorno → cruscotto (solo Direzione e Amministrazione, sola lettura)
Le tre righe da incollare in un'app
- Carica l'SDK dal suo indirizzo:
<script src="https://malandrino.netlify.app/malandrino-sdk.js"></script>— indirizzo completo, così ogni app lo prende sempre aggiornato - All'avvio:
GCM.init({app:'navigator', versione:'1.0'}).aggancia() - Dopo il login:
GCM.utente(user.uid, ruolo) - Una volta sola, l'inventario:
GCM.funzioni(['preventivatore','archivio', …]) - Sui tasti da misurare:
data-gcm="nome-funzione"(nessun handler da scrivere) - Dove si consuma:
GCM.consumo({letture:12})· nel proxy AI:GCM.consumo({aiIn:1500, aiOut:400, modello:'claude-opus-5'})
Se la porta non risponde, l'SDK si spegne da solo e l'app continua a funzionare identica. La telemetria non può rompere niente: non tocca nessuna funzione esistente e non blocca nessuna schermata.
Cosa attraversa il canale, e cosa no
Passa
- nome dell'app e versione
- utente pseudonimo (hash a senso unico)
- ruolo (agente, direzione, cliente…)
- nome dell'azione e quando
- numeri di consumo (letture, scritture, token)
Non passa
- nomi, email, telefoni
- POD, PDR, IBAN, dati di bolletta
- contenuti dei documenti
- credenziali di qualunque tipo
- qualsiasi cosa risalga a una persona o a un'azienda
Il filtro gira due volte: nel browser prima di partire, e sul server prima di scrivere.