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.
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 precedentedate_to= ultimo giorno della settimana precedente
- Se oggi è un giorno diverso dal primo della settimana:
date_from= primo giorno della settimana correntedate_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 (tabellakaizen_kpis)view: tipo di grafico ("Summary","Trend","Cumulative")date_from/date_to: intervalli personalizzati (opzionali)rolling_days_week: setrue, attiva la modalità settimana operativa dinamicaexplode: setrue, mostra un grafico per ogni centro di lavoro o operatoreenable_interpretation: setrue, attiva l’interpretazione AI dei datidata_table: setrue, include una tabella dei dati del graficoget_daily_table: setrue, esporta anche una tabella CSV giornalieralandscape: setrue, 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