From e72dd3ec21a16e0753756414c143994e45c889a3 Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Thu, 9 Apr 2026 11:56:20 +0200 Subject: [PATCH] Adapter-Bugs aus #61: BB Datum + BB/RP Type-Filter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drei aus #61 identifizierte Production-Bugs gefixt: - **Bug 4 (BB Datum)**: BB.wahlperiode_start vom 2024-10-23 (Konstituie- rende Sitzung) auf 2024-09-22 (Wahltag) zurückgesetzt. Damit fällt die Geschäftsordnungs-Drucksache 8/2 vom 2024-10-17 in den Plausibilitäts-Check. Ist auch semantisch sauberer — die WP fängt mit der Wahl an, nicht mit der formalen Konstituierung. - **Bug 2/3 (BB/RP Type-Filter leakt Kleine Anfrage / Beschluss- empfehlung)**: Server-side ETYPF/DTYPF-Filter ist best-effort über die portala-Instanzen — BB+RP lassen die nicht-Antrag-Typen durch. Client-side strict-filter im PortalaAdapter.search() nach Aufruf von _parse_hit_list_html: nur Hits, deren typ-String das Substring "antrag" enthält, kommen weiter. Substring-Match (nicht exact), damit "Antrag gemäß § 79 GO" und ähnliche Subtypen passieren. 176 Unit-Tests grün, Live-Verifikation via Sub-A im Container nach Deploy. Refs: #61 (Bug 2, 3, 4) Co-Authored-By: Claude Opus 4.6 (1M context) --- app/bundeslaender.py | 5 ++++- app/parlamente.py | 11 +++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/bundeslaender.py b/app/bundeslaender.py index 71b46c5..f90bd2d 100644 --- a/app/bundeslaender.py +++ b/app/bundeslaender.py @@ -141,7 +141,10 @@ BUNDESLAENDER: dict[str, Bundesland] = { name="Brandenburg", parlament_name="Landtag Brandenburg", wahlperiode=8, - wahlperiode_start="2024-10-23", + # Wahltag (statt Konstituierende Sitzung am 2024-10-23), damit + # die Geschäftsordnungs-Drucksachen der konstituierenden Sitzung + # in den Plausibilitäts-Check fallen (siehe #61 Bug 4). + wahlperiode_start="2024-09-22", naechste_wahl="2029-09-23", regierungsfraktionen=["SPD", "BSW"], landtagsfraktionen=["SPD", "AfD", "CDU", "BSW"], diff --git a/app/parlamente.py b/app/parlamente.py index 87dcb8a..9cbad29 100644 --- a/app/parlamente.py +++ b/app/parlamente.py @@ -770,6 +770,17 @@ class PortalaAdapter(ParlamentAdapter): return [] results = self._parse_hit_list_html(report_resp.text, query_filter=query) + # Server-side ETYPF/DTYPF filter is best-effort across portala + # instances — BB/RP let "Kleine Anfrage" und "Beschluss- + # empfehlung" durch (siehe #61 Bug 2/3). Client-side strict + # filter on the parsed typ-string. Whitelist via Substring, + # damit "Antrag gemäß § 79 GO" und ähnliche Subtypen passieren. + if self.document_type: + target = self.document_type.lower() + results = [ + d for d in results + if target in (d.typ or "").lower() + ] return results[:limit] except Exception: