Passa al contenuto principale

REPORT

Panoramica

Script da inserire nel server del cliente. Viene utilizzato un file launch.js con path di python.

I file principali e le loro funzioni

  • Config\launch\launch.json:
    File dove si dovrà inserire il percorso dell'ambiente python, per la creazione seguire la seguente guida per python o per conda.

  • Config\services\report.json:
    File dove si dovranno inserire i parametri di configurazione per il report.

  • Config\path.json:
    File dove si dovrà inserire i percoso delle cartelle per quanto riguarda i log di errore e della creazione del pdf.

  • Config_dev.json:
    File dove si dovrà inserire il percorso della cartella root.

  • Config.json:
    File dove si dovrà inserire il percorso della cartella config.

  • Scripts\launchers\generate_and_send_report.cmd:
    File batch che lancia il report la creazione del report.

  • Src\modules\reports\services.py:
    Questo modulo gestisce la generazione e distribuzione dei report di produzione. Il suo Main è leggere il file report.json prima indicato e salvasi i dati da fornire al report.py, il cuore pulsante del report dove vengono fatte le operazioni. È incaricato anche del salvataggio dei report e dell'invio via email.

  • Src\modules\reports\report.py:
    Questo modulo è il cuore del report. Qui vengono eseguite tutte le operazioni necessarie per generare i report di produzione. La funzione Main di questo py è la richiesta dei dati da ProBi, elaborarli e fornire il pdf a services.py per l'invio via email.

  • Src\common\utils.py:
    In questo file ci sono presenti delle funzioni utili per il file report.py.

ATTENZIONE

c'è un file riguardante le passoword e APIKEYS per la interpretazione che va richiesto ma nel caso si puo creare un file .env posizionarlo nella cartella config e scrivere le variabili di ambiente in questo modo:

# MARIADB
MARIADB_PASSWORD = ""

# OPENAI
OPENAI_API_KEY_SM = ""
OPENAI_API_KEY_LF= ""

# GEMINI
GOOGLE_API_KEY = ""

# POSTGRES
POSTGRES_PASSWORD = ""


# TELEGRAM
JWT_KEY = ""
TELEGRAM_QUINDI_TEST_TOKEN = ""
TELEGRAM_QUINDI_DEV_TOKEN = ""
TELEGRAM_QUINDI_COPILOT_TOKEN = ""
TELEGRAM_QUINDI_DEMO_TOKEN = ""

TELEGRAM_SSL_CERT_FILE = ''
TELEGRAM_SSL_KEY_FILE = ''

# EMAIL
EMAIL_PASSWORD = ""

Flusso del processo


Dettagli dei file principali

Report.json

Nel file report.json si può impostare l’intervallo temporale generale dei report tramite due voci:

"report_from": "today",
"report_to": "today"

Puoi usare valori testuali per definire il periodo, ad esempio:

  • "today" → oggi
  • "yesterday" → ieri
  • "a week ago" → una settimana fa
  • "two weeks ago" → due settimane fa
  • "a month ago" → un mese fa

🆕 È disponibile anche una modalità intelligente chiamata rolling_days_week, che imposta automaticamente le date in base alla settimana operativa:

  • Se oggi è il primo giorno della settimana (es. lunedì):
    • date_from = primo giorno della settimana precedente
    • date_to = ultimo giorno della settimana precedente
  • Se oggi è un giorno diverso dal primo della settimana:
    • date_from = primo giorno della settimana corrente
    • date_to = ieri

➡️ Questo permette di avere una finestra temporale dinamica e sempre aggiornata, utile per i report ricorrenti legati al ciclo settimanale.

Sezione “Target_report”

Questa parte serve per attivare o disattivare il report dei target:

"Target_report": {
"enable": true,
"target_report_from": "",
"target_report_to": ""
}
  • "enable": true → attiva la generazione del report
  • "target_report_from" / "target_report_to" → puoi specificare un intervallo di date (facoltativo)

Sezione “kpi”

Qui si definiscono le informazioni per ogni KPI incluso nel report:

{
"id": 134,
"view": "Summary",
"date_from": "",
"date_to": "",
"rolling_days_week": true,
"explode": false,
"enable_interpretation": false,
"data_table": true,
"get_daily_table": false,
"landscape": true
}
  • id: ID del KPI (tabella kaizen_kpis)
  • view: tipo di grafico ("Summary", "Trend", "Cumulative")
  • date_from/date_to: intervalli personalizzati (opzionali)
  • rolling_days_week: se true, attiva la modalità settimana operativa dinamica
  • explode: se true, mostra un grafico per ogni centro di lavoro o operatore
  • enable_interpretation: se true, attiva l’interpretazione AI dei dati
  • data_table: se true, include una tabella dei dati del grafico
  • get_daily_table: se true, esporta anche una tabella CSV giornaliera
  • landscape: se true, il PDF viene generato in orizzontale

Sezione “receivers”

Serve per decidere a chi inviare il report:

"receivers": {
"external": [
{
"email": "nome@email.it",
"name": "Nome"
}
],
"internal": [
{
"user_id": 134,
"enable_role_filtering": true
}
]
}

Services.py

Questo modulo gestisce l'intero processo di generazione e distribuzione dei report.

Funzioni Principali

  • generate_and_send_production_report_service(config): Orchestrà l'intero processo di reportistica.

    • Configura i parametri di visualizzazione
    • Genera report di produzione con dati KPI andando a richiamare la funzione generate_production_report del file report.py
    • Gestisce la distribuzione via email
    • Gestisce l'archiviazione dei report
  • save_report(config, report, report_name): Salva i report generati.

    • Crea directory con timestamp
    • Salva i report PDF nella posizione configurata
    • Decodifica i dati in base64 prima del salvataggio
  • send_report_email(mail_template, receiver_email, ...): Gestisce l'invio delle email.

    • Utilizza template HTML con sostituzione di variabili
    • Supporta allegati PDF e CSV
    • Configura le impostazioni email da variabili d'ambiente

Report.py

Questo modulo è il cuore pulsante del sistema di reportistica.

Funzioni Principali

  • generate_production_report(config, kpi_data, report_template, interpretation_provider):

    • Raccoglie i dati KPI dal sistema ProBI
    • Gestisce il recupero dei dati target
    • Organizza la struttura del report con diverse sezioni
    • Genera report PDF con grafici e tabelle
  • generate_production_report_from_data(config, kpi_data, report_template, interpretation_provider):

    • Genera report da dati già elaborati

Classe ProductionReport

Estende FPDF e gestisce la formattazione dei report:

  • add_summary(kpi_configs, plant_name, client_name): Crea la pagina di riepilogo con indice e informazioni generali.
  • add_kpis(kpi_data, enable_interpretation): Genera pagine dettagliate per ciascun KPI con grafici e interpretazioni.
  • add_target_table(target_data): Crea la tabella riguardo i Target Report con la formattazione a colori.

Utils.py

Contiene funzioni di supporto essenziali per l'elaborazione dei dati e la generazione dei report.

Funzioni Principali

  • target_report_json_to_df(json_data): Trasforma i dati JSON dei target in DataFrame strutturato:

    • Elabora i livelli di criticità
    • Formatta valori in base alle unità di misura (%, pz, pz/h, tempi)
    • Genera colonna TARGET combinando operatori e valori limite
    • Riorganizza e filtra i dati per criticità
  • process_json_to_base64(json_data): Prepara i dati target per i report:

    • Struttura i dati in un ordine ottimale
    • Traduce le intestazioni in italiano
    • Applica formattazione specifica
    • Codifica il risultato in base64 per l'inclusione nei report