Green Corporate Group

MALANDRINO

Cruscotto d'uso e di costo · Direzione e Amministrazione

Riservato a Direzione e Amministrazione.
Le credenziali vivono su Firebase Auth, non in questa pagina.
MALANDRINOCruscotto app · Green Corporate Group

Adesso

Attivi in questo momento

ultimi 5 minuti live

Attivi oggi

Attivi nel periodo

Costo stimato periodo

dai consumi contati stima

Chi usa cosa

AppAttivi oggiAttivi periodo ApertureAzioniCosto stimatoStato
Nessun dato nel periodo.

Attività giorno per giorno

Dettaglio per app

Funzioni più usate

FunzioneAppVolteUtentiPeso
Nessun dato.

Chi lavora — utenti per ruolo

RuoloUtenti attiviAzioniAzioni 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

AppNuoviAttivatiMai tornatiTasso 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)RuoloAppUltimo accessoGiorni
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

AppLettureScrittureToken AICosto stimatoPer 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.
VocePeriodoImportoData fatturaRegistrato 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

FunzioneAppVolte usataVerdetto
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

AppUltima attivitàGiorni di silenzioCosto 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

AppStatoRispostaPeso Versione servitaSicurezzaUltimo 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 ammessoRuoloGate del cruscottoRegole 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

QuandoAppErroreRuolo
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

AppVersione dichiarataUtenti su quella versioneUltimo 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

AppPrima volta vistaUltimo segnaleInventario funzioniConsumi

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

VocePrezzoUnitàFonteData
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)

Le tre righe da incollare in un'app

  1. 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
  2. All'avvio: GCM.init({app:'navigator', versione:'1.0'}).aggancia()
  3. Dopo il login: GCM.utente(user.uid, ruolo)
  4. Una volta sola, l'inventario: GCM.funzioni(['preventivatore','archivio', …])
  5. Sui tasti da misurare: data-gcm="nome-funzione" (nessun handler da scrivere)
  6. 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.