# GRIFO_M_PBIT — Release Notes & Feature Summary

Questo documento sintetizza le funzionalità implementate nella versione corrente dello
script `GRIFO_M_PBIT.py` rispetto a una versione iniziale minimale (senza GUI, senza
handling avanzato di "known failures", senza propagation della versione dello script, senza aggregazione dei risultati dei test, senza gestione del test del target).
Serve per informare altri sviluppatori sulle modifiche principali e sulle modalità d'uso.

## Scopo
Fornire un elenco chiaro e conciso delle funzionalità aggiunte, dei comportamenti modificati
(e dove cercare il codice/documentazione per approfondire).

## Principali funzionalità implementate
- `TEST_VERSION`:
  - Aggiunta di una costante `TEST_VERSION` nello script principale.
  - La stringa di versione viene inserita in tutti gli output generati: log, CSV, JSON e PDF.

- Gestione estesa di `KNOWN_FAILURES` (ora applicata anche a B8):
  - `KNOWN_FAILURES` può ora essere usata per classificare come "Known" anche le failure
    individuate nel drill-down B8.
  - Aggiunto helper `is_known_failure(field_name)` (matching case-insensitive, substring).
  - Comportamento: le failure classificate come "known" sono registrate ma NON rendono
    la run fallita; le failure non note su B8 causano la FAIL della run.

- B8 drill-down migliorato:
  - Il drill-down B8 classifica ogni field in PASS / REAL FAIL / KNOWN FAIL.
  - Conta `b8_pass`, `b8_fail`, `b8_known_fail` e mantiene dettagli separati per real e known.
  - Drill-down eseguito solo se necessario (presenza di real failures) oppure se forzato
    tramite `FORCE_B8_DRILL_DOWN`.

- GUI real-time (Tkinter) — `GRIFO_M_PBIT_gui.py`:
  - Aggiunta di un monitor in tempo reale opzionale (avviabile di default, disabilitabile con `--no-gui`).
  - Tabella `Runs Overview` aggiornata per mostrare la colonna B8 nel formato `Pass/Fail/Known`.
  - Comunicazione thread-safe tra test thread e GUI tramite `queue.Queue()`.

- Reportistica aggiornata (CSV / JSON / PDF):
  - I file CSV/JSON includono ora `script_version` e i conteggi `b8_known_fail` per run.
  - Il PDF include la `Script Version` nella sezione metadati e mostra, nella tabella Run Details,
    la colonna B8 come `Pass/Fail/Known`.

- Simulation & Mocks migliorati:
  - `GRIFO_M_PBIT_mock.py` include scenari aggiuntivi (`pedestal_fail`, `mixed_b8_failures`, `agc_tests_fail`, ecc.)
  - Launcher `run_simulate.bat` e `run_simulate_simple.bat` sono mantenuti per eseguire rapidamente
    test in modalità simulata.

## Differenze rispetto alla versione iniziale (baseline)
Baseline: script senza GUI, senza gestione avanzata di known-failures, senza propagation della versione, ecc.

Cosa è stato aggiunto/alterato:
- Interfaccia grafica opzionale per monitoraggio realtime.
- Meccanismo `KNOWN_FAILURES` esteso a B8 con helper dedicato.
- Maggiori dettagli nei report (terzo campo B8: known count; script version metadata).
- Drill-down B8 condizionato e classificazione Known vs Real.
- Mocks e scenari di simulazione arricchiti per testare casi complessi.
- Test automatici per prevenire regressioni nelle regole di notazione delle failure.
- Correzioni logiche che garantiscono che real B8 failures provochino correttamente la FAIL della run.
- Gestione dei test con target generator

## Dove trovare il codice e la documentazione
- Script principale: `TestEnvironment/scripts/GRIFO_M_PBIT.py`
- GUI: `TestEnvironment/scripts/GRIFO_M_PBIT_gui.py`
- Mock / simulazione: `TestEnvironment/scripts/GRIFO_M_PBIT_mock.py`
- Report / PDF generator: `TestEnvironment/env/leo_grifo_pdf2report.py`


## Esempi di esecuzione
- Modalità simulazione (rapida):

```powershell
.\run_simulate.bat
```

- Modalità hardware:

```powershell
.\run_target.bat
```

Output generati in (cartelle):
- Log: `TestEnvironment/LOG/GRIFO_M_PBIT.log`
- PDF/CSV/JSON: `TestEnvironment/pdf_reports/` (file con prefisso `GRIFO_M_PBIT_YYYYMMDD_HHMMSS`)

## Note per sviluppatori
- Matching `KNOWN_FAILURES`: la logica attuale usa substring case-insensitive. Per renderla più restrittiva
  usare regex o nomi completi: modificare `is_known_failure()` in `GRIFO_M_PBIT.py`.
- Per aggiungere un known failure permanente, aggiornare la lista `KNOWN_FAILURES` in `GRIFO_M_PBIT.py`.
- Se si modifica la struttura dei report JSON, aggiornare anche `TestEnvironment/env/leo_grifo_test_report.py`.

