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 15:12:04 +01:00
parent 119af6fd6b
commit b6f4f43122
2 changed files with 161 additions and 0 deletions
@@ -0,0 +1,89 @@
# Turnier- & Bewerbsstruktur Diagramm
Dieses Diagramm zeigt die strukturelle Hierarchie und die Beziehungen zwischen Event, Turnier und Bewerb basierend auf
dem ÖTO-Regelwerk und den Anforderungen der OEPS-Schnittstelle.
```mermaid
erDiagram
%% Entities
EVENT {
string id PK "UUID"
string name "z.B. Apropos Pferd 2026"
date start_date
date end_date
string location
string organizer_id FK "Veranstalter (Akteur)"
string status "PLANNING, ACTIVE, ARCHIVED"
}
TOURNAMENT {
string id PK "UUID"
string event_id FK
string oeps_number "z.B. 21001 (A-Satz)"
string category "z.B. CSN-A, CDN-B"
string ruleset "OETO oder FEI"
}
COMPETITION {
string id PK "UUID"
string tournament_id FK
string code_internal "2-stellig (B-Satz Pos. 2)"
string code_official "3-stellig (B-Satz Pos. 61)"
int division_id "Abteilung (0=keine, 1=Abt. 1...)"
string title "z.B. Standardspringprüfung"
string category "Klasse z.B. L, M, S*"
string discipline "S (Springen), D (Dressur), C"
string scoring_method "Richtverfahren (z.B. A0, A2)"
int start_fee "in Cent"
string status "OPEN, RUNNING, FINISHED"
}
OFFICIALS {
string id PK "UUID"
string tournament_id FK "oder competition_id"
string actor_id FK "Richter / Parcoursbauer"
string role "Hauptrichter, Richter, TD"
}
%% Relationships
EVENT ||--o{ TOURNAMENT: "beinhaltet"
TOURNAMENT ||--o{ COMPETITION: "besteht aus (B-Satz)"
TOURNAMENT ||--o{ OFFICIALS: "hat Funktionäre (C-Satz)"
COMPETITION ||--o{ OFFICIALS: "wird gerichtet von"
```
## Erläuterung zum Modell (Option B)
### 1. `EVENT` (Veranstaltung)
Das **Event** ist der übergeordnete organisatorische Rahmen (z.B. "Pferdefestival 2026"). Es hat ein Datum, einen Ort
und einen Veranstalter. Es existiert unabhängig von den strikten OEPS-Regularien und ist primär für die administrative
Verwaltung (Rechnungsstellung, Anlagenplanung) wichtig.
### 2. `TOURNAMENT` (Turnier)
Ein Event kann mehrere **Turniere** beinhalten (z.B. ein nationales CSN-B und gleichzeitig ein internationales CSI2*).
Das Turnier ist die Instanz, die strikt an das Regelwerk gebunden ist:
* Es korrespondiert 1:1 mit dem **A-Satz** des OEPS-Pflichtenhefts.
* Es hat eine eindeutige 5-stellige `oeps_number`.
* Es legt fest, nach welchem Regelwerk (ÖTO vs. FEI) geritten und ausgewertet wird.
### 3. `COMPETITION` (Bewerb / Prüfung)
Die kleinste sportliche Einheit und das Herzstück der Ausschreibung.
Hier finden wir die direkte Verbindung zum **B-Satz** der Legacy-Spezifikation:
* **Abteilungen (`division_id`):** Laut OEPS-Schnittstelle wird jede Abteilung (z.B. R1-Reiter getrennt von R2-Reitern)
datentechnisch fast wie ein eigener Bewerb behandelt. In unserer Datenbank repräsentieren wir jede Abteilung als
eigene Zeile in der Tabelle `competition` (oder verknüpfen sie intelligent), da jede Abteilung ihre eigene
Ergebnisliste und ihr eigenes Preisgeld hat.
* **Nummerierung:** Intern 2-stellig (`code_internal`), für Turniere ab 100 Bewerben offiziell 3-stellig (
`code_official` an Stelle 61).
* **Richtverfahren:** Entscheidet darüber, wie Fehler und Zeit (Springen) oder Wertnoten (Dressur) in ein Ranking
übersetzt werden.
### 4. `OFFICIALS` (Funktionäre)
Dies entspricht dem **C-Satz**. Richter und Parcoursbauer müssen einem Turnier oder spezifisch einem Bewerb zugewiesen
werden. Deren 6-stellige OEPS-Nummer (Satznummer) wird für den Ergebnis-Export benötigt.