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) <noreply@anthropic.com>
This commit is contained in:
Dotty Dotter 2026-05-06 23:30:29 +02:00
parent 5667259bff
commit c13292133c

View File

@ -12,9 +12,14 @@ from fastapi import HTTPException
# Drucksache-Format: erlaubt sind alle bisher beobachteten Schreibweisen: # 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). # 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: def validate_drucksache(drucksache: str) -> str: