From c8bce35a16d0e0ab9e656e03f2f73ddc2b972987 Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Thu, 7 May 2026 15:27:33 +0200 Subject: [PATCH] fix: WAHLPROGRAMME['BUND'] mit Grundsatzprogrammen befuellt + Permalink-Copy-Click MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User: 'Aber für diesen speziellen Antrag müssten doch alle Programme verfügbar sein. https://gwoe-dev.toppyr.de/antrag/21/1594' Ursache: WAHLPROGRAMME (in app/wahlprogramme.py) hatte keinen 'BUND'- Eintrag, daher hat check_missing_programmes() fuer jeden Bundestags- Antrag ALLE 8 Fraktionen als fehlend markiert. Im Embedding-Index (app/embeddings.py) sind die *-grundsatzprogramm.pdf Dateien aber laengst registriert (typ=parteiprogramm, ohne bundesland-Bindung). Die Lookup-Tabellen waren inkonsistent. Fix: WAHLPROGRAMME['BUND']-Eintrag mit den 6 Grundsatzprogrammen (CDU/SPD/GRUENE/FDP/AfD/LINKE) ergaenzt — entspricht der Realitaet im embeddings.py-Index. CSU + BSW haben keine indizierten Programme und werden weiterhin als fehlend gemeldet (was korrekt ist). Bestehende BUND-Assessments mit fehlende_programme=[8 Parteien] in der DB bleiben erst mal so (waehrend einer Re-Analyse korrekt). Issue #186 (historische BTW-Wahlprogramme) bleibt offen — Grundsatzprogramme sind nur ein Notbehelf gegen die 'alle fehlen'-Anzeige. Plus: Permalink-Klick kopiert jetzt die absolute URL in die Zwischen- ablage statt zur Page zu navigieren. window.v3CopyPermalink in v2/screens/antrag_detail.html (wird via super() von v3 mitvererbt). Link-Text 'Permalink kopieren', 1.6s 'Permalink kopiert ✓'-Flash nach Copy. Fallback auf window.prompt() wenn Clipboard-API fehlt. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/templates/v2/screens/antrag_detail.html | 23 ++++++++++++++++++++- app/templates/v3/screens/antrag_detail.html | 4 +++- app/wahlprogramme.py | 12 +++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/app/templates/v2/screens/antrag_detail.html b/app/templates/v2/screens/antrag_detail.html index ec0a649..3e25955 100644 --- a/app/templates/v2/screens/antrag_detail.html +++ b/app/templates/v2/screens/antrag_detail.html @@ -461,8 +461,10 @@ JSON-Export - Permalink + Permalink kopieren {% endblock %} @@ -876,6 +878,25 @@ window.v2ShowMatrixFieldInfo = function(field) { return lines.join('\n'); } + /* Permalink-Klick kopiert in die Zwischenablage statt zu navigieren. */ + window.v3CopyPermalink = function (e, el) { + e.preventDefault(); + var permalink = window.location.origin + el.getAttribute('href'); + var orig = el.textContent; + var done = el.dataset.copiedLabel || 'Kopiert ✓'; + function flash() { + el.textContent = done; + setTimeout(function () { el.textContent = orig; }, 1600); + } + if (navigator.clipboard && navigator.clipboard.writeText) { + navigator.clipboard.writeText(permalink).then(flash, function () { + window.prompt('Permalink kopieren:', permalink); + }); + } else { + window.prompt('Permalink kopieren:', permalink); + } + }; + window.v2DetailShare = function(platform) { if (platform === 'linkedin') { // LinkedIn hat /sharing/share-offsite/ zurueckgebaut — der prefillt diff --git a/app/templates/v3/screens/antrag_detail.html b/app/templates/v3/screens/antrag_detail.html index 92f453b..de91086 100644 --- a/app/templates/v3/screens/antrag_detail.html +++ b/app/templates/v3/screens/antrag_detail.html @@ -408,7 +408,9 @@ Original-Antrag (Landtag) {% endif %} JSON-Export - Permalink + Permalink kopieren {# News-Box (per JS gefuellt) — eine Nachricht, max 9 Zeilen #} diff --git a/app/wahlprogramme.py b/app/wahlprogramme.py index 9237544..57737d0 100644 --- a/app/wahlprogramme.py +++ b/app/wahlprogramme.py @@ -247,6 +247,18 @@ WAHLPROGRAMME: dict[str, dict[str, dict]] = { "FREIE WÄHLER": {"file": "fw-rp-2021.pdf", "titel": "FREIE WÄHLER Rheinland-Pfalz Wahlprogramm 2021", "partei": "FREIE WÄHLER Rheinland-Pfalz", "jahr": 2021, "seiten": 80}, "FDP": {"file": "fdp-rp-2021.pdf", "titel": "FDP Rheinland-Pfalz Landtagswahlprogramm 2021", "partei": "FDP Rheinland-Pfalz", "jahr": 2021, "seiten": 100}, }, + # Bundestag — keine bundesweiten Wahlprogramme im Repo, daher dienen + # die Grundsatzprogramme als Quelle. CSU + BSW haben keine Programme + # in der Registry und werden weiterhin als fehlend gemeldet. + # Diese Eintraege sind von embeddings.py separat indiziert (typ=parteiprogramm). + "BUND": { + "CDU": {"file": "cdu-grundsatzprogramm.pdf", "titel": "CDU Grundsatzprogramm 2024", "partei": "CDU", "jahr": 2024, "seiten": 64, "ist_grundsatz": True}, + "SPD": {"file": "spd-grundsatzprogramm.pdf", "titel": "SPD Hamburger Programm 2007", "partei": "SPD", "jahr": 2007, "seiten": 78, "ist_grundsatz": True}, + "GRÜNE": {"file": "gruene-grundsatzprogramm.pdf","titel": "Grüne Grundsatzprogramm 2020", "partei": "GRÜNE", "jahr": 2020, "seiten": 116, "ist_grundsatz": True}, + "FDP": {"file": "fdp-grundsatzprogramm.pdf", "titel": "FDP Karlsruher Freiheitsthesen 2012","partei": "FDP", "jahr": 2012, "seiten": 31, "ist_grundsatz": True}, + "AfD": {"file": "afd-grundsatzprogramm.pdf", "titel": "AfD Grundsatzprogramm 2016", "partei": "AfD", "jahr": 2016, "seiten": 96, "ist_grundsatz": True}, + "LINKE": {"file": "linke-grundsatzprogramm.pdf", "titel": "DIE LINKE Erfurter Programm 2011", "partei": "LINKE", "jahr": 2011, "seiten": 84, "ist_grundsatz": True}, + }, } # Pro Bundesland: Markdown-Übersichtsdatei mit Wahlprogramm-Zusammenfassungen,