- monitoring.py: taeglicher Scan-Adapter aller aktiven BL, kein Auto-Fetch (#135) - monitoring_digest.html: Mail-Template mit '0-Kontext'-Hinweis - abgeordnetenwatch.py + sync_*.py: Phase 1 Roll-Call-Voting (#106) - 17 Parlamente (16 BL + BT) - 9 BL-spezifische Drucksachen-Patterns + Date-Title-Fallback - 28977 Votes fuer BUND in DB - wahlprogramm_check.py: fehlende Programme erkennen (#128) - NI-Skip-Liste, NRW Empty-Query-Fallback Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""Erkennung fehlender Wahlprogramme (#128).
|
|
|
|
Prüft für ein gegebenes Bundesland, welche der im Landtag vertretenen
|
|
Fraktionen in der WAHLPROGRAMME-Registry nicht hinterlegt sind.
|
|
Wird nach dem LLM-Call in analyze_antrag() aufgerufen, damit das
|
|
Assessment-Ergebnis die Lücken explizit ausweist.
|
|
"""
|
|
|
|
from .bundeslaender import BUNDESLAENDER
|
|
from .wahlprogramme import WAHLPROGRAMME
|
|
|
|
|
|
def check_missing_programmes(bundesland: str, fraktionen: list[str]) -> list[str]:
|
|
"""Gibt eine Liste der Fraktions-Namen zurück, für die kein Wahlprogramm
|
|
im gegebenen Bundesland hinterlegt ist.
|
|
|
|
Args:
|
|
bundesland: Bundesland-Code (z.B. "NRW", "BY").
|
|
fraktionen: Liste der Fraktionen, die geprüft werden sollen
|
|
(typischerweise aus BUNDESLAENDER[bl].landtagsfraktionen).
|
|
|
|
Returns:
|
|
Geordnete Liste der Fraktions-Namen ohne hinterlegtes Wahlprogramm.
|
|
Leere Liste, wenn für alle Fraktionen Programme vorliegen oder
|
|
fraktionen leer ist.
|
|
|
|
Raises:
|
|
ValueError: Wenn das Bundesland nicht in BUNDESLAENDER bekannt ist.
|
|
"""
|
|
if bundesland not in BUNDESLAENDER:
|
|
raise ValueError(f"Unbekanntes Bundesland: {bundesland!r}")
|
|
|
|
if not fraktionen:
|
|
return []
|
|
|
|
indexed = WAHLPROGRAMME.get(bundesland, {})
|
|
return [f for f in fraktionen if f not in indexed]
|