gwoe-antragspruefer/app/repositories/__init__.py
Dotty Dotter 8f0f6d6e32 refactor(#136): DDD-Lightweight Tag 1-4 (Ports, Adapter, Repositories, Domain-Verhalten)
ADR 0008: Lightweight-Migration ohne Package-Split

- ports/llm_bewerter.py: Protocol + LlmRequest-Dataclass
- adapters/qwen_bewerter.py: Qwen/DashScope-Adapter mit Retry-Loop
- repositories/{antrag,bewertung,abonnement}_repository.py: Protocol + Sqlite-Impl + InMemory-Fake
- analyzer.py refactored: nimmt Optional[LlmBewerter], AsyncOpenAI-Import raus
- models.py: 5 Domain-Methoden auf Bewertung/MatrixEntry
  (ist_ablehnung, hat_fundamental_kritisches_feld, verletzt_score_cap, ...)
- analyzer loggt WARNING wenn LLM Score-Cap-Invariante verletzt

Folge-PR: Callsite-Migration in main.py (~21 direkte database.*-Aufrufe)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 20:55:16 +02:00

45 lines
1.3 KiB
Python

"""Repository-Pattern für Persistenz-Zugriff (ADR 0008).
Die Repositories kapseln direkte ``database.py``-Aufrufe hinter Protocols,
sodass Tests `InMemory*Repository` verwenden können und Callsites nicht
mehr jedes Schema-Detail kennen müssen.
Die konkreten `Sqlite*Repository`-Implementierungen delegieren heute noch
an die bestehenden Funktionen in ``database.py`` — kein Big-Bang-Rewrite.
Schritt für Schritt wandern die direkten DB-Aufrufe in die Repositories.
"""
from .antrag_repository import (
AntragRepository,
SqliteAntragRepository,
InMemoryAntragRepository,
get_antrag_repository,
)
from .bewertung_repository import (
BewertungRepository,
SqliteBewertungRepository,
InMemoryBewertungRepository,
get_bewertung_repository,
)
from .abonnement_repository import (
AbonnementRepository,
SqliteAbonnementRepository,
InMemoryAbonnementRepository,
get_abonnement_repository,
)
__all__ = [
"AntragRepository",
"SqliteAntragRepository",
"InMemoryAntragRepository",
"get_antrag_repository",
"BewertungRepository",
"SqliteBewertungRepository",
"InMemoryBewertungRepository",
"get_bewertung_repository",
"AbonnementRepository",
"SqliteAbonnementRepository",
"InMemoryAbonnementRepository",
"get_abonnement_repository",
]