# 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**.