meldestelle/docs/99_Journal/2026-04-20_Architektur-Cleanup-Turnier-Feature.md

2.1 KiB

Journal-Eintrag: Architektonische Bereinigung turnier-feature (Plug-and-Play)

Datum: 20. April 2026 Agent: Junie (Lead Architect / Backend Developer)

🎯 Zielsetzung

Vollständige Umsetzung der Plug-and-Play Architektur gemäß ADR-0024 im turnier-feature. Dies umfasst die Entfernung von Reflection-Altlasten und die Entkoppelung von Feature-Komponenten von der Shell.

🛠 Durchgeführte Änderungen

1. Entfernung von Reflection-Altlasten

  • Problem: TurnierStammdatenTab.kt griff via Reflection auf den TurnierStore in der Desktop-Shell zu.
  • Lösung:
    • Neues TurnierStammdatenViewModel im Feature-Modul erstellt.
    • Anbindung an das TurnierRepository (Interface-basiert).
    • StammdatenTabContent nutzt nun dieses ViewModel für State-Management und Persistenz.

2. ViewModel-Hoisting im TurnierDetailScreen

  • Problem: TurnierDetailScreen nutzte koinInject direkt in der Composable-Struktur, was die Testbarkeit erschwerte und eine harte Abhängigkeit zu Koin innerhalb der UI-Komponente schuf.
  • Lösung:
    • Refactoring von TurnierDetailScreen: ViewModels (BewerbViewModel, TurnierNennungViewModel, TurnierStammdatenViewModel) werden nun als Parameter übergeben.
    • Die Desktop-Shell (DesktopMainLayout.kt) übernimmt die Injektion und Delegation der ViewModels.

3. DI-Konfiguration

  • Änderung: Das TurnierStammdatenViewModel wurde im TurnierFeatureModule.kt als Factory registriert.

4. Code-Hygiene & Previews

  • Änderung: Die ScreenPreviews.kt in der Desktop-Shell wurden aktualisiert, um mit den neuen Parameter-Anforderungen des TurnierDetailScreen kompatibel zu sein (Mock-Injektion).

Verifizierung

  • Build: ./gradlew :frontend:shells:meldestelle-desktop:compileKotlinJvm erfolgreich.
  • Architektur: Keine direkten Koppelungen von turnier-feature zur Shell mehr vorhanden.

🧹 Curator-Check

  • ADR-0024 Konformität: Erreicht.
  • V2-Altlasten: Vollständig entfernt.
  • MASTER_ROADMAP Status: Aktualisiert.