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.
2.5 KiB
2.5 KiB
Architecture Decision Records (ADRs)
ADRs dokumentieren signifikante Architektur-Entscheidungen mit Kontext, Optionen und Konsequenzen. Format inspiriert von Michael Nygard.
Workflow
- Neue Entscheidung steht an → Kopie von
template.mdmit nächster freier Nummer (NNNN-kebap-titel.md). - Status
proposed→ diskutiert in Issue/PR → bei Akzeptanz aufaccepted. - Niemals editieren nach
accepted. Wenn eine Entscheidung sich ändert, neuer ADR mitSupersedes: NNNN-…im Header und der alte ADR bekommtSuperseded by: MMMM-…. - Status
deprecatedfü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.