Parteinamen-Mapper: zentrale app/parteien.py mit kontext-sensitiver normalize_partei() #55
Labels
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: tobias/gwoe-antragspruefer#55
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Parteinamen werden im Repo an mindestens 6 Stellen erzeugt und konsumiert, ohne zentralen Mapper. Schreibweisen driften zwischen Adapter-Output, bundeslaender.py-Listen, wahlprogramme.py-Keys, wahlprogramme.py-partei-Metafeld, embeddings.py-PROGRAMME-Dict und LLM-Prompts. Konsequenz: Lookup-Misses, stille Fehlmatches, vier identische _normalize_fraktion()-Implementierungen in parlamente.py (DRY-Verstoß), Workaround-Hack in embeddings.py:496.
Bestehende Inkonsistenzen (Auswahl)
Komplikation: 'Freie Wähler' ist mehrdeutig
Mindestens 5 verschiedene Organisationen mit 'Freie Wähler' im Namen, programmatisch und organisatorisch nicht identisch:
Konsequenz: ein BB-Antrag der BVB/FW-Fraktion darf nicht gegen das RP-FW-Programm gescort werden — das wäre genau die Bug-Klasse 17 (Cross-Bundesland-Zitat), nur eine Pipeline-Stufe früher.
Lösungs-Vorschlag: zentrale app/parteien.py
Neue Datei mit Tabelle als Single Source of Truth + zwei Funktionen
normalize_partei(raw, *, bundesland=None)unddisplay_name(canonical, *, long=False). Für mehrdeutige Aliase wie 'FREIE WÄHLER' wirdbundeslandzur Pflicht (sonst None + log.warning), damit BVB-FW-BB / FW-BAYERN / FW-RLP / FW-SL nicht versehentlich gegeneinander gescort werden.Kanonische Keys (Vorschlag): CDU, CSU, SPD, GRÜNE, FDP, LINKE, AfD, BSW, SSW, BiW, FW-BAYERN, FW-RLP, BVB-FW-BB, FW-SL.
Acceptance Criteria
Bewusst NICHT in scope
Bezug zu offenen Test-Suiten
Phase B aus Roadmap #59 deployed (Commit
eb045d0).app/parteien.pymit 14 Einträgen + FW-Familien-Disambiguierungapp/parlamente.pydurch zentralen Shim ersetzt (~120 Zeilen Duplikation entfernt)embeddings.pyWorkaround-Hack entfernttests/test_parteien.py+ 4 Adapter-Roundtrip-Tests157 Unit-Tests grün. Live verifiziert: NRW-Search liefert weiterhin Daten.
Erledigt durch Roadmap-Phase B / Commit
eb045d0. app/parteien.py mit 14 PARTEIEN-Einträgen, normalize_partei() mit FW-Familien-Disambiguierung, extract_fraktionen() als Funnel für die 4 alten Adapter-Methoden. 52 neue Unit-Tests, Live verifiziert. Adapter-Migration komplett, embeddings.py-Hack entfernt.