test: WAHLPROGRAMME→PROGRAMME-Match akzeptiert auch pdf-Field-Lookup

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) <noreply@anthropic.com>
This commit is contained in:
Dotty Dotter 2026-05-07 15:30:41 +02:00
parent c8bce35a16
commit 7793705486

View File

@ -107,13 +107,21 @@ class TestEmbeddingsRegistryConsistency:
def test_every_wahlprogramm_has_embeddings_entry(self): def test_every_wahlprogramm_has_embeddings_entry(self):
from app.embeddings import PROGRAMME 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 = [] missing = []
for bl, parteien in WAHLPROGRAMME.items(): for bl, parteien in WAHLPROGRAMME.items():
for partei, info in parteien.items(): for partei, info in parteien.items():
pid = info["file"].rsplit(".", 1)[0] file_stem = info["file"].rsplit(".", 1)[0]
if pid not in PROGRAMME: if file_stem in PROGRAMME:
missing.append(f"{bl}/{partei}{pid}") continue
if info["file"] in pdf_to_pid:
continue
missing.append(f"{bl}/{partei}{info['file']}")
assert not missing, ( assert not missing, (
"WAHLPROGRAMME entries missing in embeddings.PROGRAMME:\n " "WAHLPROGRAMME entries missing in embeddings.PROGRAMME:\n "
+ "\n ".join(missing) + "\n ".join(missing)