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: