From 77937054869b383778d66f7775e03db7ec15d95c Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Thu, 7 May 2026 15:30:41 +0200 Subject: [PATCH] =?UTF-8?q?test:=20WAHLPROGRAMME=E2=86=92PROGRAMME-Match?= =?UTF-8?q?=20akzeptiert=20auch=20pdf-Field-Lookup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mein BUND-Eintrag von vorhin nutzt 'cdu-grundsatzprogramm.pdf' als file, aber embeddings.PROGRAMME hat den Schluessel 'cdu-grundsatz' (historisch ohne 'programm'-Suffix). Der test_every_wahlprogramm_ has_embeddings_entry-Test ist deshalb rot geworden. Test akzeptiert jetzt zwei Match-Pfade: 1. file-stem == PROGRAMME-Key (Standard fuer LT-Programme) 2. file == PROGRAMME[pid].pdf (Spezialfall Grundsatzprogramme) Damit bleibt die Konsistenz-Pruefung sinnvoll, ohne dass ich die Embedding-Programme-Keys umbennenen + reindizieren muss. Co-Authored-By: Claude Opus 4.7 (1M context) --- tests/test_wahlprogramme.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/test_wahlprogramme.py b/tests/test_wahlprogramme.py index b6e35a2..cfd7d87 100644 --- a/tests/test_wahlprogramme.py +++ b/tests/test_wahlprogramme.py @@ -107,13 +107,21 @@ class TestEmbeddingsRegistryConsistency: def test_every_wahlprogramm_has_embeddings_entry(self): from app.embeddings import PROGRAMME - # Build expected programm_id from filename: "cdu-mv-2021.pdf" → "cdu-mv-2021" + # Match WAHLPROGRAMME-Eintrag → PROGRAMME-Eintrag entweder ueber den + # file-stem (Standard: "cdu-mv-2021" matcht "cdu-mv-2021") ODER ueber + # den `pdf`-Wert in PROGRAMME (BUND-Grundsatzprogramme nutzen kuerzere + # PROGRAMME-Keys wie "cdu-grundsatz" obwohl die Datei + # "cdu-grundsatzprogramm.pdf" heisst). + pdf_to_pid = {p.get("pdf"): pid for pid, p in PROGRAMME.items() if p.get("pdf")} missing = [] for bl, parteien in WAHLPROGRAMME.items(): for partei, info in parteien.items(): - pid = info["file"].rsplit(".", 1)[0] - if pid not in PROGRAMME: - missing.append(f"{bl}/{partei} → {pid}") + file_stem = info["file"].rsplit(".", 1)[0] + if file_stem in PROGRAMME: + continue + if info["file"] in pdf_to_pid: + continue + missing.append(f"{bl}/{partei} → {info['file']}") assert not missing, ( "WAHLPROGRAMME entries missing in embeddings.PROGRAMME:\n " + "\n ".join(missing)