docs: add domain workshop results and event structure diagram

- Documented outcomes of the 2026-03-17 domain workshop under `docs/03_Domain/03_Analysis/Domain_Workshop_Results_2026-03-17.md`.
- Added a structural diagram visualizing events, tournaments, and competitions with their relationships under `docs/03_Domain/01_Core_Model/Entities/Event_Structure_Diagram.md`.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-03-17 17:27:27 +01:00
parent b6f4f43122
commit 2538be395a
3 changed files with 289 additions and 70 deletions
@@ -1,72 +1,102 @@
---
type: Reference
status: ACTIVE
owner: Lead Architect
date: 2026-03-17
---
# Ergebnisse Domain Workshop (17.03.2026)
# Ergebnisse: Domain Workshop vom 17.03.2026
**Teilnehmer:** Owner, 🏗️ [Lead Architect], 📜 [ÖTO/FEI Rulebook Expert], 👷 [Backend Developer], 🎨 [Frontend Expert],
🖌️ [UI/UX Designer]
**Teilnehmer:** Owner (Fachexperte), 🏗️ [Lead Architect], 📜 [ÖTO/FEI Rulebook Expert], 👷 [Backend Developer],
🎨 [Frontend Expert], 🖌️ [UI/UX Designer]
## 📜 [ÖTO/FEI Rulebook Expert] - Erkenntnisse
## 🎯 Fokus des Workshops
1. **Autorität des Turnierbeauftragten (TBA):**
Die Analyse der ÖTO (§ 24, § 25) bestätigt die Aussage des Owners: Der TBA ist die höchste Instanz vor Ort und kann
in Absprache mit dem Veranstalter von der Ausschreibung abweichende, für alle verbindliche Entscheidungen treffen.
Das System muss daher bei Regelkonflikten immer einen manuellen "Override" durch die Meldestelle ermöglichen.
* Klärung der Kompetenzen vor Ort (Turnierbeauftragter vs. Regelwerk).
* Analyse der Kassenführung und komplexer Gebühren-Szenarien.
* Management von Funktionären und deren Qualifikationen.
* Erster Entwurf für den Workflow der Turnieranlage (UI/UX).
2. **Gebührenlogik & Abrechnung (Das "Hansi"-Szenario):**
Die Komplexität der Gebührenstruktur wurde stark verdeutlicht. Es muss klar unterschieden werden zwischen:
* **Nenngeld** (Grundgebühr, oft im Voraus via ZNS bezahlt)
* **Startgeld** (pro Bewerb)
* **Nachnenngebühren** (Aufschlag bei später Nennung, oft verhandelbar)
* **Nebengebühren** (Sportförderbeitrag, Tierwohl-Euro - pro Start fällig)
Die Möglichkeit für den Veranstalter, auf Gebührenanteile (z.B. Nachnenngebühr) zu verzichten, muss im
Abrechnungssystem einfach abbildbar sein.
---
3. **Qualifikation von Funktionären:**
Die Qualifikationen für Richter und Parcoursbauer sind in der Datei `RICHT01.DAT` der ZNS-Daten enthalten. Diese
Qualifikationen müssen gegen die Anforderungen des jeweiligen Bewerbs (Klasse, Sparte) validiert werden.
## 💡 Erkenntnisse der Agents
## 👷 [Backend Developer] - Erkenntnisse
### 📜 [ÖTO/FEI Rulebook Expert]
1. **Bounded Context "Billing & Accounting":**
Die Kassenführung ist zu komplex und hat zu viele eigene Regeln, um sie eng mit dem sportlichen Kern (
Nennung/Ergebnis) zu koppeln. Wir werden dies als separaten Bounded Context mit eigenen Services und einem
dedizierten Datenmodell für Konten, Transaktionen und Gebühren umsetzen. Die Abrechnung muss kontobasiert pro Zahler
erfolgen (nicht nur pro Reiter).
1. **Autorität des Turnierbeauftragten (TBA):** Die Analyse der ÖTO (§ 24, § 25) bestätigt die Praxis-Erfahrung: Der TBA
ist die höchste Instanz vor Ort und kann in Absprache mit dem Veranstalter von der Ausschreibung abweichende, für
alle verbindliche Entscheidungen treffen. **Das System muss daher bei Regelkonflikten immer einen manuellen "
Override" durch die Meldestelle ermöglichen.**
2. **Gebührenlogik & Abrechnung:** Das "Hansi"-Szenario (Klassenüberschreitung, Reiterwechsel, Nachnennung) hat die
enorme Komplexität der Gebührenstruktur verdeutlicht. Es muss zwingend unterschieden werden zwischen:
* **Nenngeld:** Grundgebühr, oft im Voraus via ZNS bezahlt.
* **Startgeld:** Gebühr pro einzelnem Bewerb.
* **Nachnenngebühren:** Strafaufschlag bei später Meldung.
* **Nebengebühren:** Sportförderbeitrag, Tierwohl-Euro (pro Start).
Die Möglichkeit für den Veranstalter, auf Gebührenanteile (z.B. Nachnenngebühr) zu verzichten, muss zwingend
abgebildet werden.
3. **Qualifikation von Funktionären:** Die Qualifikationen für Richter und Parcoursbauer sind in der Datei
`RICHT01.DAT` (ZNS-Daten) enthalten. Diese müssen beim Import ausgelesen und im System gegen die Anforderungen des
jeweiligen Bewerbs (Klasse, Sparte) validiert werden.
2. **Implementierung "Nennungstausch":**
Der Tausch einer Nennung (Reiter/Pferd) wird nicht als reines Storno + Neu-Buchung implementiert, sondern als *
*Transfer-Operation**. Bereits bezahlte Nenngelder werden als Guthaben auf dem Konto des ursprünglichen Zahlers (oder
des Pferdes) geführt und können auf die neue Nennung angerechnet werden. Das System berechnet und verbucht
automatisch die anfallenden Differenzen und Tauschgebühren.
### 👷 [Backend Developer]
3. **Validierungs-Service für Funktionäre:**
Es wird eine Backend-Funktion implementiert, die bei der Zuweisung eines Richters/Parcoursbauers zu einem Bewerb
dessen Qualifikationen (aus den importierten ZNS-Daten) gegen die Anforderungen des Bewerbs prüft. Die API wird bei
einem Mismatch eine `WARNUNG` zurückgeben, aber keinen harten `FEHLER`, um den vom Rulebook Expert bestätigten "
Override" durch die Meldestelle zu ermöglichen.
1. **Neuer Bounded Context "Billing & Accounting":** Die Kassenführung ist zu komplex und eigenständig, um sie mit dem
sportlichen Kern (Nennung/Ergebnis) zu vermischen. Wir etablieren einen separaten Bounded Context mit dediziertem
Datenmodell für **Konten (pro "Zahler"), Transaktionen und Gebühren**.
2. **Architektur "Nennungstausch":** Der Tausch einer Nennung (Reiter oder Pferd) wird *nicht* als einfaches Löschen und
Neuanlegen implementiert. Es wird als **Transfer-Operation** abgebildet. Bereits bezahlte Nenngelder verbleiben als
Guthaben auf dem Konto des ursprünglichen Zahlers (oder sind an das Pferd gebunden) und können auf die neue Nennung
angerechnet werden. Nur Differenzen und Tauschgebühren werden neu verbucht.
3. **Validierungs-Service für Funktionäre:** Es wird ein Service implementiert, das bei der Zuweisung eines
Richters/Parcoursbauers zu einem Bewerb dessen Qualifikationen (aus den ZNS-Daten) prüft. Wichtig: Die API liefert
bei Mismatches nur eine `WARNUNG`, keinen blockierenden `FEHLER`, um den "Override" durch die Meldestelle (siehe
Rulebook Expert) zu garantieren.
4. **ZNS-Import, Fremddaten (Zuchtverbände) & Event Sourcing:**
Die unsauberen und oft wechselnden ZNS-Daten des OEPS werden nicht destruktiv in Datenbanktabellen überschrieben.
Stattdessen wird eine **Event Sourcing** Architektur gewählt.
* Das Hochladen der `zns.zip` triggert einen Parser, der Änderungen (Updates bei Lizenzen, neue Akteure) als
zeitgestempelte Events (z.B. `ActorUpdatedEvent`) in einem "Event Log" ablegt.
* Fremddaten (z.B. von Zuchtverbänden wie dem AWÖ) können über dedizierte Parser eingelesen und in dieselben
Standard-Events übersetzt werden.
* **Manuelle Korrekturen durch die Meldestelle** (wegen fehlerhafter OEPS-Daten) erzeugen "Override-Events", die
Vorrang vor veralteten Import-Daten haben.
* Für die schnelle Anzeige und Offline-Synchronisation werden aus diesen Events saubere Projektionen ("Read Models")
und turnierspezifische Snapshots gebaut.
### 🎨 [Frontend Expert] & 🖌️ [UI/UX Designer]
## 🎨 [Frontend Expert] & 🖌️ [UI/UX Designer] - Erkenntnisse
1. **Workflow-Übernahme (Don't reinvent the wheel):** Die vom Owner bereitgestellten Screenshots des Altsystems (
`Turnier-Transfer.PNG`, `Turnier-Richter.PNG` etc.) definieren einen praxiserprobten Workflow. Dieser wird als
Blaupause für das neue UI verwendet.
2. **Modernes UI-Konzept (Wizard-Ansatz):** Anstelle vieler separater Fenster (wie im Altsystem) wird die Turnieranlage
in einem **geführten, schrittweisen Prozess** (Wizard oder übersichtliche Tab-Struktur) abgebildet.
* *Schritt 1:* Stammdaten & ZNS-Import
* *Schritt 2:* Konfiguration (Austragungsplätze, Preisliste)
* *Schritt 3:* Team (Zuweisung von Richtern, Parcoursbauern)
* *Schritt 4:* Bewerbsanlage
3. **Smart UI:** Die Oberfläche wird den vertrauten Workflow bieten, aber durch **Echtzeit-Validierung** (z.B. visuelle
Warnung bei Zuweisung eines Richters ohne passende Lizenz) und **intelligente Suchfelder** (Auto-Complete) die
Dateneingabe erheblich beschleunigen und absichern.
1. **Workflow-Übernahme als Grundlage:**
Die vom Owner bereitgestellten Screenshots des Altsystems (`BilderSuDo/`) definieren einen praxiserprobten, schnellen
und vom User extrem gut akzeptierten Workflow. Diese Screens dienen als absolute Blaupause für das neue UI/UX-Design.
---
*Nächste Schritte: Detaillierung des ZNS-Imports (Stammdaten & Akteure).*
2. **Der "Bewerbe anlegen"-Workflow (`Bewerbe.PNG` etc.):**
* Zweigeteilte Ansicht (Master-Detail): Links Liste/Filter aller Bewerbe, Rechts Detail-Tabs.
* Detail-Tabs gliedern sich in: *Bewertung* (Richtverfahren), *Geldpreis* (Dotierung nach Platzierung), *Ort/Zeit* (
Ablaufplanung mit Zeit-pro-Starter-Logik).
* *Design-Vorgabe:* Diese Informationsarchitektur wird in moderne Compose-Layouts (z.B. List-Detail-Pane) überführt,
die Logik bleibt identisch.
3. **Die zentrale "Nennungs-Maske" (`Nennungen.PNG`):**
* Dies ist das **Herzstück der Meldestelle** ("Das Telefon läutet...").
* Extrem schnelle Suche via Kopfnummer oder Name (mit sofortiger Auto-Completion).
* Anzeige der Meta-Daten (z.B. Besitzer) für sofortige Identifikation.
* Direkte Zuweisung zu Bewerben via Klick aus einer Liste unten.
* Berücksichtigung von Startwünschen ("vorne", "hinten").
* *Design-Vorgabe:* Diese Maske muss auf **absolute Tastatur- & Schnellbedienbarkeit** optimiert werden (Hotkeys,
Tab-Flow). Sie fungiert als Dashboard (Absprung zu Startliste, Kassa).
* **Self-Service Äquivalenz:** Das Webformular für den Reiter nutzt im Hintergrund dieselbe Logik, um die Meldestelle
maximal zu entlasten.
4. **Startlisten-Erstellung (`Startlisten.PNG`):**
* Schneller Wechsel zwischen Bewerben über Nummern-Leiste oben (Tab-Ersatz).
* Berücksichtigung der beim Nennen erfassten Wünsche ("vorne", "hinten").
5. **Ergebnis-Erfassung am Richterturm (`Ergebnisliste.PNG`):**
* Schnelleingabe-Maske optimiert für den fließenden Ablauf.
* Oben: Gesamtergebnis / Unten: Startliste als Warteschlange / Mitte: Aktueller Reiter in Eingabe.
* Absoluter Fokus auf **"Enter & Tabulator"-Workflow**. Ein Mausklick darf für den Standard-Ablauf nicht nötig sein.
* Spontane Abweichungen von der Startfolge (nächster Reiter kommt früher) müssen durch simplen Doppelklick auf die
Warteschlange lösbar sein.
* Entscheidung über Anzahl der Platzierten bleibt flexibel und ist durch die Meldestelle überschreibbar (ÖTO als
Richtlinie, Veranstalter hat letztes Wort).
## 🏗️ [Lead Architect] - Strategischer Fokus (MVP Phase 1)
Um zügig einen echten Mehrwert zu generieren, wird der Scope für die erste Ausbaustufe (MVP) hart eingegrenzt:
* **Turnier-Kategorien:** Fokus auf **C-NEU** und **C**.
* **Sparten:** Fokus ausschließlich auf **Dressur (D)** und **Springen (S)**.
* *Begründung:* Diese Eingrenzung reduziert die initial benötigte Komplexität der Regelwerks-Implementierung enorm,
deckt aber gleichzeitig das absolute "Brot-und-Butter"-Geschäft für kleine bis mittlere Veranstalter ab.