docs: massive restructuring of documentation, development guides and agent playbooks
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user