From 045461492fbd38b258e5dca1ff29129892261175 Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Thu, 7 May 2026 09:10:49 +0200 Subject: [PATCH] fix: ist_antragsteller/ist_regierung Fallback aus Drucksachen-Metadaten LLM-Output setzt diese Flags nicht zuverlaessig (alle Werte heute None in NRW/18/18246-Beispiel). _row_to_detail leitet sie jetzt im Fallback aus den Drucksachen-Meta ab: - ist_antragsteller := Fraktion in row.fraktionen (Antragsteller-Liste) - ist_regierung := Fraktion in BUNDESLAENDER[bl].regierungsfraktionen Damit erscheinen die 'Antragsteller:in' / 'Regierungsfraktion'-Pills auch bei alten Assessments ohne explizite LLM-Flags. LLM-Wert (falls gesetzt) hat weiterhin Vorrang. --- app/main.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/app/main.py b/app/main.py index 58bdff8..1b9dff2 100644 --- a/app/main.py +++ b/app/main.py @@ -436,16 +436,38 @@ def _row_to_detail(row): symbol = cell.get("symbol", "○") matrix_dict[field] = {"rating": rating_normalized, "symbol": symbol} + # Fallback fuer ist_antragsteller / ist_regierung wenn LLM-Output sie + # nicht gesetzt hat: aus den Drucksachen-Metadaten ableiten. + # - antragsteller: aus row.fraktionen (das ist die Antragsteller-Liste) + # - regierung: aus BUNDESLAENDER[bl].regierungsfraktionen + bl_code = (row.get("bundesland") or "").strip().upper() + antragsteller_set = set(fraktionen or []) + try: + from .bundeslaender import BUNDESLAENDER + regierung_set = set( + BUNDESLAENDER.get(bl_code).regierungsfraktionen + if bl_code in BUNDESLAENDER else [] + ) + except Exception: + regierung_set = set() + # fraktions_scores: numerische Scores + Begründungen + leere Zitat-Listen (Fix 2+3) fraktions_scores = [] for wp in (wahlprogramm_scores or []): fraktion = wp.get("fraktion", "") wp_src = wp.get("wahlprogramm") or {} pp_src = wp.get("parteiprogramm") or {} + # LLM-Wert hat Vorrang, sonst Fallback aus Drucksachen-Meta. + ist_antrag = wp.get("istAntragsteller", wp.get("ist_antragsteller")) + if ist_antrag is None: + ist_antrag = fraktion in antragsteller_set + ist_reg = wp.get("istRegierung", wp.get("ist_regierung")) + if ist_reg is None: + ist_reg = fraktion in regierung_set fraktions_scores.append({ "fraktion": fraktion, - "ist_antragsteller": wp.get("istAntragsteller", wp.get("ist_antragsteller")), - "ist_regierung": wp.get("istRegierung", wp.get("ist_regierung")), + "ist_antragsteller": ist_antrag, + "ist_regierung": ist_reg, "wahlprogramm": { "score": wp_src.get("score", 0), "begruendung": wp_src.get("begruendung", wp_src.get("begründung", "")),