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>
5.5 KiB
5.5 KiB
🎨 [Frontend Expert] — Zwischenstand & Roadmap
Stand: 3. April 2026 Rolle: KMP, Compose Desktop, State-Management, Navigation, Backend-Anbindung
✅ Erledigte Sprints
Sprint A — Abgeschlossen
-
A-1 | ViewModel-Architektur definieren & Referenz-Implementierung
- MVVM mit UDF als verbindliches Muster festgelegt
Intent/State-Struktur definiert (Sealed Classes)VeranstalterViewModelals vollständige Referenz-Implementierung- Muster-Dokument in
docs/06_Frontend/abgelegt
-
A-2 | Abteilungs-Logik im Bewerb-Dialog
- CSN-C-NEU: Automatischer Vorschlag der Pflicht-Teilung mit 4 Abteilungen
- AssistChip „Pflicht-Teilung vorgeschlagen" bei erkanntem Typ
- Abteilungs-Typen
SEPARATE_SIEGEREHRUNG/ORGANISATORISCHin UI
Sprint B (Teilweise) — Abgeschlossene Punkte
- B-1 | ViewModels für alle V3-Screens
TurnierViewModel,BewerbViewModel,PferdProfilViewModelReiterProfilViewModel,VereinsViewModel,FunktionaerViewModelAbteilungViewModel(Startliste, Ergebnisse)
Zusätzlich erledigt (Session 02.04.2026)
- Navigation V2 / Back-Stack-System implementiert
- Profil-Cards mit Edit-Dialog (Veranstalter, Pferd, Reiter, Verein, Funktionär)
- Onboarding: State-Lift via
rememberSaveable(Gerätename, Sicherheitsschlüssel) - Veranstaltungs-Wizard: Bestätigungs-Dialog mit Daten-Vorschau vor finalem Anlegen
- Breadcrumbs und Zurück-Navigation korrigiert
🔴 Sprint B — Offen (höchste Priorität)
-
B-2 | Ktor-Clients & Repositories für Backend-Anbindung
HttpClient-Factory zentral konfiguriert (Auth, Timeout, JSON, Logging, Retry)VeranstalterRepository(Interface + Default-Impl mit Ktor) vollständigTurnierRepositoryInterface in commonMain vorbereitet- Fehler-Mapping HTTP → Domain-Errors einheitlich
BewerbRepositoryundAbteilungRepositoryanlegen- Koin Feature-Module: Repository-Interfaces auf Default-Impl binden
AuthApiClient-Integration: Token-Provider injizierbar- Turnier/Bewerb/Abteilung Backend-Endpunkte verdrahten
StoreV2schrittweise ablösen (Feature-für-Feature, ToggleuseRealBackend)- 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.shortinline,Error.longals TooltipisValidim 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 |
StoreV2vollständig ablösen- Alle verbleibenden
StoreV2-Referenzen durch echte Repositories ersetzen StoreV2entfernen nach vollständiger Migration
- Alle verbleibenden
-
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 auscore-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 |
| ✅ 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)
- B-2 Repository-Verdrahtung — Bewerb/Abteilung-Repos und StoreV2-Ablösung sind der kritische Pfad für echte Daten im Frontend.
- B-3 Live-Validierung — Rulebook hat Spezifikation übergeben (Sprint B-1 ✅); Frontend kann sofort mit
OetoValidatorsloslegen. - C-2 VeranstalterNeu — Offener Punkt aus Session 02.04; Vereinssuche fehlt noch für vollständigen Onboarding-Flow.