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,101 @@
# 🏗️ [Lead Architect] — Zwischenstand & Roadmap
> **Stand:** 12. April 2026
> **Rolle:** Strategie, Architektur-Entscheidungen (ADRs), Domänen-Modell, Master-Roadmap
---
## ✅ Erledigte Sprints
### Sprint A — Abgeschlossen
- [x] **A-1** | ADR-0021 Tenant-Resolution-Strategie
- [x] Schema-per-Tenant vs. Tenant-ID analysiert → Entscheidung: Eine Veranstaltung = eine Datenbank
- [x] ADR-0021 in `docs/01_Architecture/adr/0021-tenant-resolution-strategy-de.md` abgelegt
- [x] Backend Developer informiert (Backend A-1 gestartet)
- [x] **A-2** | Domänen-Modell formal präzisiert
- [x] Hierarchie `Veranstaltung → Turnier → Bewerb → Abteilung` festgeschrieben
- [x] `TeilnehmerKonto` auf Veranstaltungsebene (Multi-Turnier) ins Modell aufgenommen
- [x] Veranstaltungs-Kassa mit Turnier-übergreifendem Saldo modelliert
- [x] Abteilungs-Typen `SEPARATE_SIEGEREHRUNG` und `ORGANISATORISCH` definiert
- [x] Curator beauftragt: `Ubiquitous_Language.md` aktualisiert
---
### Sprint B — Abgeschlossen
- [x] **B-1** | ADR für LAN-Sync-Protokoll schreiben
- [x] Optionen analysieren: Event-Sourcing vs. CRDT vs. Timestamp-Sync
- [x] Entscheidung für Meldestelle ↔ Richter-Turm Sync getroffen: **Event-Sourcing Light mit Lamport-Uhren** (Option
D)
- [x] ADR-0022 in `docs/01_Architecture/adr/0022-lan-sync-protocol-de.md` abgelegt
- [x] Backend Developer und Frontend Expert über Entscheidung informiert (siehe jeweilige Roadmaps)
> ⏸️ **USB-Stick Fallback** — Separate Besprechung zu einem späteren Zeitpunkt (Sprint B/C)
---
### Sprint C — Abgeschlossen
- [x] **C-1** | Zeitplan-Optimierung Konzept
- [x] Fachliche Anforderungen (Use Cases) definiert
- [x] Zeitberechnungs-Algorithmus spezifiziert
- [x] Drag & Drop Logik für Kalender-Ansicht entworfen
- [x] Konzept-Dokument in `docs/01_Architecture/` abgelegt → `docs/01_Architecture/konzept-zeitplan-optimierung-de.md`
- [x] **C-2** | MASTER_ROADMAP aktualisieren
- [x] Phase 9 Fortschritt reflektieren
- [x] Link zum Zeitplan-Konzept ergänzt
- [x] Feature-Migration (Frontend) dokumentiert
- [x] Phase 10 & 11 (Series & Results) als abgeschlossen markiert (Stand 11.04./12.04.)
---
## 🟠 Sprint D — In Arbeit
- [ ] **D-1** | USB-Stick Fallback (Sync)
- [ ] Technische Machbarkeit (File-Storage vs. SQLite-Export) prüfen
- [ ] ADR für Offline-Transfer erstellen
- [x] **D-2** | Abrechnungs-Architektur (Billing-Service Integration)
- [x] Datenmodell für Buchungskonten und Transaktions-Logik finalisiert
- [x] Integration des `billing-service` in die Gateway-Routing-Struktur
- [x] API-Spezifikation für automatisierte Buchungen aus `entries` und `results` Contexts
---
## 🔵 Sprint E — Desktop-Fokus (Beschleunigung)
- [x] **E-1** | Desktop-Priorisierung (Strategie-Anpassung)
- [x] Analyse "Cloud-Connected" vs. "Offline-First Authority"
- [x] Fokus-Verschiebung: Desktop-Zentrale wird primärer Master (ADR-0022/Concept)
- [x] Identifikation fehlender lokaler Persistenz-Layer (SQLDelight)
- [ ] **E-2** | Offline-First Sync-Infrastruktur (Härtung)
- [ ] Implementierung `SyncEvent`-Logger in `core:sync`
- [ ] SQLDelight Schema-Migration für lokales Event-Log
- [ ] Hintergrund-Sync Worker (opportunistisch)
- [ ] **E-3** | UI/UX Härtung für Offline-Betrieb
- [ ] Globaler Sync-Status in der Desktop-Sidebar
- [ ] Optimistisches UI für Nennungen und Ergebnisse
- [ ] Fehler-Behandlung bei Verbindungsabbrüchen (mDNS/WAN)
---
## 📌 Abhängigkeiten
| Meine Aufgabe | Blockiert wen |
|--------------------|----------------------------------------------------------|
| ADR-0021 ✅ | 👷 Backend: Tenant-Isolation (Backend Sprint A) |
| Domänen-Modell ✅ | 👷 Backend: Schema-Design; 🎨 Frontend: ViewModel-Design |
| LAN-Sync ADR (B-1) | 🎨 Frontend: Sync-UI; 👷 Backend: Sync-Endpunkte |
| Sync-Konzept (C-1) | 🐧 DevOps: mDNS/WebSocket-Infrastruktur |
| Billing-Arch (D-2) | 👷 Backend: Buchungs-Logik; 🎨 Frontend: Kassa-UI |
---
## 💡 Empfehlung
**Fokus auf Phase 12:** Die technische Infrastruktur für das Billing steht (Consul, Gateway, Repository). Nun muss die fachliche Buchungslogik (Soll/Haben, PDF-Rechnung) gehärtet werden.
@@ -0,0 +1,61 @@
# 👷 [Backend Developer] — Zwischenstand & Roadmap
> **Stand:** 10. April 2026
> **Rolle:** Spring Boot / Ktor, Kotlin, SQL, API-Design, Datenbankschema, Services
---
## ✅ Erledigte Sprints
### Sprint A — Abgeschlossene Punkte
- [x] **A-1** | Tenant-Isolation vollständig ausrollen
- [x] **A-2** | Datenbankschema: Domänen-Hierarchie umgesetzt
- [x] **A-3** | Validierungs-Grundlage: Turnierkategorie-Limits
### Sprint B — Abgeschlossene Punkte
- [x] **B-1** | CRUD-Endpunkte (Reiter, Pferde, Vereine, Funktionäre)
- [x] **B-2** | Kassa-Service (Teilnehmer-Konten & Buchungen v1)
- [x] **B-3** | ÖTO-Validierung (OEPS/FEI-ID, Lizenzen)
---
## 🔴 Sprint C — Offen (höchste Priorität)
- [ ] **C-1** | Nennungs-Service (Grundstruktur)
- [ ] Tabelle `nennungen` anlegen (FK → `abteilung_id`, Status-Automat)
- [ ] `NennungsService`: Erstellen, Prüfen, Bestätigen, Ablehnen
- [ ] Nennungs-Workflow-Endpunkte
- [ ] **C-2** | Stammdaten-Seeder
- [ ] Initiale Testdaten (Reiter, Pferde, Vereine) für Entwicklungsumgebung
- [ ] Seed-Skript in `config/scripts/` ablegen
- [ ] **C-3** | LAN-Sync-Endpunkte (ADR-0022 ✅ freigegeben)
- [ ] `SyncEvent`-Datenmodell in `core`-Modul definieren (KMP-shared, Phase 1)
- [ ] SQLDelight-Tabellen `sync_events`, `sync_snapshots` anlegen
- [ ] `LamportClock`-Implementierung (thread-safe, persistent)
- [ ] WebSocket-Server auf Meldestelle-Desk (Ktor): HELLO/HELLO_ACK/SYNC_DELTA/SYNC_PUSH
- [ ] mDNS-Discovery-Service integrieren (gemäß ADR-0020)
- [ ] Domänen-Mastership-Validierung im Event-Handler
- [ ] Reconnect-Logik mit Delta-Sync (`lastKnownSeq`)
---
## 📌 Abhängigkeiten
| Warte auf | Von wem | Betrifft |
|----------------------------------------|-------------|-----------------|
| Rulebook B-2 Spezifikation | 📜 Rulebook | A-3, B-3 |
| ~~ADR-0022 (LAN-Sync)~~ | ✅ Erledigt | C-3 freigegeben |
---
## 💡 Empfehlungen (nach Priorität)
1. **A-3 / B-3 Sonderregeln & ÖTO-Validierung** — Warten auf Rulebook B-2 Übergabe; Validator-Interface-Grundstruktur
kann schon vorbereitet werden.
2. **B-1 OpenAPI** — Springdoc-Dokumentation für alle neuen Endpunkte (Reiter/Pferde/Vereine/Funktionäre)
veröffentlichen.
3. **B-2 Kassa-Service** — Nächster großer Block nach Abschluss der CRUD-Endpunkte.
@@ -0,0 +1,49 @@
# 🧹 [Curator] — Zwischenstand & Roadmap
> **Stand:** 12. April 2026
> **Rolle:** Dokumentation, Session-Logs, Ubiquitous Language, Ordnung in `docs/`
---
## ✅ Erledigte Sprints
### Sprint A — Abgeschlossen
- [x] **A-1** | `Ubiquitous_Language.md` aktualisiert (nach Domänen-Modell vom Architect)
- [x] **A-2** | Event-First-Workflow dokumentiert → `docs/02_Guides/Event-First-Workflow.md`
- [x] **A-3** | Navigation-V3 dokumentiert → `docs/06_Frontend/Navigation_V3_Screen-Baum_und_Back-Stack.md`
- [x] **A-4** | Tenant-Konzept dokumentiert →
`docs/01_Architecture/Reference/Tenant-Konzept_Eine-Veranstaltung-eine-Datenbank.md`
- [x] **A-5** | Session-Log Meldestelle-Besprechung (02.04.2026) →
`docs/99_Journal/2026-04-02_Meldestelle_Besprechung_Session-Log.md`
### Sprint B — Abgeschlossen
- [x] **B-0** | Rulebook-Session (03.04.2026) dokumentiert
- [x] **B-1** | Alle Roadmaps geprüft und korrigiert (03.04. & 12.04.)
- [x] **B-2** | `docs/05_Backend/` aktualisiert: Schema (V1-V009) & API-Übersicht Stammdaten
- [x] **B-3** | `docs/06_Frontend/` aktualisiert: MVVM-Muster & ViewModel-Referenzen
### Sprint C — Abgeschlossen
- [x] **C-1** | `README.md` aktualisiert: Desktop-App Fokus & Quickstart
- [x] **C-2** | Setup-Guide aktualisiert → `docs/02_Guides/start-local.md`
- [x] **C-3** | Session-Logs für Phase 10, 11 & 12 (Serie, Ergebnisse, Billing) erstellt
- [x] **C-4** | Dokumentation der UI/UX-Härtung (Desktop-Shell & Eingabefelder) ✅ *12. April 2026*
---
## 🟠 Sprint D — In Arbeit
- [ ] **D-1** | Kassa-Endpunkte in API-Doku ergänzen (sobald Billing-Service final)
- [ ] **D-2** | V1-Code-Bereinigung koordinieren (identifizieren veralteter Module)
- [ ] **D-3** | Sprint-Reports Phase 10-12 finalisieren
---
## 📌 Abhängigkeiten
| Warte auf | Von wem | Betrifft |
|--------------------------|-------------|---------------------|
| Billing-Service Final | 👷 Backend | D-1 Kassa-Doku |
| Sprint-Berichte (Dev/QA) | 👷 🎨 🧐 | D-3 Reports |
@@ -0,0 +1,117 @@
# 🐧 [DevOps Engineer] — Zwischenstand & Roadmap
> **Stand:** 3. April 2026
> **Rolle:** Docker, CI/CD, Gradle, Security, Desktop-Packaging, Infrastruktur
---
## ✅ Erledigte Sprints
### Sprint A — Abgeschlossen
- [x] **A-1** | Docker-Compose-Setup auf aktuellen Stand gebracht
- [x] Alle Services in `docker-compose.yaml` / `dc-*.yaml` geprüft
- [x] Lokale Entwicklungsumgebung startet mit einem einzigen Befehl
- [x] Healthchecks für alle Services definiert
### Sprint B — Abgeschlossen
- [x] **B-1** | CI/CD Pipeline für Compose Desktop Tests (headless)
- [x] Gitea Actions Workflow: `.gitea/workflows/desktop-tests.yml`
- [x] Headless-Umgebung: `xvfb-run` (1920×1080×24) für Compose Desktop Tests
- [x] Gradle-Task: `:frontend:shells:meldestelle-desktop:jvmTest`
- [x] Build-Artefakte gespeichert (JARs, Compose-Distributables)
- [x] **B-2** | Gradle-Build-Optimierungen
- [x] Build-Cache aktiv: `org.gradle.caching=true`
- [x] Parallele Builds aktiv: `org.gradle.parallel=true`
- [x] Headless-Flag: `-Djava.awt.headless=true`
- [x] Gradle Wrapper auf `9.4.0` aktualisiert
### Sprint C — Abgeschlossen
- [x] **C-1** | Desktop-App Packaging konfiguriert
- [x] `compose.desktop.nativeDistributions` vollständig in `build.gradle.kts` konfiguriert
- [x] Linux: `.deb`-Paket — `packageDeb` Task, Icon PNG 512×512, `debMaintainer`, `menuGroup`
- [x] Windows: `.msi`-Installer — `packageMsi` Task, Icon ICO, `upgradeUuid`, `menuGroup`, `shortcut`
- [x] macOS: `.dmg`-Image — `packageDmg` Task, Icon ICNS, `bundleID`, `appCategory`
- [x] App-Metadaten: `packageName`, `description`, `vendor`, `copyright`, `licenseFile`
- [x] Eingebettetes JRE: `modules(...)` mit minimalem JRE-Footprint konfiguriert
- [x] JVM-Args für gepackte App: `-Xms128m`, `-Xmx512m`, `-Dfile.encoding=UTF-8`
- [x] Icon-Ressourcen-Verzeichnis angelegt + `ICONS_PLACEHOLDER.md` mit Anforderungen
- [ ] ⚠️ **Offen:** Echte Icon-Dateien (`icon.png`, `icon.ico`, `icon.icns`) erstellen/einfügen
- [ ] ⚠️ **Offen:** Testinstallation auf Ziel-Betriebssystem durchführen (nach Icon-Erstellung)
- [x] **C-2** | Semantic Versioning eingeführt
- [x] Versionierungsschema definiert: `MAJOR.MINOR.PATCH[-QUALIFIER]`
- [x] Zentrale Versionsquelle: `version.properties` im Root-Projekt (Single Source of Truth)
- [x] Root `build.gradle.kts`: Version wird aus `version.properties` gelesen (kein Hardcode mehr)
- [x] Desktop `build.gradle.kts`: `packageVersion` aus `version.properties` (reines `MAJOR.MINOR.PATCH`)
- [x] Git-Tagging-Strategie definiert: `vMAJOR.MINOR.PATCH` (z. B. `v1.0.0`)
- [x] Release-Workflow angelegt: `.gitea/workflows/release.yml`
- Trigger: Änderung an `version.properties` auf `main`/`master` + manuell (Dry-Run-Option)
- Job 1: Version lesen, Tag-Duplikat-Check, Git-Tag erstellen & pushen
- Job 2: Linux `.deb` bauen & als Artefakt hochladen
- Job 3: Windows `.msi` bauen & als Artefakt hochladen
- Job 4: Release-Summary (Markdown-Report)
- [x] `CHANGELOG.md` angelegt (Keep-a-Changelog-Format, SemVer)
---
## 🔴 Sprint C — Restpunkte
- [ ] **C-3** | Produktions-Deployment vorbereiten
- [ ] Reverse-Proxy-Konfiguration (Nginx / Traefik) für Backend prüfen
- [ ] HTTPS-Zertifikat-Management dokumentieren
- [ ] Backup-Strategie für Produktionsdatenbanken definieren
---
## 🟠 Sprint D — Priorität 2 (nächste Woche)
- [ ] **D-1** | Multi-Tenant Datenbankinfrastruktur absichern
- [ ] Sicherstellen: Pro-Tenant-Schema in Postgres korrekt isoliert
- [ ] Monitoring: Tenant-Schemas in Grafana-Dashboard sichtbar
- [ ] Backup: Pro-Tenant-Backup-Strategie definieren
- [ ] **D-2** | mDNS / LAN-Discovery Infrastruktur (nach ADR-0022)
- [ ] mDNS-Dienst (Avahi o. ä.) in Docker-Compose für lokale Entwicklung bereitstellen
- [ ] WebSocket-Endpunkt in Nginx/Traefik-Konfiguration durchreichen
> ⏸️ **Pangolin / externer Zugriff** — Nur für Remote-Support-Szenarien; kein MVP-Blocker
---
## 📌 Abhängigkeiten
| Warte auf | Von wem | Betrifft |
|-----------------------------|-------------------|---------------------|
| ADR-0022 LAN-Sync | 🏗️ Architect B-1 | D-2 mDNS-Infra |
| QA: Test-Integration in CI | 🧐 QA C-4 | C-1 Packaging-Tests |
| Icon-Dateien (PNG/ICO/ICNS) | 🖌️ UI/UX | C-1 Release-Build |
---
## 💡 Empfehlungen (nach Priorität)
1. **Icons erstellen** — Vor dem ersten echten Release-Build müssen `icon.png`, `icon.ico` und
`icon.icns` in `frontend/shells/meldestelle-desktop/src/jvmMain/resources/` abgelegt werden.
Siehe `ICONS_PLACEHOLDER.md` für Anforderungen und ImageMagick-Schnell-Befehle.
2. **Testinstallation** — Nach Icon-Erstellung: `.deb` auf Ubuntu/Debian, `.msi` auf Windows 10/11
installieren und Startmenü-Eintrag / Desktop-Verknüpfung prüfen.
3. **C-3 Produktions-Deployment** — Reverse-Proxy + HTTPS vor erstem Beta-Test konfigurieren.
4. **D-1 Tenant-Backup** — Wenn eine Veranstaltung = eine Datenbank, muss jeder Tenant einzeln
gesichert werden können.
---
## 🗂️ Geänderte Dateien (diese Session)
| Datei | Änderung |
|----------------------------------------------------------------------------------|------------------------------------------------------------------------|
| `version.properties` | **NEU** — Zentrale SemVer-Quelle (`1.0.0-SNAPSHOT`) |
| `build.gradle.kts` (root) | Version aus `version.properties` statt hardcoded |
| `frontend/shells/meldestelle-desktop/build.gradle.kts` | Vollständige `nativeDistributions`-Konfiguration (Linux/Windows/macOS) |
| `frontend/shells/meldestelle-desktop/src/jvmMain/resources/ICONS_PLACEHOLDER.md` | **NEU** — Icon-Anforderungen dokumentiert |
| `.gitea/workflows/release.yml` | **NEU** — Release-Workflow (Tag + Packaging) |
| `CHANGELOG.md` | **NEU** — Keep-a-Changelog-Format |
@@ -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.
@@ -0,0 +1,73 @@
# 🧐 [QA Specialist] — Zwischenstand & Roadmap
> **Stand:** 12. April 2026
> **Rolle:** Test-Strategie, Edge-Cases, Integrationstests, Regressionssicherung
---
## ✅ Erledigte Sprints
### Sprint A — Abgeschlossen
- [x] **A-1** | Test-Strategie für Desktop-App definiert
- [x] Testpyramide für Compose Desktop festgelegt (Unit / Integration / UI-Tests)
- [x] Tooling entschieden: `kotlin.test`, Compose UI Test, Mockk
- [x] Test-Konventionen dokumentiert (Namensschema, Ordnerstruktur, Arrange-Act-Assert)
- [x] `IdempotencyPluginTest` stabilisiert (Unit-Test GRÜN)
- [x] `OetoValidatorsTest.kt` als Basis für Grenzfall-Abdeckung etabliert
---
### Sprint B — Abgeschlossen
- [x] **B-1** | Test-Suite: Navigation & Back-Stack (V2/V3)
- [x] Navigations-Flows für alle Screens (vorwärts + zurück)
- [x] Back-Stack-Verhalten nach Zurück-Navigation (korrekter Zustand)
- [x] SingleTop-Tabs: kein doppelter Stack-Eintrag bei Tab-Wechsel
- [x] Logout poppt MainShell komplett (keine Screens im Back-Stack)
- [x] **B-2** | Test-Suite: Onboarding-Wizard Edge-Cases
- [x] Leere Pflichtfelder → Speichern-Button bleibt deaktiviert
- [x] Schnelles Doppelklick auf „Weiter" / „Speichern" → kein doppelter Submit
- [x] Abbrechen mitten im Wizard → kein inkonsistenter Zustand
- [x] Zurück-Navigation: Gerätename und Sicherheitsschlüssel bleiben erhalten (`rememberSaveable`)
- [x] OnboardingValidator-Tests (GRÜN)
- [x] **B-3** | Test-Suite: Abteilungs-Logik
- [x] CSN-C-NEU ≤95cm: Pflicht-Teilung `ohne Lizenz` / `mit Lizenz` wird vorgeschlagen
- [x] CSN-C-NEU ≥100cm: Pflicht-Teilung `R1` / `R2+` wird vorgeschlagen
- [x] `ORGANISATORISCH`: Gesamtrangliste korrekt zusammengeführt
- [x] `SEPARATE_SIEGEREHRUNG`: Abteilungen werden nicht zusammengeführt
- [x] AbteilungsRegelServiceTest.kt (GRÜN)
- [x] **B-4** | Test-Suite: ViewModel-Verhalten
- [x] State-Initialisierung korrekt (Loading-State beim Start)
- [x] Intent → State-Transition für alle Sealed-Class-Intents
- [x] Fehler-State bei simuliertem Backend-Fehler korrekt gesetzt
---
## 🟠 Sprint C — In Arbeit
- [ ] **C-1** | Test-Suite: Mandanten-Isolation (nach Backend A-1)
- [ ] Veranstaltung A kann keine Daten von Veranstaltung B lesen
- [ ] Basis: Backend E2E-Isolationstest re-enablen (aktuell `@Disabled`)
- [x] **C-2** | Test-Suite: Ergebniserfassung & Platzierung (Phase 11)
- [x] Validierung der Platzierungs-Logik (ÖTO-konform)
- [x] PDF-Export Test (Ergebnislisten)
- [x] `ErgebnisRepository` Integrationstests
- [ ] **C-3** | Test-Suite: Kassa und Zahlvorgang (Phase 12)
- [ ] Teilnehmer an 2 Turnieren → 1 Zahlvorgang → 2 korrekte separate Rechnungen
- [ ] Saldo-Berechnung korrekt (Summe aus beiden Turnier-Kassas)
- [ ] Bereits bezahlte Beträge werden nicht doppelt verrechnet
---
## 📌 Abhängigkeiten
| Warte auf | Von wem | Betrifft |
|--------------------------|-------------|------------------------|
| Backend B-2 Kassa-Service| 👷 Backend | C-3 Kassa-Tests |
| DevOps CI/CD Pipeline | 🐧 DevOps | CI-Integration |
@@ -0,0 +1,87 @@
# 📜 [ÖTO/FEI Rulebook Expert] — Zwischenstand & Roadmap
> **Stand:** 3. April 2026 (Session 2)
> **Rolle:** Regelwerks-Wächter, Validierungs-Spezialist, Compliance (ÖTO, FEI)
---
## ✅ Erledigte Sprints
### Sprint A — Abgeschlossen
- [x] **A-1** | Validierungs-Spezifikation erstellen (v0.3 DRAFT)
- [x] Paragraphen-Pins ergänzt (Springen § 231, Dressur § 103, CCN §§ 3xx)
- [x] Einheitliche Label-Konventionen: `ohne Lizenz`, `mit Lizenz`, `R2 und höher`; Keys: `LZF_ONLY`, `R1_PLUS`,
`R1_ONLY`, `R2_PLUS`
- [x] Optionale Jugend-/Jahrgangsteilungen als Regulation-as-Data modelliert (keine systemweite Pflicht)
- [x] Abteilungs-Trennungs-Schwellenwerte dokumentiert →
`docs/03_Domain/02_Reference/OETO_Regelwerk/Abteilungs-Trennungs-Schwellenwerte.md`
- [x] Warn-Logik-Spezifikation →
`docs/03_Domain/02_Reference/OETO_Regelwerk/Warn-Logik-Spezifikation-competition-context.md`
- [x] CVN (Voltigieren): § 39 Abs. 2 als Fallback; eigene OEPS-CVN-Regeln gelten
- [x] CAN (Fahren): § 39 Abs. 2 als Fallback; § 850 Abs. 9 für F1+ Fahrertreffen
- [x] `OetoValidators` (KMP) implementiert; `OetoValidatorsTest.kt` grün
### Sprint B (Teilweise) — Abgeschlossen
- [x] **B-1** | Validierungs-Implementierung Frontend begleiten
- [x] Spezifikation v0.3 DRAFT an 🎨 Frontend übergeben
- [x] Implementierung geprüft: Live-Validierung entspricht Regelwerks-Anforderungen
- [x] Fehlermeldungs-Texte auf Korrektheit und Verständlichkeit geprüft
- [x] Session-Log → `docs/99_Journal/2026-04-03_Rulebook_B1_Validierung_Frontend.md`
---
## 🟡 Sprint B — Teilweise offen
- [ ] **B-2** | Validierungs-Implementierung Backend begleiten
- [x] FEI Legacy→Numeric Resolver implementiert (`/api/fei/resolve/{id}`) — erste Version in Masterdata-SCS
- [x] Lizenz-/Altersmatrix als Regulation-as-Data an 👷 Backend übergeben
- [x] `LizenzKlasseE`-Enum: `R4` ergänzt, `RD4`-Fehler in V008 korrigiert
- [x] Flyway V009: `license_height_matrix` + `horse_min_age_matrix` angelegt und befüllt
- [x] B-2-Übergabe-Spezifikation →
`docs/03_Domain/02_Reference/OETO_Regelwerk/B2-Backend-Uebergabe-Regulation-as-Data.md`
- [x] `Validierungsregeln.md`: `LZF``LIZENZFREI` korrigiert, Version 0.4, Verweis auf B2-Spec ergänzt
- [ ] Serverseitige Validierung prüfen: Werden alle Regeln korrekt durchgesetzt?
- [ ] Backend-Endpunkte `/api/regulation/*` implementieren (👷 Backend)
- [ ] Abweichungen Backend ↔ Frontend-Validierung dokumentieren und klären
- [ ] Lizenz×Bewerb-Tabellen (Springen + Dressur) von DRAFT auf STABLE anheben (nach Fachfreigabe)
---
## 🟠 Sprint C — Priorität 2 (nächste Woche)
- [ ] **C-1** | `AltersklasseRechner` implementieren und testen
- [ ] Altersklassen-Berechnung für Pferd (Jahrgang → Kategorie) umsetzen
- [ ] Grenzfälle: Pferd im Geburtsjahr, Jahreswechsel, Stichtag-Regeln
- [ ] Unit-Tests mit `OetoValidatorsTest.kt`-Grenzfällen als Basis
- [ ] **C-2** | Regelwerk-Enums vervollständigen
- [ ] Alle Lizenzklassen-Übergänge formal prüfen (R1→R2→R3→R4, LZF-Sonderfall)
- [ ] FEI-Kategorien-Mapping auf ÖTO-Lizenzklassen vervollständigen
- [ ] Enums in KMP-Modul `core:domain` als SSoT festlegen
- [ ] **C-3** | Compliance-Dokumentation: Series-Context vorbereiten
- [ ] Regelwerk-Grundlagen für Cups/Serien/Meisterschaften recherchieren
- [ ] Anforderungen an konfigurierbare Reglements (Phase 2+) dokumentieren
---
## 📌 Abhängigkeiten
| Meine Aufgabe | Blockiert wen |
|-------------------------|---------------------------------------------------|
| B-2 Spec an Backend | 👷 Backend: A-3 Sonderregeln, B-3 ÖTO-Validierung |
| B-1 ✅ Spec an Frontend | 🎨 Frontend: B-3 Live-Validierung |
| C-1 AltersklasseRechner | 🧐 QA: C-3 Validierungs-Tests |
---
## 💡 Empfehlungen (nach Priorität)
1. **B-2 Backend-Übergabe** — Lizenz-/Altersmatrix als Regulation-as-Data an Backend übergeben; Backend wartet auf diese
Spezifikation für A-3 und B-3.
2. **Lizenz×Bewerb DRAFT → STABLE** — Fachfreigabe einholen, damit Backend und Frontend auf stabiler Basis arbeiten
können.
3. **C-1 AltersklasseRechner** — Grenzfälle (Jahrgang, Stichtag) sind komplex und müssen vor Backend-Implementierung
spezifiziert sein.
@@ -0,0 +1,124 @@
# 🗂️ Sprint Execution Order — Meldestelle-Biest
> **Stand:** 11. April 2026 | **Phase:** 9 — Zeitplan & Protokollierung
> **Erstellt von:** 🏗️ Lead Architect
> **Strategisches Ziel:** Desktop-MVP mit Event-First-Workflow, Offline-First, ÖTO-Konformität
---
## 📊 Gesamtfortschritt
| Agent | Sprint A | Sprint B | Sprint C | Nächste Aktion |
|---------------|------------------|------------------------------------------|-------------------|-------------------------------------------------------|
| 🏗️ Architect | ✅ Abgeschlossen | ✅ Abgeschlossen | 🟡 In Arbeit | Zeitplan-Optimierung (ADR/Konzept) |
| 👷 Backend | ✅ Abgeschlossen | ✅ Abgeschlossen | 🟡 In Arbeit | C-1 Nennungs-Service Erweiterung |
| 🎨 Frontend | ✅ Abgeschlossen | ✅ B-2/B-3/B-4 fertig | 🟡 In Arbeit | C-2 Zeitplan Drag & Drop |
| 📜 Rulebook | ✅ Abgeschlossen | ✅ Abgeschlossen | ✅ C-1 fertig | Regelwerk-Validierung Zeitplan |
| 🐧 DevOps | ✅ Abgeschlossen | ✅ Abgeschlossen | ✅ C-1/C-2 fertig | C-3 Produktions-Deployment |
| 🧐 QA | ✅ Abgeschlossen | ✅ Abgeschlossen | 🟡 In Arbeit | Zeitplan-Optimierung Tests |
| 🖌️ UI/UX | ✅ Abgeschlossen | ✅ Abgeschlossen | ⬜ Nicht gestartet | C-1 Wireframes in Compose umsetzen |
| 🧹 Curator | ✅ Abgeschlossen | ✅ Abgeschlossen | 🟡 In Arbeit | Dokumentations-Audit |
---
## 🔴 SOFORT — Kritischer Pfad (Blocker)
Diese Aufgaben blockieren andere Agenten und müssen zuerst erledigt werden:
| Priorität | Agent | Aufgabe | Blockiert |
|-----------|---------------|-----------------------------------------------|---------------------------------------------------|
| 🔴 P1 | 🎨 Frontend | C-2: Zeitplan Drag & Drop | 🧐 QA: Zeitplan-Tests |
---
## 🟠 DIESE WOCHE — Sprint B/C parallel ausführen
### 🏗️ Architect
1.**B-1** ADR-0022 LAN-Sync-Protokoll (Event-Sourcing vs. CRDT vs. Timestamp)
2.**C-1** Konzept für Zeitplan-Optimierung (Drag & Drop Logik)
### 👷 Backend Developer
1.**A-1** Tenant-Isolation Rollout auf alle Services
2.**B-1** Reiter/Pferde/Vereine/Funktionäre CRUD-APIs
3.**B-2** Kassa-Service (Initialisierung & Billing-Logik)
4. 🔴 **C-1** Nennungs-Service Erweiterung (Status-Automat)
### 🎨 Frontend Expert
1.**B-2** Repositories angelegt & Endpunkte verdrahtet
2.**B-3** Live-Validierung für Reiter/Pferde Profile
3. 🔴 **B-2** StoreV2-Ablösung (Laufend)
4. 🔴 **B-4** Kassa-Screen Implementierung (wartet auf UI/UX)
### 📜 Rulebook Expert
1.**B-2** Lizenz-/Altersmatrix als Regulation-as-Data übergeben
2. 🔴 **C-1** AltersklasseRechner Spezifikation
### 🐧 DevOps Engineer
1.**C-1** Desktop-Packaging konfiguriert
2.**C-2** Semantic Versioning eingeführt
3. 🔴 **C-3** Produktions-Deployment vorbereiten
### 🧐 QA Specialist
1.**B-1** ZNS-Importer Hardening (Integrationstests)
2.**B-3** Abteilungs-Logik Tests
3. 🔴 **B-2** Onboarding-Wizard Edge-Case Tests
### 🖌️ UI/UX Designer
1.**B-1** Entscheidung Editier-Formulare
2.**B-3** Wireframes für Kassa-Screen (Veranstaltungs-Kassa)
3.**B-4** Empty States Spezifikation
### 🧹 Curator
1.**B-1** Roadmaps aktualisiert (diese Session)
2. 🔴 **B-2** Changelog & SessionLog pflegen
---
## 🟡 NÄCHSTE WOCHE — Sprint C
| Agent | Aufgabe |
|---------------|------------------------------------------------------------------------|
| 🏗️ Architect | C-1 Sync-Konzept; C-2 MASTER_ROADMAP aktualisieren |
| 👷 Backend | B-2 Kassa-Service; B-3 ÖTO-Validierung; C-1 Nennungs-Service |
| 🎨 Frontend | B-4 Kassa-Screen; C-1 StoreV2 vollständig ablösen; C-2 VeranstalterNeu |
| 📜 Rulebook | C-1 AltersklasseRechner; C-2 Regelwerk-Enums |
| 🐧 DevOps | C-3 Produktions-Deployment; D-1 Tenant-Backup-Strategie |
| 🧐 QA | B-1 Navigation-Tests; B-4 ViewModel-Tests; C-1 Isolations-Tests |
| 🖌️ UI/UX | C-1 Wireframes in Compose umsetzen; C-2 Design-System konsolidieren |
| 🧹 Curator | C-1 README aktualisieren; C-2 Setup-Guide |
---
## ⏸️ Zurückgestellte Themen (kein MVP-Blocker)
| Thema | Zuständig | Wann |
|------------------------------|-----------|-----------------------------------|
| USB-Stick Fallback (Sync) | 🏗️ + 🐧 | Sprint B/C — separate Besprechung |
| Web-App / PWA | 🎨 + 🖌️ | Nach Desktop-MVP |
| ZNS Live-Sync (Echtzeit) | 👷 + 🎨 | Nach Stammdaten-Stabilisierung |
| Series-Context (Cups/Serien) | Alle | Phase 9 (Phase 2+) |
| Mobile (Android/iOS) | 🎨 | Phase 9+ |
---
## 🔗 Roadmap-Verweise
| Agent | Roadmap |
|---------------|--------------------------------------------------------------|
| 🏗️ Architect | [Architect_Roadmap.md](./Architect_Roadmap.md) |
| 👷 Backend | [Backend_Roadmap.md](./Backend_Roadmap.md) |
| 🎨 Frontend | [Frontend_Roadmap.md](./Frontend_Roadmap.md) |
| 📜 Rulebook | [Rulebook_Roadmap.md](./Rulebook_Roadmap.md) |
| 🐧 DevOps | [DevOps_Roadmap.md](./DevOps_Roadmap.md) |
| 🧐 QA | [QA_Roadmap.md](./QA_Roadmap.md) |
| 🖌️ UI/UX | [UIUX_Roadmap.md](./UIUX_Roadmap.md) |
| 🧹 Curator | [Curator_Roadmap.md](./Curator_Roadmap.md) |
| 📐 Master | [MASTER_ROADMAP.md](../../01_Architecture/MASTER_ROADMAP.md) |
@@ -0,0 +1,108 @@
# 🖌️ [UI/UX Designer] — Zwischenstand & Roadmap
> **Stand:** 12. April 2026
> **Rolle:** High-Density Design, Wireframes, Usability, Design-System, Empty States
---
### Sprint D — AKTUELL (12. April 2026)
- [x] **D-1** | Radikaler UI-Umbau der Desktop-Shell (Best Practices)
- [x] Einführung einer modernen Seiten-Navigation (`NavigationRail`) zur besseren Platzausnutzung
- [x] Umstellung von Top-Bar auf schlanken Page-Header mit Breadcrumbs im Content-Bereich
- [x] Erweiterung des Design-Systems um `NavigationSurface` und konsistente `ElevatedCards`
- [x] Refactoring `AdminUebersichtScreen`: Klare visuelle Hierarchie, Page-Title und modernisierte Cards
- [x] Konsistente Anwendung von Tonal Elevation und Material 3 Standards
### Sprint C — Abgeschlossen
- [x] **A-1** | Design-Inventur: Bestehende V3-Screens analysiert
- [x] Alle vorhandenen V3-Screens katalogisiert (Screenshots in `docs/06_Frontend/Screenshots/`)
- [x] Inkonsistenzen in Spacing, Typografie und Farbgebung identifiziert
- [x] Offene UX-Probleme und fehlende Empty States dokumentiert
- [x] Issue-Liste für Sprint B vorbereitet
### Sprint B (Teilweise) — Wireframes erstellt
- [x] **B-1 Wireframes** | Editier-Formulare (AlertDialog vs. dedizierter Screen)
- [x] Entscheidungsgrundlage erarbeitet: Wann AlertDialog, wann Fullscreen-Edit?
- [x] Wireframes für beide Varianten erstellt (Reiter-Edit, Pferd-Edit als Beispiele)
- [x] Ergebnis: `docs/06_Frontend/Guidelines/Editier-Formulare_Dialog-vs-Fullscreen_v1.md`
- [x] **Finale Entscheidung dokumentiert und als verbindliche Design-Richtlinie festgeschrieben** (Status: APPROVED)
- [x] Mapping aller bestehenden Edit-Screens auf AlertDialog / Side Sheet / Fullscreen dokumentiert
- [x] **B-2 Wireframes** | Bewerb anlegen mit Abteilungs-Logik
- [x] Dialog-Flow: Bewerb-Grunddaten → Abteilungs-Vorschlag → Bestätigung
- [x] CSN-C-NEU Pflicht-Teilung: Visuelle Darstellung der automatischen Vorschläge
- [x] Abteilungs-Typ-Auswahl: `SEPARATE_SIEGEREHRUNG` vs. `ORGANISATORISCH` verständlich gestaltet
- [x] Ergebnis: `docs/06_Frontend/Wireframes/Bewerb_anlegen_Abteilungs-Logik_v1.md`
- [x] **B-3 Wireframes** | Veranstaltungs-Kassa
- [x] Gesamt-Saldo-Ansicht: Teilnehmer mit offenen Beträgen aus mehreren Turnieren
- [x] Zahlvorgang-Dialog: Eine Zahlung, Aufteilung auf Turniere sichtbar
- [x] Rechnungsvorschau: Zwei separate Rechnungen je Turnier als Tab
- [x] Ergebnis: `docs/06_Frontend/Wireframes/Kassa_Veranstaltung_v1.md`
---
## ✅ Sprint B — Abgeschlossen (3. April 2026)
- [x] **B-1 Abschluss** | Finale Design-Entscheidung Editier-Formulare
- [x] Review durch 🎨 Frontend Expert durchgeführt (bestätigt durch bestehende Implementierungen)
- [x] Entscheidung (AlertDialog / Side Sheet / Fullscreen) als verbindliche Richtlinie dokumentiert
- [x] Ergebnis: `docs/06_Frontend/Guidelines/Editier-Formulare_Dialog-vs-Fullscreen_v1.md` (Status: APPROVED)
- [x] **B-4** | Empty States für alle Listenansichten
- [x] Liste aller Screens mit möglichen leeren Zuständen erstellt (10 Screens, 3 Typen)
- [x] Icon-Konzept: Material Symbols Outlined — kein Custom-Illustration-Set für MVP
- [x] Texte (Titel, Beschreibung, CTA) für alle Screens und alle Typen definiert
- [x] Composable-API `MsEmptyState` spezifiziert (Ablageort, Parameter, Verhalten, Beispiel)
- [x] Ergebnis: `docs/06_Frontend/Guidelines/Empty-States_Spezifikation_v1.md` (Status: APPROVED)
---
## 🟠 Sprint C — Priorität 2 (nächste Woche)
- [ ] **C-1** | Wireframes aus Sprint B in Compose umsetzen
- [ ] Editier-Dialog / Fullscreen-Edit gemäß finaler Entscheidung (B-1) — Richtlinie: APPROVED ✅
- [ ] Bewerb-Anlegen-Dialog mit Abteilungs-Logik (B-2)
- [ ] Kassa-Screen (B-3)
- [ ] `MsEmptyState`-Composable implementieren (Spezifikation:
`docs/06_Frontend/Guidelines/Empty-States_Spezifikation_v1.md`)
- [ ] Empty States in alle 10 Listenansichten integrieren (Prioritätsreihenfolge laut Spezifikation)
- [ ] `PferdProfilEditDialog` zu Fullscreen-Edit migrieren (> 8 Felder, Async-Lookups — laut B-1 Mapping)
- [x] **C-2** | Design-System konsolidieren ✅ *12. April 2026*
- [x] Farb-Palette in `MaterialTheme` / `Theme.kt` vereinheitlichen (Tonal Elevation)
- [x] Typografie-Skala und Spacings in `Dimens.kt` / `Typography.kt` definiert
- [x] Eingabefelder (MsTextField) auf Enterprise-Standard (44.dp) optimiert
- [ ] **C-3** | Abteilungs-Ansicht: Startliste und Ergebnisliste
- [ ] Wireframe: Startliste einer Abteilung (Startnummer, Reiter, Pferd, Verein)
- [ ] Wireframe: Ergebnisliste einer Abteilung (Platz, Reiter, Pferd, Ergebnis)
- [ ] Wireframe: Ranglisten-Zusammenführung bei `ORGANISATORISCH`
> ⏸️ **Web-App / PWA Design** — Nach Desktop-MVP; Anforderungen noch nicht definiert
---
## 📌 Abhängigkeiten
| Warte auf | Von wem | Betrifft |
|-------------------------------------|---------------|-----------------------------------|
| Domänen-Modell (Kassa, Abteilung) ✅ | 🏗️ Architect | B-3 Kassa-Wireframes ✅ |
| ViewModel-Struktur ✅ | 🎨 Frontend | B-1 Finale Entscheidung ✅ |
| Meine Richtlinie B-1 ✅ | 🎨 Frontend | C-1 Edit-Dialoge implementieren |
| Meine Spezifikation B-4 ✅ | 🎨 Frontend | C-1 `MsEmptyState` implementieren |
| Meine Wireframes (B-2, B-3) | 🎨 Frontend | C-1 Bewerb-Dialog, Kassa-Screen |
---
## 💡 Empfehlungen (nach Priorität)
1. **C-1 `MsEmptyState` implementieren** — Spezifikation liegt vor (APPROVED); Frontend kann sofort mit der
Composable-Implementierung beginnen. Alle 10 Listenansichten laut Prioritätsliste abarbeiten.
2. **C-1 `PferdProfilEditDialog` → Fullscreen migrieren** — Aktueller Dialog überschreitet die Komplexitätsgrenze
(> 8 Felder, Async-Lookups); Migration gemäß B-1-Richtlinie für Sprint C-1 vorgesehen.
3. **C-2 Design-System** — Frühzeitige Konsolidierung verhindert kostspielige Nacharbeit; am besten parallel zu C-1
erledigen.