fix(figures): éviter le crash quand une colonne considérations est absente/vide

compute_considerations_stats initialisait les défauts `{key}_renseignees` en
2-uplets `(0, 0)` mais get_considerations_card_content les dépaquette en
3-uplets. Quand une colonne (considerationsSociales/Environnementales) est
absente du schéma filtré (fréquent avec peu de marchés sélectionnés), le défaut
survivait → ValueError: not enough values to unpack (expected 3, got 2).

Défaut porté à `(0, 0, 0)` : la barre dégrade à 0 % au lieu de planter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Colin Maudry
2026-07-19 12:53:37 +02:00
parent dadb11a164
commit 03bf5686e0
+4 -4
View File
@@ -794,15 +794,15 @@ def compute_considerations_stats(lff: pl.LazyFrame) -> dict[str, tuple[int, int,
Clés renvoyées : Clés renvoyées :
- "champs_renseignes" : (count_ren_sociales, pct / total) - "champs_renseignes" : (count_ren_sociales, pct / total)
- "{key}_renseignees" : (count_ren, pct positifs parmi renseignés) - "{key}_renseignees" : (count_ren, count_pos_ren, pct positifs parmi renseignés)
Colonne absente -> (0, 0). Colonne absente/vide -> "champs_renseignes" (0, 0), "{key}_renseignees" (0, 0, 0).
""" """
names = lff.collect_schema().names() names = lff.collect_schema().names()
present = {key: col for key, col in CONSIDERATIONS_COLUMNS.items() if col in names} present = {key: col for key, col in CONSIDERATIONS_COLUMNS.items() if col in names}
stats: dict[str, tuple[int, int, int]] = {"champs_renseignes": (0, 0)} stats: dict[str, tuple[int, ...]] = {"champs_renseignes": (0, 0)}
for key in CONSIDERATIONS_COLUMNS: for key in CONSIDERATIONS_COLUMNS:
stats[f"{key}_renseignees"] = (0, 0) stats[f"{key}_renseignees"] = (0, 0, 0)
if not present: if not present:
return stats return stats