236876a043
- Consolidated and removed redundant steps in `SPRINT_EXECUTION_ORDER.md`. - Simplified descriptions and roadmap formatting for improved clarity. - Updated progress and dependencies to align with Phase 8 objectives. - Adjusted role-specific roadmaps to reflect the latest sprint updates. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
118 lines
5.5 KiB
Markdown
118 lines
5.5 KiB
Markdown
# 🎨 [Frontend Expert] — Zwischenstand & Roadmap
|
||
|
||
> **Stand:** 3. 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
|
||
- [ ] `BewerbRepository` und `AbteilungRepository` anlegen
|
||
- [ ] Koin Feature-Module: Repository-Interfaces auf Default-Impl binden
|
||
- [ ] `AuthApiClient`-Integration: Token-Provider injizierbar
|
||
- [ ] Turnier/Bewerb/Abteilung Backend-Endpunkte verdrahten
|
||
- [ ] `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
|
||
- [ ] `MsValidationWrapper`: `Error.short` inline, `Error.long` als Tooltip
|
||
- [ ] `isValid` im ViewModel für Speichern-Button-State nutzen
|
||
- [ ] OEPS-Nummer: Inline-Validierung beim Tippen
|
||
- [ ] FEI-ID: Inline-Validierung beim Tippen
|
||
- [ ] Lizenzklasse × Bewerbs-Klasse: Warnung wenn nicht erlaubt
|
||
- [ ] Altersklasse Pferd: Warnung wenn nicht kompatibel
|
||
- [ ] 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
|
||
- [ ] 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 Repository-Verdrahtung** — Bewerb/Abteilung-Repos und StoreV2-Ablösung sind der kritische Pfad für echte Daten
|
||
im Frontend.
|
||
2. **B-3 Live-Validierung** — Rulebook hat Spezifikation übergeben (Sprint B-1 ✅); Frontend kann sofort mit
|
||
`OetoValidators` loslegen.
|
||
3. **C-2 VeranstalterNeu** — Offener Punkt aus Session 02.04; Vereinssuche fehlt noch für vollständigen Onboarding-Flow.
|