chore: remove obsolete screens from meldestelle-desktop module
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

- 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>
This commit is contained in:
2026-03-26 15:08:38 +01:00
parent 1d393fdefe
commit c2b3b5889f
50 changed files with 5067 additions and 1016 deletions
@@ -0,0 +1,77 @@
# 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.
@@ -0,0 +1,114 @@
---
type: Journal
status: ACTIVE
owner: Frontend Expert + UI/UX Designer
last_update: 2026-03-26
---
# Session Log: Desktop-App Figma-Konformität (Vision_03)
🎨 **[Frontend Expert]** / 🖌️ **[UI/UX Designer]** / 🧹 **[Curator]** | 26. März 2026
## Kontext
Ziel: Desktop-App an Figma Vision_03 (22 Screenshots) angleichen.
Styling hat keine Priorität — Struktur, Layout und Inhalte stehen im Vordergrund.
---
## Analyse: Figma Vision_03 (22 Screenshots)
| Screenshot | Screen / Tab | Status |
|----------------|--------------------------------|---------------------|
| 01, 04, 05 | TurnierDetail > NENNUNGEN | Struktur vorhanden |
| 02 | TurnierDetail > ERGEBNISLISTEN | Struktur vorhanden |
| 03 | TurnierDetail > STARTLISTEN | Struktur vorhanden |
| 06 | TurnierDetail > ABRECHNUNG | ✅ Neu implementiert |
| 07, 08 | TurnierDetail > ARTIKEL | ✅ Neu implementiert |
| 09, 10, 11, 12 | TurnierDetail > BEWERBE | Struktur vorhanden |
| 13, 14 | TurnierDetail > ORGANISATION | ✅ Neu implementiert |
| 15, 16 | TurnierDetail > STAMMDATEN | ✅ Neu implementiert |
| 17 | VeranstaltungUebersichtScreen | ✅ Überarbeitet |
| 18, 19 | VeranstalterDetailScreen | ✅ Neu implementiert |
| 20, 22 | VeranstalterAuswahlScreen | ✅ Neu implementiert |
| 21 | Neuer Veranstalter (Formular) | ⬜ TODO |
---
## Erledigte Änderungen
### 1. ✅ SharedUiModels.kt (NEU)
- Gemeinsame Enums: `LoginStatus`, `VeranstaltungStatus`
- Gemeinsame Composable: `LoginStatusBadge`
- Eliminiert Duplikate aus 3 Dateien
### 2. ✅ VeranstalterAuswahlScreen.kt (ÜBERARBEITET)
- OEPS-Nummer, Ansprechpartner, E-Mail, Login-Status-Badge
- "+ Neuer Veranstalter"-Button
- Hinweis-Box (blau)
- Abbrechen / "Weiter zum Veranstalter"-Buttons unten
### 3. ✅ VeranstalterDetailScreen.kt (ÜBERARBEITET)
- Avatar-Circle (Initialen)
- OEPS-Nummer, Kontaktdetails-Grid (Ansprechpartner, E-Mail, Telefon, Adresse, Login-Status, Mitglied-seit)
- "Profil bearbeiten"-Button
- Suchfeld + Status-Filter-Chips (Alle/Vorbereitung/Live/Abgeschlossen)
- Veranstaltungs-Liste mit Statistiken (Nennungen, Bewerbe, Letzte Aktivität)
### 4. ✅ VeranstaltungUebersichtScreen.kt (ÜBERARBEITET)
- "VERANSTALTUNG - ÜBERSICHT"-Tab-Header
- Turnier-Nummer als echte ZNS-Nummer (26128, 26129, ...)
- Buttons: Öffnen / Import / Export / USB
### 5. ✅ TurnierStammdatenTab.kt (NEU)
- Turnier-Konfiguration: Nr., Typ (OTO/FEI), ZNS-Import via Internet/USB, Sprache
- Sparten-Checkboxen (Dressur, Springen), Klassen (C/B/A), Kategorien, Datum
- Turnier-Beschreibung: Titel, Sub-Titel
- Sponsoren-Sektion
### 6. ✅ TurnierOrganisationTab.kt (NEU)
- Funktionäre & Offizielle: Turnierleiter, Turnierbeauftragter, Technischer Delegierter, Parcourschef
- Support-Team: Tierarzt, Schmied, Steward
- Richterkollegium: dynamische Liste (Name, Qualifikation-Dropdown, Funktion-Dropdown, Löschen)
- Austragungsplätze: dynamische Liste (Sparte, Größe, Bezeichnung, Löschen)
### 7. ✅ TurnierArtikelTab.kt (NEU)
- Nennungs- und Startgebühren: Nenngebühr, Startgebühr, Sporteuro, Nachnennungsgebühr, Nennungstausch
- Stallungen & Boxen: Box/Tag, Einstreu, Paddock
- Zusatzgebühren: dynamische Liste (Bezeichnung, Betrag, Pflicht-Checkbox)
- Hinweis-Box zur Preisliste
### 8. ✅ TurnierAbrechnungTab.kt (NEU)
- Sub-Tabs: BUCHUNGEN | OFFENE POSTEN | RECHNUNG
- Rechte Sidebar: AUSWAHL | VERKAUF | BUCHUNGEN | ADRESSEN
- Buchungstabelle: Buchungstext, Soll, Haben, Saldo (rot bei offen), Buchen/Rechnung-Checkboxen
- Sidebar: Reiter/Pferd-Suche, Buchen-Betrag, Direkt-Drucken, Zahlungsart (BAR/Scheck/Bankomat/Kreditkarte)
---
## Offene Punkte (TODO)
| Prio | Thema | Aufwand |
|-------|------------------------------------------------------|---------|
| 🟡 P1 | "Neuer Veranstalter"-Formular (Screenshot 21) | Klein |
| 🟡 P1 | BEWERBE-Tab: echte Datentabelle + Bewerb-Formular | Mittel |
| 🟡 P1 | NENNUNGEN-Tab: Pferd+Reiter-Suche + Bewerbsübersicht | Mittel |
| 🟡 P2 | STARTLISTEN-Tab: Bewerbs-Tabs + Sortierung/Zeit | Mittel |
| 🟡 P2 | ERGEBNISLISTEN-Tab: Bewerbs-Tabs + Platzierung | Mittel |
| 🟢 P3 | Styling: Farben, Fonts, Abstände gemäß Figma | Klein |
---
## Referenzen
- Figma Screenshots: `docs/06_Frontend/FIGMA/Vision_03/Screenshots/`
- Quellcode: `frontend/shells/meldestelle-desktop/src/jvmMain/kotlin/at/mocode/desktop/screens/`
- Routing-Diagramm: `docs/06_Frontend/Navigation_Routing_Diagramm.md`
@@ -0,0 +1,54 @@
# Session Log Figma-Konformität Teil 2
**Datum:** 26.03.2026
**Agent:** 🎨 Frontend Expert + 🏗️ Lead Architect (Junie)
**Dauer:** ~1h
---
## Ziel
Offene Punkte aus Session "Figma-Konformität Teil 1" abarbeiten:
- "Neuer Veranstalter"-Formular (Screenshot 21)
- BEWERBE-Tab: echte Datentabelle + alle 4 Detail-Panel Sub-Tabs
- NENNUNGEN-Tab: Pferd+Reiter-Suche + Nennungs-Tabelle + Verkauf/Buchungen
- STARTLISTEN-Tab: Bewerbs-Tabs + Sortierung & Zeit-Panel
- ERGEBNISLISTEN-Tab: Bewerbs-Tabs + Platzierung & Geldpreis-Panel
---
## Umgesetzte Änderungen
### Neue Dateien
| Datei | Inhalt |
|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|
| `VeranstalterNeuScreen.kt` | Formular gemäß Screenshot 21: Info-Banner, Vereinsdaten, Kontaktdaten, Adresse, Footer-Buttons mit Validierung |
| `TurnierBewerbeTab.kt` | Vollständige BEWERBE-Implementierung: Datentabelle (12 Spalten), 4 Sub-Tabs (Bewerb/Bewertung/Geldpreise/Ort/Zeit) mit echten Feldern |
| `TurnierNennungenTab.kt` | NENNUNGEN: Pferd+Reiter-Suche, Nennungs-Tabelle mit Status-Badges, Verkauf/Buchungen, Bewerbsübersicht |
| `TurnierStartlistenTab.kt` | STARTLISTEN: Bewerbs-Tabs, Starter-Tabelle, Sortierungs-Optionen, Zeiten-Panel |
| `TurnierErgebnislistenTab.kt` | ERGEBNISLISTEN: Bewerbs-Tabs, Ergebnis-Tabelle, Platzierung & Geldpreis-Panel |
### Geänderte Dateien
| Datei | Änderung |
|--------------------------------|----------------------------------------------------------------------------|
| `AppScreen.kt` | `VeranstalterNeu` als neuer Screen hinzugefügt |
| `VeranstalterAuswahlScreen.kt` | `onNeuerVeranstalter`-Parameter + Button verdrahtet |
| `DesktopMainLayout.kt` | VeranstalterNeu-Screen registriert + Breadcrumb-Eintrag |
| `TurnierDetailScreen.kt` | Placeholder-Implementierungen entfernt, Verweis auf dedizierte Tab-Dateien |
---
## Qualitätssicherung
- Lint-Check auf alle 9 geänderten/neuen Dateien: **keine Fehler**
---
## Offene Punkte (Phase 4/5)
- Echte Daten aus Backend laden (alle Tabs zeigen noch Placeholder-Daten)
- ZNS-Frontend-Integration (Status-Polling) noch offen
- Web-App-Strategie (ADR-0017) noch nicht entschieden
@@ -0,0 +1,49 @@
# Session Log: Screens-Reorganisation
**Datum:** 2026-03-26
**Agent:** 🎨 Frontend Expert (Junie)
**Scope:** `frontend/shells/meldestelle-desktop/src/jvmMain/kotlin/at/mocode/desktop/screens/`
---
## Ziel
Ordnung in das `screens/`-Paket bringen: 24 Flat-Dateien in logische Unterordner aufteilen für bessere Übersicht und
Wartbarkeit.
## Neue Paketstruktur
```
screens/
├── shared/ → SharedUiModels.kt, PlaceholderContent.kt
├── layout/ → DesktopMainLayout.kt
├── veranstalter/ → VeranstalterAuswahlScreen.kt, VeranstalterDetailScreen.kt, VeranstalterNeuScreen.kt
├── veranstaltung/ → AdminUebersichtScreen.kt, VeranstaltungenScreen.kt, VeranstaltungDetailScreen.kt,
│ VeranstaltungNeuScreen.kt, VeranstaltungUebersichtScreen.kt
├── turnier/ → TurnierDetailScreen.kt, TurnierNeuScreen.kt,
│ TurnierStammdatenTab.kt, TurnierOrganisationTab.kt, TurnierBewerbeTab.kt,
│ TurnierArtikelTab.kt, TurnierAbrechnungTab.kt, TurnierNennungenTab.kt,
│ TurnierStartlistenTab.kt, TurnierErgebnislistenTab.kt
├── zns/ → StammdatenImportScreen.kt
├── aktor/ → AktorScreens.kt
└── preview/ → ScreenPreviews.kt
```
## Durchgeführte Änderungen
| Datei | Änderung |
|--------------------------------------------------|--------------------------------------------------------------------------------------|
| Alle 24 Dateien | Package-Deklaration auf neues Sub-Package angepasst |
| `layout/DesktopMainLayout.kt` | Imports für alle Screen-Packages ergänzt |
| `preview/ScreenPreviews.kt` | Imports für alle Screen- und Tab-Composables ergänzt |
| `veranstalter/VeranstalterAuswahlScreen.kt` | Import `shared.LoginStatus`, `shared.LoginStatusBadge` |
| `veranstalter/VeranstalterDetailScreen.kt` | Import `shared.LoginStatus`, `shared.LoginStatusBadge`, `shared.VeranstaltungStatus` |
| `veranstaltung/AdminUebersichtScreen.kt` | Import `shared.VeranstaltungStatus` |
| `veranstaltung/VeranstaltungUebersichtScreen.kt` | Import `shared.VeranstaltungStatus` |
| `DesktopApp.kt` | Import von `screens.DesktopMainLayout``screens.layout.DesktopMainLayout` |
## Verifikation
- Lint-Check auf alle kritischen Dateien: ✅ keine Fehler
- Alte Flat-Dateien gelöscht
- `screens/`-Root enthält nur noch die 8 Unterordner
@@ -0,0 +1,78 @@
---
type: Journal
status: ACTIVE
owner: Lead Architect
last_update: 2026-03-26
---
# Session Log: Struktur-Sprint & Orientierung
🏗️ **[Lead Architect]** / 🧹 **[Curator]** | 26. März 2026
## Kontext
Nach intensiver Phase-4-Arbeit fehlte der Überblick. Ziel dieser Session: Orientierung
wiederherstellen, offene Baustellen priorisieren, zwei konkrete Aufgaben abarbeiten.
---
## Erledigte Aufgaben
### 1. ✅ Routing-Diagramm erstellt
- **Artefakt:** `docs/06_Frontend/Navigation_Routing_Diagramm.md`
- Vollständiges Mermaid-Flowchart aller Screens und Navigationsübergänge
- Screen-Status-Tabellen (✅ implementiert / 🟡 teilweise / ⬜ Placeholder / 🗑️ Relikt)
- **Fund:** 9 Web-App-Relikte im `AppScreen` (siehe offene Entscheidung unten)
### 2. ✅ CI/CD Gradle-Version synchronisiert
- **Datei:** `.gitea/workflows/docker-publish.yaml`
- `GRADLE_VERSION` von `9.3.1` auf `9.4.0` korrigiert (synchron mit `gradle-wrapper.properties`)
- `paths:`-Whitelist war bereits korrekt — Doku-Änderungen triggern die Pipeline nicht
---
## Priorisierte Backlog-Übersicht (Stand 26.03.2026)
| Prio | Thema | Agent | Status |
|-------|--------------------------------------------|--------------------------------|----------------------|
| 🔴 P1 | Desktop-App: Figma-Konformität (Vision_03) | 🎨 Frontend Expert + 🖌️ UI/UX | ⬜ Offen |
| 🔴 P1 | ZNS-Importer Phase 3: Status-Polling | 🎨 Frontend Expert | ⬜ Offen |
| 🟡 P2 | Web-App-Strategie: ADR erforderlich | 🏗️ Lead Architect | ⬜ Entscheidung offen |
| 🟡 P2 | Docker & Datenbanken aufräumen | 🐧 DevOps Engineer | ⬜ Offen |
| 🟢 P3 | CI/CD weiter optimieren | 🐧 DevOps Engineer | ✅ Teilweise erledigt |
---
## Offene Entscheidung: Web-App-Strategie
Im `AppScreen` existieren 9 Screens, die aus der alten Web-App stammen und in der
Desktop-App nicht gerendert werden:
`Landing`, `Home`, `Dashboard`, `Ping`, `Profile`, `OrganizerProfile`,
`AuthCallback`, `Nennung`, `CreateTournament`
**Optionen:**
- **A) Bereinigen:** Relikte aus `AppScreen` entfernen → sauberer Code, weniger Verwirrung
- **B) Behalten:** Für zukünftige Web-App-Phase (Phase 7) aufheben → kein Aufwand jetzt
- **C) Web-App wieder aufbauen:** `meldestelle-portal` reaktivieren → ADR + Planung nötig
**ADR-0017 erforderlich**, sobald Entscheidung getroffen.
---
## Nächste empfohlene Schritte
1. **Web-App-Entscheidung** treffen (Option A/B/C) → ADR-0017
2. **Desktop-App Figma-Delta** aufnehmen: Figma Vision_03 vs. aktueller Compose-Code
3. **ZNS Phase 3** abschließen: Status-Polling im `StammdatenImportScreen`
4. **Docker/DB** Ist-Zustand prüfen
---
## Referenzen
- Routing-Diagramm: `docs/06_Frontend/Navigation_Routing_Diagramm.md`
- CI/CD Pipeline: `.gitea/workflows/docker-publish.yaml`
- MASTER_ROADMAP: `docs/01_Architecture/MASTER_ROADMAP.md`