Problema
run_full() in cmd_run.py (1201 righe) ha un blocco inline di ~75 righe per la generazione dei report (righe 994-1069) che:
- Importa lazy
build_run_report, write_run_report, write_dataset_readme dentro la funzione
- Ha logica di raccolta support info, report per anno, generazione README
- Ha un
try/except Exception generico che silenzia errori con un warning
- Non è testabile separatamente
Soluzione proposta
Estrarre il blocco in una funzione _write_run_reports() in toolkit/cli/inspect/report_ops.py con firma:
def write_run_reports(
config: str,
cfg: ToolkitConfig,
selected_years: list[int],
results: dict[str, Any],
candidate_blocked: bool,
run_mode: str,
dry_flag: bool,
logger,
) -> None:
run_full() perde ~75 righe, la funzione è testabile, il try/except può essere più specifico.
Contesto
Emerso dalla sessione di refactoring validazione (PR #390). Gli altri 4 gap sono stati chiusi, questo è rimasto come follow-up.
Criteri di accettazione
Problema
run_full()incmd_run.py(1201 righe) ha un blocco inline di ~75 righe per la generazione dei report (righe 994-1069) che:build_run_report,write_run_report,write_dataset_readmedentro la funzionetry/except Exceptiongenerico che silenzia errori con un warningSoluzione proposta
Estrarre il blocco in una funzione
_write_run_reports()intoolkit/cli/inspect/report_ops.pycon firma:run_full()perde ~75 righe, la funzione è testabile, iltry/exceptpuò essere più specifico.Contesto
Emerso dalla sessione di refactoring validazione (PR #390). Gli altri 4 gap sono stati chiusi, questo è rimasto come follow-up.
Criteri di accettazione
run_full()chiama_write_run_reports()invece del blocco inline