gwoe-antragspruefer/docs/adr
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
..
0001-llm-citation-binding.md #62 Phase 1+3: ADRs + Doku-Struktur in webapp/docs/ 2026-04-10 01:38:03 +02:00
0002-adapter-architecture.md #62 Phase 1+3: ADRs + Doku-Struktur in webapp/docs/ 2026-04-10 01:38:03 +02:00
0003-citation-property-tests.md #62 Phase 1+3: ADRs + Doku-Struktur in webapp/docs/ 2026-04-10 01:38:03 +02:00
0004-deployment-workflow.md #62 Phase 1+3: ADRs + Doku-Struktur in webapp/docs/ 2026-04-10 01:38:03 +02:00
0005-keycloak-sso-with-dev-bypass.md Docs: Feld-Mapping-Tabelle pro Adapter + ADR 0005 + Auth-Tests 2026-04-10 16:29:28 +02:00
0006-embedding-model-migration-v3-to-v4.md docs+ops: ADRs 0006/0008, DDD-Bewertung, Zugriffsrechte, Smoke-Test, Cron-Scripts 2026-04-25 20:55:57 +02:00
0007-test-taxonomy.md docs(#134): ADR 0007 — Test-Taxonomie 2026-04-28 02:04:24 +02:00
0008-ddd-lightweight-migration.md refactor(#136): DDD-Lightweight Tag 1-4 (Ports, Adapter, Repositories, Domain-Verhalten) 2026-04-25 20:55:16 +02:00
0009-protokoll-parser-registry.md feat(#126): protokoll_parsers/-Sub-Package + Registry-Pattern + ADR 0009 2026-04-28 08:37:31 +02:00
index.md feat(#126): protokoll_parsers/-Sub-Package + Registry-Pattern + ADR 0009 2026-04-28 08:37:31 +02:00
README.md Docs: Keycloak-Setup How-to + ADR-Index aktualisiert 2026-04-10 16:33:52 +02:00
template.md #62 Phase 1+3: ADRs + Doku-Struktur in webapp/docs/ 2026-04-10 01:38:03 +02:00

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 für Read/Write-Trennung accepted 2026-04-10

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.