gwoe-antragspruefer/docs/adr/index.md
Dotty Dotter 7de4df1fef feat(#126): protokoll_parsers/-Sub-Package + Registry-Pattern + ADR 0009
Architektur-Refactor zur Vorbereitung BL-uebergreifender Parser:

- app/protokoll_parser_nrw.py → app/protokoll_parsers/nrw.py
- app/ingest_votes_nrw.py → app/ingest_votes.py (BL-uebergreifend)
- Neue app/protokoll_parsers/__init__.py mit:
  - PROTOKOLL_PARSERS-Dict (BL-Code → Parser-Funktion, derzeit nur NRW)
  - parse_protocol(bundesland, pdf_path) als BL-uebergreifender Einstieg
  - supported_bundeslaender()-Helper
  - NotImplementedError mit hilfreicher Message bei unbekanntem BL

CLI bekommt --supported-Flag fuer BL-Discovery:
  python -m app.ingest_votes --supported  → 'NRW'

ADR 0009 dokumentiert das Muster (Sub-Package + Funktions-Registry,
analog zu ADR 0002 fuer ParlamentAdapter). Folge-BL bekommen je
eine eigene Datei und einen Eintrag in PROTOKOLL_PARSERS — kein
Refactoring der Bestands-Logik.

Tests:
- 7 neue Tests in test_protokoll_parsers.py fuer Registry und Dispatch
- Bestehende NRW-Tests umbenannt zu test_protokoll_parsers_nrw.py,
  Imports angepasst — keine Verhaltens-Aenderung
- Bestehende Ingest-Tests umbenannt zu test_ingest_votes.py

642 Tests gruen, kein Verhaltens-Drift.
2026-04-28 08:37:31 +02:00

2.5 KiB

Architecture Decision Records (ADRs)

ADRs dokumentieren signifikante Architektur-Entscheidungen mit Kontext, Optionen und Konsequenzen. Format inspiriert von Michael Nygard.

Workflow

  1. Neue Entscheidung steht an → Kopie von template.md mit nächster freier Nummer (NNNN-kebap-titel.md).
  2. Status proposed → diskutiert in Issue/PR → bei Akzeptanz auf accepted.
  3. Niemals editieren nach accepted. Wenn eine Entscheidung sich ändert, neuer ADR mit Supersedes: NNNN-… im Header und der alte ADR bekommt Superseded by: MMMM-….
  4. Status deprecated für Entscheidungen, die ohne Nachfolger auslaufen.

Index

ID Titel Status Datum
0001 LLM-Citations server-seitig binden statt prompt-seitig accepted 2026-04-10
0002 Adapter-Pattern mit ParlamentAdapter-Basisklasse + Registry accepted 2026-04-10
0003 Sub-D Property-Verification: Zitate als Substring der zitierten PDF-Seite accepted 2026-04-10
0004 Docker Compose Deploy mit DB-/Reports-Volume und SN-XML-Sonderpfad accepted 2026-04-10
0005 Keycloak SSO mit Dev-Bypass-Fallback accepted 2026-04-10
0006 Embedding-Modell-Migration text-embedding-v3 → v4 accepted 2026-04-11
0007 Test-Taxonomie (Unit / Integration / E2E / Property / Smoke) accepted 2026-04-28
0008 DDD-Lightweight-Migration (Repository, LLM-Port, Domain-Verhalten) accepted 2026-04-20
0009 Plenarprotokoll-Parser-Registry pro Bundesland accepted 2026-04-28

Wann ADR, wann nicht

ADR-würdig nicht ADR-würdig
Wahl zwischen mehreren plausiblen Architekturen mit Trade-offs Bug-Fix
Strukturelle Konsequenzen für mehrere Module Refactoring innerhalb eines Moduls
Reverse-Engineering-Findings die andere Adapter beeinflussen Stiländerungen, Linting-Konventionen
Neue externe Abhängigkeiten oder APIs Dependency-Bumps ohne API-Änderung
Workflow-Konventionen die mehrere Sessions überdauern müssen Tagesgeschäft, Issue-Tracking

Faustregel: Wenn ein neuer Kollege (oder eine neue Session) die Entscheidung sonst rückgängig machen würde, gehört sie in einen ADR.