docs: massive restructuring of documentation, development guides and agent playbooks

This commit is contained in:
2026-06-15 12:54:38 +02:00
parent e4988b4397
commit ce63303b2c
686 changed files with 45423 additions and 319 deletions
@@ -0,0 +1,132 @@
# 🎨 [Frontend Expert] — Zwischenstand & Roadmap
> **Stand:** 12. April 2026
> **Rolle:** KMP, Compose Desktop, State-Management, Navigation, Backend-Anbindung
---
## ✅ Erledigte Sprints
### Sprint A — Abgeschlossen
- [x] **A-1** | ViewModel-Architektur definieren & Referenz-Implementierung
- [x] MVVM mit UDF als verbindliches Muster festgelegt
- [x] `Intent`/`State`-Struktur definiert (Sealed Classes)
- [x] `VeranstalterViewModel` als vollständige Referenz-Implementierung
- [x] Muster-Dokument in `docs/06_Frontend/` abgelegt
- [x] **A-2** | Abteilungs-Logik im Bewerb-Dialog
- [x] CSN-C-NEU: Automatischer Vorschlag der Pflicht-Teilung mit 4 Abteilungen
- [x] AssistChip „Pflicht-Teilung vorgeschlagen" bei erkanntem Typ
- [x] Abteilungs-Typen `SEPARATE_SIEGEREHRUNG` / `ORGANISATORISCH` in UI
### Sprint B (Teilweise) — Abgeschlossene Punkte
- [x] **B-1** | ViewModels für alle V3-Screens
- [x] `TurnierViewModel`, `BewerbViewModel`, `PferdProfilViewModel`
- [x] `ReiterProfilViewModel`, `VereinsViewModel`, `FunktionaerViewModel`
- [x] `AbteilungViewModel` (Startliste, Ergebnisse)
### Zusätzlich erledigt (Session 02.04.2026)
- [x] Navigation V2 / Back-Stack-System implementiert
- [x] Profil-Cards mit Edit-Dialog (Veranstalter, Pferd, Reiter, Verein, Funktionär)
- [x] Onboarding: State-Lift via `rememberSaveable` (Gerätename, Sicherheitsschlüssel)
- [x] Veranstaltungs-Wizard: Bestätigungs-Dialog mit Daten-Vorschau vor finalem Anlegen
- [x] Breadcrumbs und Zurück-Navigation korrigiert
---
## 🔴 Sprint B — Offen (höchste Priorität)
- [ ] **B-2** | Ktor-Clients & Repositories für Backend-Anbindung
- [x] `HttpClient`-Factory zentral konfiguriert (Auth, Timeout, JSON, Logging, Retry)
- [x] `VeranstalterRepository` (Interface + Default-Impl mit Ktor) vollständig
- [x] `TurnierRepository` Interface in commonMain vorbereitet
- [x] Fehler-Mapping HTTP → Domain-Errors einheitlich (`DomainErrors.kt` in `core.network`)
- [x] `BewerbRepository` Interface + `DefaultBewerbRepository` (Ktor) angelegt
- [x] `AbteilungRepository` Interface + `DefaultAbteilungRepository` (Ktor) angelegt
- [x] `DefaultTurnierRepository` (Ktor) angelegt
- [x] DTOs (`TurnierDto`, `BewerbDto`, `AbteilungDto`) + Mapper in commonMain
- [x] Koin Feature-Modul `turnierFeatureModule`: alle 3 Repositories + ViewModels gebunden
- [x] Turnier/Bewerb/Abteilung Backend-Endpunkte verdrahtet (via `ApiRoutes`)
- [ ] `AuthApiClient`-Integration: Token-Provider injizierbar
- [ ] `StoreV2` schrittweise ablösen (Feature-für-Feature, Toggle `useRealBackend`)
- [ ] Akzeptanz-Tests per Fake-Server (Mock Engine, happy + error paths)
- [ ] Dokumentation `docs/06_Frontend/Networking.md`
- [ ] **B-3** | Validierungs-Live-Feedback in Edit-Dialogen
- [x] `MsValidationWrapper` vorhanden: `Error`/`Warning`/`Info` mit Icon + Farbe
- [x] `isValid` in `ReiterProfilViewModel` + `PferdProfilViewModel` für Speichern-Button
- [x] OEPS-Nummer: Live-Validierung beim Tippen (ReiterProfilViewModel, PferdProfilViewModel)
- [x] FEI-ID: Live-Validierung beim Tippen (ReiterProfilViewModel, PferdProfilViewModel)
- [x] Lizenzklasse: Live-Validierung beim Tippen (ReiterProfilViewModel)
- [x] `ReiterProfilEditDialog` mit `MsValidationWrapper` + `isError` + `enabled=state.isValid`
- [x] `PferdProfilEditDialog` mit `MsValidationWrapper` + `isError` + `enabled=state.isValid`
- [x] `ValidationResult.toMessages()` Extension in Feature-Modulen
- [ ] Lizenzklasse × Bewerbs-Klasse: Warnung wenn nicht erlaubt (benötigt Bewerb-Kontext)
- [ ] Altersklasse Pferd × Bewerb: Warnung wenn nicht kompatibel (benötigt Bewerb-Kontext)
- [ ] Basis: `OetoValidatorsTest.kt`-Grenzfälle als Akzeptanzkriterien
- [ ] **B-4** | Kassa-Screen: Veranstaltungs-Kassa
- [ ] Gesamt-Saldo-Ansicht (Salden aus allen Turnieren der Veranstaltung)
- [ ] Turnier-übergreifender Zahlvorgang (eine Zahlung, mehrere Rechnungen)
- [ ] Rechnungsvorschau je Turnier
---
## 🟠 Sprint C — Priorität 2 (nächste Woche)
- [ ] **C-1** | `StoreV2` vollständig ablösen
- [ ] Alle verbleibenden `StoreV2`-Referenzen durch echte Repositories ersetzen
- [ ] `StoreV2` entfernen nach vollständiger Migration
- [ ] **C-2** | VeranstalterNeu: Vereinssuche & Daten-Übernahme
- [ ] Vereins-Suche implementieren (Suche, Auswahl, Mapping)
- [ ] Validierung und Fehleranzeigen
- [ ] **C-3** | LAN-Sync-UI vorbereiten (ADR-0022 ✅ freigegeben)
- [ ] `SyncEvent`-Datenmodell aus `core`-Modul einbinden (KMP-shared)
- [ ] `originNodeId`-Generierung und -Persistierung beim App-Start
- [ ] WebSocket-Client auf Richter-Turm-Desk (Ktor-Client/KMP): HELLO/SYNC_PUSH/SYNC_ACK
- [ ] Geräte-Discovery-UI (gefundene Geräte im LAN via mDNS anzeigen)
- [ ] Sync-Status-Indicator in der Hauptnavigation (verbunden / getrennt / ausstehende Events)
- [ ] Offline-Indikator: ausstehende lokale Events sichtbar machen
- [ ] Domänen-Mastership beachten: Richter-Turm schreibt nur Bewertungen/Ergebnisse
- [ ] **C-4** | Lint-Bereinigung & Code-Qualität
- [x] **C-5** | Design-System Härtung (Desktop Shell) ✅ *12. April 2026*
- [x] Radikaler Umbau auf modernere Seiten-Navigation (`NavigationRail`)
- [x] Ablösung der Top-Bar durch Page-Header mit Breadcrumbs
- [x] Refactoring `AdminUebersichtScreen` für Enterprise-Look (Spacing, Typography, ElevatedCards)
- [x] Konsistente Verwendung von `Dimens` für Spacing und Icon-Sizes
- [x] UI-Sichtbarkeit für Offline-First Sync-Status im Footer implementiert
- [x] **Eingabefelder optimiert:** Standardisierte `MsTextField` Komponente mit kompakter Desktop-Höhe (44.dp) und Enterprise-Styling eingeführt und global angewendet.
- [ ] Ungenutzte Imports/Parameter entfernen
- [ ] `Long → Duration`-Konvertierungen modernisieren
- [ ] Redundante Not-null-Calls vereinfachen
> ⏸️ **USB-Stick Fallback (Export/Import UI)** — Separate Besprechung (Sprint B/C)
---
## 📌 Abhängigkeiten
| Warte auf | Von wem | Betrifft |
|----------------------------------------|-------------------|----------------------------|
| Reiter/Pferde/Vereine/Funktionäre APIs | 👷 Backend B-1 | B-2 Repository-Verdrahtung |
| Rulebook Validierungs-Spezifikation | 📜 Rulebook B-2 | B-3 Live-Validierung |
| Kassa-Service API | 👷 Backend B-2 | B-4 Kassa-Screen |
| ~~ADR-0022 LAN-Sync~~ | ✅ Erledigt | C-3 Sync-UI freigegeben |
| Wireframes Edit-Dialoge / Kassa | 🖌️ UI/UX B-1/B-3 | B-3, B-4 Implementierung |
---
## 💡 Empfehlungen (nach Priorität)
1. **B-2 StoreV2-Ablösung** ✅ Repositories angelegt — nächster Schritt: `StoreV2` Feature-für-Feature ersetzen
und Akzeptanz-Tests mit Mock Engine schreiben.
2. **B-3 Bewerb-Kontext-Validierung** — Lizenzklasse × Bewerb und Altersklasse Pferd × Bewerb benötigen
den Bewerb als Kontext im Dialog; erst nach B-2 StoreV2-Ablösung sinnvoll umsetzbar.
3. **C-2 VeranstalterNeu** — Offener Punkt aus Session 02.04; Vereinssuche fehlt noch für vollständigen Onboarding-Flow.