meldestelle/docs/99_Journal/2026-03-26_Session_Log_Architektur_Refactor.md
Stefan Mogeritsch c2b3b5889f
Some checks failed
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Failing after 2m56s
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Failing after 3m3s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Failing after 2m49s
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Successful in 2m13s
chore: remove obsolete screens from meldestelle-desktop module
- Deleted unused screens including `AdminUebersichtScreen`, `AktorScreens`, `StammdatenImportScreen`, `TurnierDetailScreen`, and supporting components such as `PlaceholderContent`.
- Cleaned up references and placeholders to streamline module structure.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
2026-03-26 15:09:44 +01:00

3.7 KiB

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.