From c13292133c364a4a8455c94a1a9894e023d11757 Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Wed, 6 May 2026 23:30:29 +0200 Subject: [PATCH] fix: Validator akzeptiert Bundesrats-3-Komponenten-Drucksachen Damit /api/analyze-drucksache die Bundesrats-spezifische 400-Meldung liefern kann (vorher haengen blieb am Path-Traversal-Validator mit generischem 'Ungueltige Drucksache-ID'). Co-Authored-By: Claude Opus 4.7 (1M context) --- app/validators.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/validators.py b/app/validators.py index 9cb206e..f10a891 100644 --- a/app/validators.py +++ b/app/validators.py @@ -12,9 +12,14 @@ from fastapi import HTTPException # Drucksache-Format: erlaubt sind alle bisher beobachteten Schreibweisen: -# "8/6390", "18/12345", "8/6390(neu)", "23/3700-A", "21/754S" (HB: S=Stadtbürgerschaft). +# "8/6390", "18/12345", "8/6390(neu)", "23/3700-A", "21/754S" (HB: S=Stadtbürgerschaft), +# Bundesrat: "186/3/26" (3 Komponenten, mittlere = Sub-Nummer, letzte = Jahr). # Restriktiv genug für Path-Traversal-Schutz (#57 Befund #3). -_DRUCKSACHE_RE = re.compile(r"^\d{1,3}/\d{1,7}[A-Z]?([-(].{1,20})?$") +# Bundesrats-Drucksachen kommen durch den Validator und werden in +# /api/analyze-drucksache explizit per is_bundesrat-Flag abgelehnt. +_DRUCKSACHE_RE = re.compile( + r"^\d{1,3}/\d{1,7}(?:/\d{1,4})?[A-Z]?([-(].{1,20})?$" +) def validate_drucksache(drucksache: str) -> str: