# Session Log: Frontend-Architektur-Refactor **Datum:** 26.03.2026 **Agent:** 🏗️ Lead Architect **Dauer:** ~1 Session **Trigger:** Inkonsistente Schichttrennung — fachliche Screens lagen im Shell statt in Features --- ## Problem Die Desktop-App hatte alle Screen-Composables direkt im Shell-Modul (`meldestelle-desktop/screens/`). Das verletzt das Shell-Feature-Core-Pattern: - Shell enthielt Fachlogik (Veranstalter, Veranstaltung, Turnier, ZNS) - `zns-import-feature` war gespalten: ViewModel im Feature, Screen im Shell - `SharedUiModels` (Enums, Badges) lagen im Shell statt in `core/design-system` --- ## Durchgeführte Änderungen ### Neue Feature-Module | Modul | Inhalt | |-------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------| | `frontend/features/veranstalter-feature` | VeranstalterAuswahlScreen, VeranstalterDetailScreen, VeranstalterNeuScreen | | `frontend/features/veranstaltung-feature` | AdminUebersichtScreen, VeranstaltungenScreen, VeranstaltungDetailScreen, VeranstaltungNeuScreen, VeranstaltungUebersichtScreen | | `frontend/features/turnier-feature` | TurnierDetailScreen, TurnierNeuScreen, alle 8 Turnier-Tabs, AktorScreens | ### Verschobene Dateien | Von | Nach | |----------------------------------------------------|----------------------------------------------------| | `shells/.../screens/zns/StammdatenImportScreen.kt` | `features/zns-import-feature/.../presentation/` | | `shells/.../screens/shared/SharedUiModels.kt` | `core/design-system/.../models/` | | `shells/.../screens/shared/PlaceholderContent.kt` | `core/design-system/.../models/` | | `shells/.../screens/veranstalter/*.kt` | `features/veranstalter-feature/.../presentation/` | | `shells/.../screens/veranstaltung/*.kt` | `features/veranstaltung-feature/.../presentation/` | | `shells/.../screens/turnier/*.kt` | `features/turnier-feature/.../presentation/` | | `shells/.../screens/aktor/AktorScreens.kt` | `features/turnier-feature/.../presentation/` | ### Konfiguration - `settings.gradle.kts`: 3 neue Feature-Module eingetragen - `shells/meldestelle-desktop/build.gradle.kts`: 3 neue Feature-Abhängigkeiten - `shells/.../DesktopMainLayout.kt`: Imports auf neue Feature-Packages umgestellt - `shells/.../ScreenPreviews.kt`: Imports auf neue Feature-Packages umgestellt ### Shell nach Refactor Der Shell enthält jetzt nur noch: - `main.kt` — Koin-Init, Window - `DesktopApp.kt` — Root-Composable, Login-Gate - `di/DesktopModule.kt` — Shell-DI - `navigation/DesktopNavigationPort.kt` — Navigation-Port - `screens/layout/DesktopMainLayout.kt` — Layout + Navigation - `screens/preview/ScreenPreviews.kt` — IDE-Previews ### Neue Dokumentation - `docs/06_Frontend/ARCHITECTURE_RULES.md` — verbindliche Architektur-Richtlinien mit Checkliste und Anti-Patterns --- ## Offene Punkte - Gradle-Sync erforderlich, damit Typesafe-Accessors für neue Module generiert werden - `ArchitectureTest` (falls vorhanden) sollte die neuen Schichtgrenzen prüfen --- ## Lessons Learned Architektur-Regeln müssen **schriftlich und verbindlich** festgehalten werden, bevor Code geschrieben wird. Die `ARCHITECTURE_RULES.md` ist ab sofort Pflichtlektüre für jeden Agenten vor dem ersten Commit.