air work test
This commit is contained in:
@@ -1,52 +0,0 @@
|
||||
---
|
||||
type: Reference
|
||||
status: ACTIVE
|
||||
owner: Lead Architect
|
||||
last_update: 2026-03-15
|
||||
---
|
||||
# Glossar der Domäne "Meldestelle"
|
||||
|
||||
Dieses Dokument definiert die **Ubiquitous Language** (allgegenwärtige Sprache) des Projekts. Alle Begriffe sind so zu verwenden, wie sie hier definiert sind – sowohl im Code als auch in der Kommunikation.
|
||||
|
||||
## A - E
|
||||
|
||||
* **Abteilung:** Eine Unterteilung eines -> *Bewerbs*. Oft werden Bewerbe mit vielen Startern in mehrere Abteilungen geteilt (z.B. nach Lizenzklasse oder Rasse), die getrennt gewertet werden.
|
||||
* **Akteur:** Oberbegriff für alle Personen (Reiter, Richter, Besitzer) und Organisationen (Vereine), die im System interagieren.
|
||||
* **Altersklasse (singular):** Domänenobjekt zur Klassifikation von Teilnehmern nach Alter. Schlüssel-Felder: `altersklasseId` (UUID), `altersklasseCode` (fachlicher Schlüssel, z.B. `JG`, `JR`, `25`, `Y`), `bezeichnung`, optionale Grenzen `minAlter`/`maxAlter`, optionale Filter `sparteFilter`/`geschlechtFilter`. Persistiert in Tabelle `altersklasse` (singular), Spalte `altersklasse_code` (einzigartig).
|
||||
* **Altersklassen (plural):** Offizielle Altersklassen gemäß LIZENZ01.DAT. Unterstützte Kürzel: `JG` (Jugendlicher), `JR` (Junior), `25` (U25), `Y` (Junger Reiter). Ein Reiter hat 0..1 Altersklasse aus JG/JR/U25 und optional 0..1 aus Y.
|
||||
* **Ausschreibung:** Das offizielle Dokument, das alle Bedingungen eines -> *Turniers* festlegt.
|
||||
* **Bewerb:** Die einzelne sportliche Prüfung (z.B. "Springprüfung Kl. L"). Kleinste Einheit für Nennungen und Ergebnisse.
|
||||
* **Event:** Der organisatorische Rahmen (z.B. "Pferdefest 2026"), der ein oder mehrere -> *Turniere* beinhalten kann.
|
||||
|
||||
## F - J
|
||||
|
||||
* **FEI-ID:** Eindeutige Identifikationsnummer der Internationalen Reiterlichen Vereinigung (FEI) für Reiter und Pferde.
|
||||
* **Gastreiter:** Ein Reiter mit ausländischer Staatsbürgerschaft, der nicht für einen österreichischen Verein startet.
|
||||
* **Kopfnummer:**
|
||||
* *National (OEPS):* Die permanente, 4-stellige Registrierungsnummer eines Pferdes beim OEPS (z.B. "A123"). Wird oft am Zaumzeug getragen.
|
||||
* *International/Turnier:* Eine temporäre Startnummer für das spezifische Turnier.
|
||||
|
||||
## K - O
|
||||
|
||||
* **Lebensnummer:** Eine 9-stellige Nummer (bzw. 15-stellig international), die ein Pferd bei der Geburt vom Zuchtverband erhält. Dient der eindeutigen Identifizierung, ist aber im OEPS-Kontext bei ausländischen Pferden oft generiert und daher nicht zur Suche geeignet.
|
||||
* **Lizenz (Reiterlizenz):** Die Qualifikationsstufe eines Reiters (z.B. `R1`, `RD1`, `RD2`, `RS2`). Ein Reiter hat 0..1 Reiterlizenz. Wird in der Tabelle `reiterlizenzen` als Stammdaten geführt und am Reiter per `reit_lizenz_id` referenziert.
|
||||
* **Fahr-Lizenz:** Eigenständige Lizenzkategorie für den Fahrsport (z.B. `F1`, `F2`). Ein Reiter hat 0..1 Fahr-Lizenz. Stammdaten-Tabelle `fahr_lizenzen`, Referenz am Reiter `fahr_lizenz_id`.
|
||||
* **Nennung:** Die verbindliche Anmeldung eines Paares (Reiter & Pferd) zu einem -> *Bewerb*.
|
||||
* **OEPS:** Österreichischer Pferdesportverband.
|
||||
|
||||
## P - T
|
||||
|
||||
* **Reiterlizenzen (Historie):** Optionale Historien-Zuordnungen in `reiter_lizenzen_zuordnung` (z.B. Jahreswechsel). Enthalten den Typ (`REITERLIZENZ`, `STARTKARTE`, `FAHRLIZENZ`), das Kürzel und optional `gültig_bis`.
|
||||
* **Satznummer:**
|
||||
* *Pferd:* 10-stellige, rein numerische ID (z.B. `0000123456`), die ein Pferd in der OEPS-Datenbank eindeutig identifiziert. **Primärer Schlüssel für den Datenaustausch.**
|
||||
* *Reiter:* 6-stellige, rein numerische ID für Personen.
|
||||
* **Sperrliste:** Eine vom Verband geführte Liste von Personen oder Pferden, die aktuell nicht startberechtigt sind (meist wegen offener Zahlungen).
|
||||
* **Startkarte:** Der Nachweis, dass die Jahresgebühr für die Lizenz bezahlt wurde. Ohne aktive Startkarte ist (national) kein Start möglich. Stammdaten-Tabelle `startkarten`, Referenz am Reiter `startkarte_id`.
|
||||
* **Turnier:** Die administrative Einheit (z.B. "CSN-A"), die einem spezifischen Regelwerk (ÖTO oder FEI) unterliegt.
|
||||
* **Turnier-Kategorie:** Klassifikation eines Turniers (z.B. `CSN-C`, `CSN-C Neu`, `CSN-B`, `CSN-A`, `CDN-C`, `CDN-B`, `CDN-A`). Stammdaten-Tabelle `turnier_kategorien`.
|
||||
* **Bewerbsklasse:** Früher „Turnierklasse“. Klassifiziert den Schwierigkeitsgrad eines Bewerbs (Springen: `E`, `A`, `L`, `LM`, `M`, `S`; Dressur: `E` bis `S`). Stammdaten-Tabelle `bewerbs_klassen`. API-Endpunkt: `GET /rules/turnierklassen` liefert dieselben Inhalte (Alias), technisch über `RegulationRepository.findAllTurnierklassen()` abgebildet.
|
||||
|
||||
## U - Z
|
||||
|
||||
* **Wertungsserie:** Ein übergeordneter Wettbewerb (Cup, Meisterschaft), der Ergebnisse aus mehreren Bewerben/Turnieren aggregiert.
|
||||
* **ZNS:** Zentrales Nennsystem (bzw. die zugehörigen Datensätze wie `zns.zip`), über das Stammdaten und Nennungen ausgetauscht werden.
|
||||
@@ -1,179 +0,0 @@
|
||||
---
|
||||
type: DOMAIN_SPEC
|
||||
status: ACTIVE
|
||||
owner: Lead Architect
|
||||
last_update: 2026-04-02
|
||||
---
|
||||
|
||||
# Domänen‑Modell: Veranstaltung → Turnier → Bewerb → Abteilung
|
||||
|
||||
Ziel: Dieses Dokument fixiert das offizielle Kern‑Modell für die Event‑Struktur sowie Kassa/Konten. Es ist die Single Source of Truth für Backend‑Schema, Frontend‑ViewModels und Schnittstellen.
|
||||
|
||||
Quellen/Verweise:
|
||||
- Ubiquitous Language: `docs/03_Domain/01_Glossary/Ubiquitous_Language.md`
|
||||
- ÖTO/FEI Referenz: `docs/03_Domain/02_Reference/` (insb. Abteilungs‑Schwellenwerte)
|
||||
- ADR‑0021 Tenant‑Resolution (Event‑Isolation): `docs/01_Architecture/adr/0021-tenant-resolution-strategy-de.md`
|
||||
|
||||
## 1. Struktur und Kardinalitäten
|
||||
|
||||
Hierarchie und Identifikatoren (kanonisch):
|
||||
|
||||
```
|
||||
Veranstaltung (event_id)
|
||||
├─ Turnier (tournament_id) [1:N pro Veranstaltung]
|
||||
│ └─ Bewerb (class_id) [1:N pro Turnier]
|
||||
│ └─ Abteilung (division_id) [1:N pro Bewerb]
|
||||
└─ TeilnehmerKonto (account_id) [1:N pro Veranstaltung, referenziert Teilnehmer]
|
||||
└─ Veranstaltungs‑Kassa (event_cashbox_id = event_id) [1:1]
|
||||
```
|
||||
|
||||
Leitlinien:
|
||||
- Jede Veranstaltung ist ein eigener Tenant (Schema‑per‑Tenant gemäß ADR‑0021).
|
||||
- IDs sind innerhalb des Tenants eindeutig; globale Adressen entstehen durch `{event_id}/{local_id}`.
|
||||
|
||||
## 2. Entitäten und Aggregate
|
||||
|
||||
### 2.1 Veranstaltung
|
||||
- Schlüssel: `event_id` (Slug, z. B. `2026-moc-open`)
|
||||
- Aggregate‑Grenze: umfasst Metadaten der Veranstaltung, Kassa, TeilnehmerKonto‑Katalog.
|
||||
- Invarianten:
|
||||
- `status ∈ {draft, active, archived}`
|
||||
- Archivierte Veranstaltungen sind read‑only.
|
||||
|
||||
### 2.2 Turnier
|
||||
- Schlüssel: `tournament_id` (innerhalb Veranstaltung eindeutig)
|
||||
- Attribute (Auszug): Titel, Datum(e), Ort, Status.
|
||||
- Invarianten:
|
||||
- Ein Turnier gehört genau zu einer Veranstaltung.
|
||||
- Löschen nur erlaubt, wenn keine Nennungen/Ergebnisse bestätigt sind.
|
||||
|
||||
### 2.3 Bewerb
|
||||
- Schlüssel: `class_id`
|
||||
- Attribute: Disziplin, Klasse, Lizenzanforderungen, max Starter, Wertungsmodus.
|
||||
- Invarianten:
|
||||
- Ein Bewerb gehört genau zu einem Turnier.
|
||||
- Abteilungsbildung erfolgt gemäß Regelwerk/Schwellenwerten.
|
||||
|
||||
### 2.4 Abteilung
|
||||
- Schlüssel: `division_id`
|
||||
- Attribute: Lauf‑/Startzeit, Parcours/Bahn, Typ (siehe unten), Ergebnisstatus.
|
||||
- Invarianten:
|
||||
- Eine Abteilung gehört genau zu einem Bewerb.
|
||||
- Typen steuern UI, Zeitplan und Preisgeld-/Siegerehrungslogik.
|
||||
|
||||
### 2.5 TeilnehmerKonto (auf Veranstaltungsebene)
|
||||
- Zweck: Vereinheitlichte finanzielle Sicht je Teilnehmer über mehrere Turniere derselben Veranstaltung (Multi‑Turnier).
|
||||
- Schlüssel: `account_id`
|
||||
- Beziehungen:
|
||||
- `Teilnehmer` (z. B. Reiter, Verein, Team) 1:1 ↔ TeilnehmerKonto (pro Veranstaltung)
|
||||
- Buchungen entstehen aus Nennungen, Startgeldern, Gebühren, Gutschriften, Rückzahlungen turnierübergreifend.
|
||||
- Invarianten:
|
||||
- Ein Teilnehmer hat höchstens ein Konto pro Veranstaltung.
|
||||
- Saldo ist Summe aller bestätigten Buchungen innerhalb des Tenants.
|
||||
|
||||
### 2.6 Veranstaltungs‑Kassa (Turnier‑übergreifender Saldo)
|
||||
- Zweck: Aggregierte Kasse der gesamten Veranstaltung; spiegelt Einzahlungen/Auszahlungen und Summen über alle Turniere.
|
||||
- Schlüssel: `event_cashbox_id` = `event_id`
|
||||
- Komponenten:
|
||||
- Journal (Belege): Ein/Auszahlungen, Umbuchungen, Korrekturen.
|
||||
- Summen: aktueller Bestand, Reserven, offene Posten (aggregiert aus TeilnehmerKonten).
|
||||
- Invarianten:
|
||||
- Jede Buchung betrifft genau ein Gegenkonto (TeilnehmerKonto oder internes Konto).
|
||||
- Journal ist unveränderlich; Korrekturen erfolgen als Gegenbuchung.
|
||||
|
||||
## 3. Abteilungs‑Typen
|
||||
|
||||
Definiert als `enum DivisionType`:
|
||||
- `STANDARD`: Normale Abteilung mit regulärer Siegerehrung innerhalb des Bewerbs.
|
||||
- `SEPARATE_SIEGEREHRUNG`: Abteilung, deren Siegerehrung separat organisiert wird (z. B. zusammengelegt/zeitlich entkoppelt) — STATUS: vorläufig, Detailregeln folgen durch 📜 Rulebook Expert.
|
||||
- `ORGANISATORISCH`: Rein organisatorische Abteilung (z. B. Aufteilung aus Zeit/Platz‑Gründen), ohne eigenständige sportliche Wertung/Preisgeldlogik.
|
||||
|
||||
Hinweis: Die genaue Ausgestaltung von `SEPARATE_SIEGEREHRUNG` (Preisgeld‑Aggregation, Ranking‑Anzeige, Protokoll) wird im Rulebook‑Dokument ergänzt und kann weitere Felder/Beziehungen erfordern (z. B. Verweis auf „gemeinsame Siegerehrung für Bewerbe X/Y“).
|
||||
|
||||
## 4. Datenmodell‑Skizze (relationale Sicht je Tenant)
|
||||
|
||||
```sql
|
||||
-- Veranstaltung (im Tenant‑Schema)
|
||||
CREATE TABLE event (
|
||||
event_id TEXT PRIMARY KEY,
|
||||
title TEXT NOT NULL,
|
||||
status TEXT NOT NULL CHECK (status IN ('draft','active','archived'))
|
||||
);
|
||||
|
||||
CREATE TABLE tournament (
|
||||
tournament_id TEXT PRIMARY KEY,
|
||||
event_id TEXT NOT NULL REFERENCES event(event_id),
|
||||
title TEXT NOT NULL,
|
||||
start_date DATE,
|
||||
end_date DATE,
|
||||
status TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE class (
|
||||
class_id TEXT PRIMARY KEY,
|
||||
tournament_id TEXT NOT NULL REFERENCES tournament(tournament_id),
|
||||
discipline TEXT NOT NULL,
|
||||
level TEXT NOT NULL,
|
||||
max_starters INT,
|
||||
scoring_mode TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE division (
|
||||
division_id TEXT PRIMARY KEY,
|
||||
class_id TEXT NOT NULL REFERENCES class(class_id),
|
||||
type TEXT NOT NULL CHECK (type IN ('STANDARD','SEPARATE_SIEGEREHRUNG','ORGANISATORISCH')),
|
||||
scheduled_at TIMESTAMP,
|
||||
status TEXT NOT NULL
|
||||
);
|
||||
|
||||
-- TeilnehmerKonto (veranstaltungsweit)
|
||||
CREATE TABLE participant_account (
|
||||
account_id TEXT PRIMARY KEY,
|
||||
event_id TEXT NOT NULL REFERENCES event(event_id),
|
||||
participant_ref TEXT NOT NULL, -- verweist auf Teilnehmer‑Stammdatensatz im Tenant
|
||||
UNIQUE(event_id, participant_ref)
|
||||
);
|
||||
|
||||
CREATE TABLE participant_ledger_entry (
|
||||
entry_id TEXT PRIMARY KEY,
|
||||
account_id TEXT NOT NULL REFERENCES participant_account(account_id),
|
||||
booking_ts TIMESTAMP NOT NULL,
|
||||
amount_cents BIGINT NOT NULL,
|
||||
currency TEXT NOT NULL DEFAULT 'EUR',
|
||||
source TEXT NOT NULL, -- z. B. Nennung, Startgeld, Rückzahlung
|
||||
tournament_id TEXT NULL REFERENCES tournament(tournament_id)
|
||||
);
|
||||
|
||||
-- Veranstaltungs‑Kassa
|
||||
CREATE TABLE event_cashbox (
|
||||
event_cashbox_id TEXT PRIMARY KEY REFERENCES event(event_id),
|
||||
created_at TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE cashbox_journal (
|
||||
journal_id TEXT PRIMARY KEY,
|
||||
event_cashbox_id TEXT NOT NULL REFERENCES event_cashbox(event_cashbox_id),
|
||||
booking_ts TIMESTAMP NOT NULL,
|
||||
amount_cents BIGINT NOT NULL,
|
||||
direction TEXT NOT NULL CHECK (direction IN ('IN','OUT')),
|
||||
counterparty TEXT NOT NULL, -- account_id oder internes Konto
|
||||
memo TEXT
|
||||
);
|
||||
```
|
||||
|
||||
## 5. Invarianten und Geschäftsregeln (Auszug)
|
||||
- Abteilungs‑Typ `ORGANISATORISCH` darf keine eigenständige Preisgeldlogik auslösen.
|
||||
- `SEPARATE_SIEGEREHRUNG` kann Ergebnisse bündeln/verschieben; Detailregeln werden im Rulebook spezifiziert. Bis dahin bleiben API‑Felder stabil, Verhalten konservativ (keine automatische Zusammenlegung ohne explizite Verknüpfung).
|
||||
- TeilnehmerKonto‑Saldo = Summe aller bestätigten `participant_ledger_entry.amount_cents`.
|
||||
- Event‑Kassa‑Bestand = Summe `IN` − Summe `OUT`; regelmäßige Abstimmung mit Summe aller Teilnehmer‑Offenen Posten.
|
||||
|
||||
## 6. API/DTO Richtlinien (High‑Level)
|
||||
- Alle API‑Ressourcen werden unterhalb des Tenants adressiert (Header `X-Event-Id`).
|
||||
- DTOs tragen stabile `*_id` Felder entsprechend diesem Modell; Referenzen sind per ID, keine eingebetteten Aggregate außer Read‑Views.
|
||||
- Enum `DivisionType` wird exakt wie oben benannt; neue Typen erfordern Versionserhöhung des Schemas.
|
||||
|
||||
## 7. ToDos und Folgearbeiten
|
||||
- 📜 Rulebook Expert: Detail‑Spezifikation `SEPARATE_SIEGEREHRUNG` (Preisgeld, Ranking, UI‑Hinweise) ergänzen.
|
||||
- 🧹 Curator: `Ubiquitous_Language.md` um obige Begriffe/Definitionen erweitern.
|
||||
- 👷 Backend: Schema‑Migrationen pro Tenant gemäß obiger Tabellen; Repositories/Services entsprechend zuschneiden.
|
||||
- 🎨 Frontend: ViewModels/Stores entlang dieser Struktur aktualisieren (Navigation: Veranstaltung → Turnier → Bewerb → Abteilung).
|
||||
@@ -1,241 +0,0 @@
|
||||
-- Database Schema Draft for Meldestelle (Offline-First)
|
||||
-- Dialect: SQLite (compatible with SQLDelight)
|
||||
-- Status: Draft / Proposal
|
||||
-- Based on: OEPS Legacy Spec V2.4 & Domain Analysis
|
||||
|
||||
-- ==================================================================
|
||||
-- 1. CORE INFRASTRUCTURE (Sync & Audit)
|
||||
-- ==================================================================
|
||||
-- Every table should ideally have these fields, but for brevity
|
||||
-- they are implied or added where critical.
|
||||
-- id: TEXT NOT NULL PRIMARY KEY (UUID)
|
||||
-- created_at: INTEGER NOT NULL (Epoch Millis)
|
||||
-- updated_at: INTEGER NOT NULL (Epoch Millis)
|
||||
-- version: INTEGER NOT NULL (Optimistic Locking / Sync Counter)
|
||||
-- is_deleted: INTEGER NOT NULL DEFAULT 0 (Soft Delete)
|
||||
|
||||
-- ==================================================================
|
||||
-- 2. MASTER DATA (Stammdaten)
|
||||
-- ==================================================================
|
||||
|
||||
-- Akteure: Personen und Organisationen
|
||||
-- Covers: Reiter, Richter, Besitzer, Vereine
|
||||
CREATE TABLE actor (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
type TEXT NOT NULL, -- 'PERSON', 'ORGANIZATION'
|
||||
|
||||
-- Display Data
|
||||
first_name TEXT, -- NULL for Organizations
|
||||
last_name TEXT NOT NULL, -- Name or Org-Name
|
||||
|
||||
-- OEPS Specifics (Legacy Spec)
|
||||
oeps_id TEXT, -- 'Satznummer' (6 digits for Person, 4 for Club)
|
||||
oeps_category TEXT, -- 'Verein', 'Reiter', 'Richter'
|
||||
|
||||
-- Licenses & Status
|
||||
license_code TEXT, -- e.g. 'R1', 'RD3'
|
||||
has_start_card INTEGER NOT NULL DEFAULT 0, -- Boolean: Paid annual fee?
|
||||
is_locked INTEGER NOT NULL DEFAULT 0, -- Boolean: Sperrliste?
|
||||
|
||||
-- Contact & Meta
|
||||
nationality TEXT NOT NULL DEFAULT 'AUT', -- ISO 3-Letter
|
||||
contact_json TEXT, -- Address, Phone, Email
|
||||
|
||||
-- Sync Meta
|
||||
created_at INTEGER NOT NULL,
|
||||
updated_at INTEGER NOT NULL,
|
||||
version INTEGER NOT NULL DEFAULT 1
|
||||
);
|
||||
|
||||
CREATE INDEX idx_actor_oeps_id ON actor(oeps_id);
|
||||
CREATE INDEX idx_actor_name ON actor(last_name, first_name);
|
||||
|
||||
|
||||
-- Pferde
|
||||
CREATE TABLE horse (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
|
||||
-- Identification
|
||||
oeps_id TEXT, -- 'Satznummer' (10 digits) - CRITICAL for Export
|
||||
head_number_permanent TEXT, -- 'Kopfnummer' (e.g. A123)
|
||||
life_number TEXT, -- 'Lebensnummer' (Zucht)
|
||||
fei_id TEXT,
|
||||
|
||||
-- Details
|
||||
birth_year INTEGER,
|
||||
gender TEXT, -- 'M', 'W', 'G' (Gelding/Wallach)
|
||||
color TEXT,
|
||||
sire_name TEXT, -- Vater (Denormalized for search)
|
||||
dam_name TEXT, -- Mutter
|
||||
|
||||
-- Owner Link
|
||||
owner_id TEXT, -- FK to actor.id
|
||||
|
||||
-- Status
|
||||
is_locked INTEGER NOT NULL DEFAULT 0, -- Sperrliste
|
||||
|
||||
-- Sync Meta
|
||||
created_at INTEGER NOT NULL,
|
||||
updated_at INTEGER NOT NULL,
|
||||
version INTEGER NOT NULL DEFAULT 1
|
||||
);
|
||||
|
||||
CREATE INDEX idx_horse_oeps_id ON horse(oeps_id);
|
||||
CREATE INDEX idx_horse_head_num ON horse(head_number_permanent);
|
||||
CREATE INDEX idx_horse_name ON horse(name);
|
||||
|
||||
-- ==================================================================
|
||||
-- 3. EVENT STRUCTURE
|
||||
-- ==================================================================
|
||||
|
||||
CREATE TABLE event (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
start_date INTEGER NOT NULL, -- Epoch Day
|
||||
end_date INTEGER NOT NULL,
|
||||
location TEXT,
|
||||
organizer_id TEXT NOT NULL, -- FK to actor.id
|
||||
|
||||
status TEXT NOT NULL DEFAULT 'PLANNING' -- PLANNING, ACTIVE, ARCHIVED
|
||||
);
|
||||
|
||||
CREATE TABLE tournament (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
event_id TEXT NOT NULL REFERENCES event(id),
|
||||
|
||||
-- OEPS Spec
|
||||
oeps_number TEXT NOT NULL, -- 5 digits (e.g. 21001)
|
||||
category TEXT, -- e.g. 'CSN-A'
|
||||
ruleset TEXT NOT NULL DEFAULT 'OETO', -- 'OETO', 'FEI'
|
||||
|
||||
-- Sync Meta
|
||||
updated_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
-- Bewerbe (Competitions)
|
||||
-- Note: If a competition is split into 2 departments (Abteilungen),
|
||||
-- we create 2 rows here to match the OEPS 'B-Satz' logic.
|
||||
CREATE TABLE competition (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
tournament_id TEXT NOT NULL REFERENCES tournament(id),
|
||||
|
||||
-- Identification
|
||||
code_internal TEXT NOT NULL, -- '01', '02' (2 digits)
|
||||
code_official TEXT, -- '001' (3 digits, optional)
|
||||
division_id INTEGER NOT NULL DEFAULT 0, -- 'Abteilung' (0=None, 1=1st, 2=2nd)
|
||||
|
||||
-- Description
|
||||
title TEXT NOT NULL,
|
||||
category TEXT, -- e.g. 'LM', 'S*'
|
||||
discipline TEXT NOT NULL, -- 'D', 'S', 'C' (Dressage, Jumping, Combined)
|
||||
|
||||
-- Rules & Scoring
|
||||
scoring_method TEXT NOT NULL, -- 'A0', 'C', 'DRESSAGE_PERCENT'
|
||||
start_fee INTEGER NOT NULL DEFAULT 0, -- In Cents
|
||||
|
||||
-- State
|
||||
status TEXT NOT NULL DEFAULT 'OPEN', -- OPEN, CLOSED_FOR_ENTRIES, RUNNING, FINISHED, SIGNED_OFF
|
||||
|
||||
-- Sync Meta
|
||||
updated_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_comp_tournament ON competition(tournament_id);
|
||||
|
||||
-- ==================================================================
|
||||
-- 4. SPORT & PROCESS
|
||||
-- ==================================================================
|
||||
|
||||
-- Nennungen (Entries)
|
||||
-- Represents the intent to start.
|
||||
CREATE TABLE entry (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
competition_id TEXT NOT NULL REFERENCES competition(id),
|
||||
|
||||
-- The Pair
|
||||
horse_id TEXT NOT NULL REFERENCES horse(id),
|
||||
rider_id TEXT NOT NULL REFERENCES actor(id),
|
||||
|
||||
-- Financials
|
||||
responsible_person_id TEXT REFERENCES actor(id), -- Who pays?
|
||||
fee_agreed INTEGER NOT NULL, -- In Cents (Snapshot of price at entry time)
|
||||
payment_status TEXT NOT NULL DEFAULT 'PENDING', -- PENDING, PAID, WAIVED
|
||||
|
||||
-- Validation Override (The "Human Factor")
|
||||
validation_status TEXT NOT NULL DEFAULT 'OK', -- OK, WARNING, BLOCKED
|
||||
override_comment TEXT, -- Why was this allowed despite warning?
|
||||
|
||||
-- Sync Meta
|
||||
created_at INTEGER NOT NULL,
|
||||
updated_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_entry_comp ON entry(competition_id);
|
||||
CREATE INDEX idx_entry_rider ON entry(rider_id);
|
||||
|
||||
-- Startliste (Start Order)
|
||||
-- Subset of entries that actually start.
|
||||
CREATE TABLE start_list_entry (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
entry_id TEXT NOT NULL REFERENCES entry(id),
|
||||
|
||||
-- Ordering
|
||||
start_order INTEGER, -- 1, 2, 3...
|
||||
start_time_planned INTEGER, -- Epoch Millis (optional)
|
||||
|
||||
-- Tournament Specifics
|
||||
head_number_event TEXT, -- Startnummer am Turnier (kann von A123 abweichen)
|
||||
|
||||
-- Status
|
||||
status TEXT NOT NULL DEFAULT 'READY', -- READY, STARTED, DNS (Did Not Start)
|
||||
|
||||
UNIQUE(entry_id)
|
||||
);
|
||||
|
||||
-- Ergebnisse (Results)
|
||||
CREATE TABLE result (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
start_list_entry_id TEXT NOT NULL REFERENCES start_list_entry(id),
|
||||
|
||||
-- The Outcome
|
||||
rank INTEGER, -- 1, 2, 3... (NULL if eliminated)
|
||||
|
||||
-- Scoring Details (Polymorphic based on Competition Type)
|
||||
points_jump_faults DECIMAL(5,2), -- Springfehler
|
||||
time_taken_ms INTEGER, -- Zeit in Millisekunden
|
||||
score_dressage_percent DECIMAL(5,3), -- 72.500
|
||||
score_dressage_total DECIMAL(6,2), -- Summe Punkte
|
||||
|
||||
-- Status Flags
|
||||
classification TEXT NOT NULL DEFAULT 'OK', -- OK, EL (Elim), RET (Retired), DIS (Disq)
|
||||
|
||||
-- Detailed Marks (JSON)
|
||||
-- e.g. { "judge_C": 7.5, "judge_H": 7.2, "obstacles": [...] }
|
||||
details_json TEXT,
|
||||
|
||||
-- Money
|
||||
prize_money INTEGER DEFAULT 0, -- In Cents
|
||||
|
||||
-- Audit
|
||||
updated_by_user_id TEXT,
|
||||
updated_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_result_starter ON result(start_list_entry_id);
|
||||
|
||||
-- ==================================================================
|
||||
-- 5. AUDIT LOG (NFR-07)
|
||||
-- ==================================================================
|
||||
|
||||
CREATE TABLE audit_log (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
entity_type TEXT NOT NULL, -- 'RESULT', 'ENTRY'
|
||||
entity_id TEXT NOT NULL,
|
||||
action TEXT NOT NULL, -- 'CREATE', 'UPDATE', 'DELETE'
|
||||
|
||||
user_id TEXT,
|
||||
timestamp INTEGER NOT NULL,
|
||||
|
||||
changes_json TEXT -- { "score_old": 7.0, "score_new": 7.5 }
|
||||
);
|
||||
@@ -1,177 +0,0 @@
|
||||
# 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, CDN-C-NEU"
|
||||
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 discipline "S (Springen), D (Dressur), C"
|
||||
string category "Klasse z.B. A, L, M, S*, lizenzfrei"
|
||||
string scoring_method "Richtverfahren (z.B. A0, A2, AM5, Stil)"
|
||||
int start_fee "in Cent"
|
||||
string status "OPEN, RUNNING, FINISHED"
|
||||
int planned_duration_per_starter_seconds "Kalkulierte Reitzeit pro Starter"
|
||||
}
|
||||
|
||||
OFFICIALS {
|
||||
string id PK "UUID"
|
||||
string tournament_id FK "oder competition_id"
|
||||
string actor_id FK "Richter / Parcoursbauer"
|
||||
string role "Hauptrichter, Richter, TD, Parcoursbauer"
|
||||
}
|
||||
|
||||
ACTOR {
|
||||
string id PK "UUID"
|
||||
string oeps_id "z.B. 123456"
|
||||
string type "PERSON, ORGANIZATION"
|
||||
string name "Vollständiger Name"
|
||||
string license_code "z.B. R1"
|
||||
}
|
||||
|
||||
QUALIFICATION {
|
||||
string id PK "UUID"
|
||||
string actor_id FK
|
||||
string discipline "S, D, V"
|
||||
string level "z.B. L, M, S"
|
||||
string role "RICHTER, PARCOURSBAUER"
|
||||
}
|
||||
|
||||
ENTRY {
|
||||
string id PK "UUID"
|
||||
string competition_id FK
|
||||
string horse_id FK
|
||||
string rider_id FK
|
||||
string status "ACTIVE, WITHDRAWN"
|
||||
string preferred_start_position "Optional: vorne, hinten, zu"
|
||||
}
|
||||
|
||||
START_LIST_ENTRY {
|
||||
string id PK "UUID"
|
||||
string entry_id FK
|
||||
int start_order "Nummer in der Startreihenfolge"
|
||||
string status "READY, IN_PROGRESS, FINISHED, DNS"
|
||||
}
|
||||
|
||||
RESULT {
|
||||
string id PK "UUID"
|
||||
string start_list_entry_id FK
|
||||
int rank "Platzierung (kann manuell überschrieben werden)"
|
||||
string status "OK, EL, RET, DNS"
|
||||
float points "Fehlerpunkte / Wertnote"
|
||||
float time_seconds "Benötigte Zeit"
|
||||
int prize_money "Ausbezahltes Geld in Cent"
|
||||
}
|
||||
|
||||
BILLING_ACCOUNT {
|
||||
string id PK "UUID"
|
||||
string event_id FK
|
||||
string payer_id FK "Akteur (Zahler)"
|
||||
int current_balance "in Cent"
|
||||
}
|
||||
|
||||
TRANSACTION {
|
||||
string id PK "UUID"
|
||||
string account_id FK
|
||||
string entry_id FK "Optionaler Bezug zur Nennung"
|
||||
string type "NENNGELD, STARTGELD, TAUSCHGEBÜHR, NACHNENNUNG"
|
||||
int amount "in Cent"
|
||||
}
|
||||
|
||||
%% 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"
|
||||
OFFICIALS }o--|| ACTOR: "ist ein"
|
||||
ACTOR ||--o{ QUALIFICATION: "hat Berechtigungen"
|
||||
COMPETITION ||--o{ ENTRY: "hat Nennungen"
|
||||
ENTRY ||--o| START_LIST_ENTRY: "wird zu Starter"
|
||||
START_LIST_ENTRY ||--o| RESULT: "hat Ergebnis"
|
||||
EVENT ||--o{ BILLING_ACCOUNT: "verwaltet Kassa für"
|
||||
BILLING_ACCOUNT ||--o{ TRANSACTION: "verbucht"
|
||||
```
|
||||
|
||||
## Erläuterung zum Modell
|
||||
|
||||
### 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. In der ersten Phase konzentrieren
|
||||
wir uns auf **C-NEU** und **C**.
|
||||
|
||||
### 3. `COMPETITION` (Bewerb / Prüfung)
|
||||
|
||||
Die kleinste sportliche Einheit und das Herzstück der Ausschreibung. Wir fokussieren uns initial auf **Dressur (D)** und
|
||||
**Springen (S)**.
|
||||
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.
|
||||
* **Zeitplanung:** `planned_duration_per_starter_seconds` ist für die Kalkulation der Startzeiten elementar.
|
||||
|
||||
### 4. `OFFICIALS` & `QUALIFICATION` (Der C-Satz & ZNS-Import)
|
||||
|
||||
Dies entspricht dem **C-Satz**. Richter und Parcoursbauer müssen einem Turnier oder spezifisch einem Bewerb zugewiesen
|
||||
werden.
|
||||
|
||||
* Neu: Die Entität `QUALIFICATION` bildet die importierten Lizenzstufen aus der ZNS-Datei `RICHT01.DAT` ab. Das Backend
|
||||
gleicht diese Berechtigungen bei der Zuweisung gegen die Kategorie der `COMPETITION` ab.
|
||||
|
||||
### 5. `ENTRY`, `START_LIST_ENTRY` & `RESULT` (Nennung bis Ergebnis)
|
||||
|
||||
* **`ENTRY` (Nennung):** Die Nennung verknüpft ein Pferd und einen Reiter mit einem bestimmten Bewerb. Hier werden auch
|
||||
**Startwünsche** (vorne/hinten) erfasst, die für den Telefon-Workflow kritisch sind.
|
||||
* **`START_LIST_ENTRY` (Startliste):** Generiert aus den aktiven Nennungen. Definiert die exakte Startreihenfolge.
|
||||
* **`RESULT` (Ergebnis):** Hält die im "Richterturm-Workflow" erfassten Rohdaten (Punkte/Zeit) und die errechnete
|
||||
Platzierung. Die Platzierung kann bei Bedarf manuell vom Veranstalter überschrieben werden (z.B. wenn mehr Platziert
|
||||
werden sollen, als die ÖTO vorschlägt).
|
||||
|
||||
### 6. Billing Context (`BILLING_ACCOUNT` & `TRANSACTION`)
|
||||
|
||||
Die Abrechnung (Kassa) wird als separater Bereich an das `EVENT` gehängt.
|
||||
|
||||
* Es wird ein `BILLING_ACCOUNT` pro "Zahler" (meist ein `ACTOR`) geführt.
|
||||
* Jede Gebühr (Nenngeld, Startgeld, Nachnenngebühr) wird als atomare `TRANSACTION` verbucht.
|
||||
* Wenn ein **Nennungstausch** stattfindet, bleibt das Nenngeld als positive Transaktion auf dem Account erhalten,
|
||||
während für die neue Nennung lediglich eine neue Startgeld- oder Tauschgebühr-Transaktion erzeugt wird. Das ermöglicht
|
||||
maximale Flexibilität.
|
||||
@@ -1,141 +0,0 @@
|
||||
---
|
||||
type: Reference
|
||||
status: ACTIVE
|
||||
owner: Lead Architect
|
||||
---
|
||||
# 01 - Core Domain Entities
|
||||
|
||||
Dieses Dokument definiert die zentralen fachlichen Entitäten (Kern-Entitäten) des "Meldestelle"-Projekts. Diese Entitäten bilden das Fundament des Datenmodells und der gesamten Anwendungslogik.
|
||||
|
||||
> **Hinweis:** Dieses Modell wurde basierend auf der Analyse des OEPS-Pflichtenhefts 2021 V2.4 verfeinert.
|
||||
|
||||
## Die 6 Kern-Entitäten
|
||||
|
||||
1. **Event**: Der organisatorische Rahmen.
|
||||
2. **Turnier**: Die administrative, regelbasierte Einheit.
|
||||
3. **Bewerb**: Die einzelne sportliche Prüfung.
|
||||
4. **Wertungsserie**: Der übergeordnete Cup oder die Meisterschaft.
|
||||
5. **Akteur**: Personen und Organisationen.
|
||||
6. **Pferd**: Die Pferde als eigenständige Entität.
|
||||
|
||||
---
|
||||
|
||||
### 1. Entität: `Veranstaltung` (Event)
|
||||
|
||||
**Zweck:** Der übergeordnete organisatorische Container für eine Veranstaltung an einem bestimmten Ort und zu einer bestimmten Zeit. Eine Veranstaltung kann ein oder mehrere Turniere umfassen.
|
||||
|
||||
**Beispiele:** "Apropos Pferd 2026", "Vereinsturnier Reitclub XY".
|
||||
|
||||
**Attribute:**
|
||||
* `Veranstaltung-ID` (PK): Eindeutiger technischer Schlüssel (UUID).
|
||||
* `Name`: Offizieller Name der Veranstaltung.
|
||||
* `Veranstaltungsort`: Adresse und Name der Anlage.
|
||||
* `Datum_Von`: Startdatum des Events.
|
||||
* `Datum_Bis`: Enddatum des Events.
|
||||
* `Veranstalter_ID` (FK): Verweis auf den `Akteur`, der die Veranstaltung ausrichtet.
|
||||
* `Sparten`: Liste der angebotenen Sparten.
|
||||
* `Austragungsplätze`: Liste der Austragungsplätze (`austragungsplaetze`).
|
||||
* `Artikel-Preisliste`: Liste der Zusatzartikel inkl. Preise (`artikelPreisliste`).
|
||||
* `Status`: Grober Zustand des Events (z.B. `In Planung`, `Laufend`, `Abgeschlossen`).
|
||||
|
||||
---
|
||||
|
||||
### 2. Entität: `Turnier`
|
||||
|
||||
**Zweck:** Definiert eine administrative Einheit innerhalb eines Events, die unter einem einheitlichen Regelwerk stattfindet. Hier werden Nennungen, Starter- und Ergebnislisten verwaltet.
|
||||
|
||||
**Beispiele:** "CSN-A im Rahmen der Apropos Pferd", "CSI2* im Rahmen der Apropos Pferd".
|
||||
|
||||
**Attribute:**
|
||||
* `Turnier-ID` (PK): Eindeutiger technischer Schlüssel (UUID).
|
||||
* `Veranstaltung_ID` (FK): Verweis auf die übergeordnete `Veranstaltung`.
|
||||
* `Turniernummer_OEPS`: 5-stellige Nummer (z.B. `21001`) für den Datenaustausch.
|
||||
* `Reglement`: Entscheidende Weiche für die Anwendungslogik (Enum: `OETO`, `FEI`).
|
||||
* `Kategorie`: Offizielle Turnierkategorie (z.B. "CSN-A", "CSI2*", "CDI-W").
|
||||
* `Sparte`: Sparte des Turniers (z.B. `Springen`, `Dressur`).
|
||||
* `Turnierbeauftragter_ID` (FK): Referenz auf den Turnierbeauftragten (TB).
|
||||
* `Ausschreibung_Text`: Der vollständige Text der Ausschreibung.
|
||||
* `Nennschluss`: Datum und Uhrzeit.
|
||||
* `NachnenngebuehrVerlangt`: Flag, ob Nachnenngebühr erhoben wird.
|
||||
* `NenntauschboerseAktiv`: Flag, ob Nenntauschbörse aktiv ist.
|
||||
* `Status`: Detaillierter Zustand des Turniers (z.B. `Genehmigt`, `Nennschluss`, `Ergebnisse final`).
|
||||
|
||||
---
|
||||
|
||||
### 3. Entität: `Bewerb`
|
||||
|
||||
**Zweck:** Die einzelne sportliche Prüfung innerhalb eines Turniers. Ein Bewerb ist die kleinste Einheit, für die eine Nennung möglich ist und eine Ergebnisliste erstellt wird.
|
||||
|
||||
**Beispiele:** "Standardspringprüfung Kl. L", "Dressurprüfung Kl. M - Aufgabe M5".
|
||||
|
||||
**Attribute:**
|
||||
* `Bewerb-ID` (PK): Eindeutiger technischer Schlüssel (UUID).
|
||||
* `Turnier_ID` (FK): Verweis auf das zugehörige `Turnier`.
|
||||
* `Nummer_Intern`: 2-stellige Nummer (z.B. `05`).
|
||||
* `Nummer_Offiziell`: 3-stellige Nummer (z.B. `005`) für Turniere > 99 Bewerbe.
|
||||
* `Abteilung`: Kennzeichen für Unterteilungen (z.B. `1`, `2`). Default `0`.
|
||||
* `Titel`: Der offizielle Titel des Bewerbs.
|
||||
* `Startgeld`: Das für diesen Bewerb zu entrichtende Startgeld (in EUR).
|
||||
* `Startberechtigung_Text`: Textuelle Beschreibung der Teilnahmevoraussetzungen.
|
||||
* `Besondere_Bestimmungen`: Spezielle Regeln nur für diesen Bewerb.
|
||||
|
||||
---
|
||||
|
||||
### 4. Entität: `Wertungsserie`
|
||||
|
||||
**Zweck:** Definiert eine übergeordnete Wertung (Cup, Meisterschaft), die Ergebnisse aus spezifischen Bewerben über mehrere Turniere hinweg sammelt und nach einem eigenen Regelwerk auswertet.
|
||||
|
||||
**Beispiele:** "Casino Grand Prix 2026", "OÖ Landesmeisterschaft Dressur Allgemeine Klasse".
|
||||
|
||||
**Attribute:**
|
||||
* `Serie-ID` (PK): Eindeutiger technischer Schlüssel (UUID).
|
||||
* `Name`: Offizieller Name der Serie.
|
||||
* `Saison`: Das Jahr, in dem die Serie stattfindet.
|
||||
* `Reglement_Text`: Die spezifischen Regeln für die Wertung (Punktesystem, etc.).
|
||||
* `Teilnahmeberechtigung_Text`: Regeln, wer an der Serie teilnehmen darf.
|
||||
* `Qualifikationsbewerbe`: Eine Liste von Verweisen auf die `Bewerb-IDs`, deren Ergebnisse für diese Serie gewertet werden.
|
||||
|
||||
---
|
||||
|
||||
### 5. Entität: `Akteur`
|
||||
|
||||
**Zweck:** Zentrale, widerspruchsfreie Verwaltung aller beteiligten Personen und Organisationen.
|
||||
|
||||
**Beispiele:** Ein Reiter, ein Pferdebesitzer, ein Züchter, ein Richter, ein Reitverein.
|
||||
|
||||
**Attribute:**
|
||||
* `Akteur-ID` (PK): Eindeutiger technischer Schlüssel (UUID).
|
||||
* `Typ`: `PERSON` oder `ORGANISATION`.
|
||||
* `Name`: Vollständiger Name der Person oder Organisation.
|
||||
* `Kontakt`: Adress- und Kontaktdaten.
|
||||
* `Rollen`: Liste der Rollen (z.B. `REITER`, `RICHTER`).
|
||||
* **OEPS-Daten (für Personen):**
|
||||
* `Satznummer`: 6-stellig, numerisch (Primärschlüssel OEPS).
|
||||
* `Lizenz`: Aktueller Lizenzcode (z.B. "R1").
|
||||
* `Startkarte`: Boolean/Status (Jahresgebühr bezahlt?).
|
||||
* `Verein_ID`: Verweis auf den Stammverein.
|
||||
* **Identifikatoren (Sonstige):**
|
||||
* `FEI-ID`
|
||||
* `Mitgliedsnummer_Zuchtverband`
|
||||
|
||||
---
|
||||
|
||||
### 6. Entität: `Pferd`
|
||||
|
||||
**Zweck:** Zentrale Verwaltung aller Pferde, egal ob im Sport oder in der Zucht.
|
||||
|
||||
**Beispiele:** Ein international erfolgreiches Sportpferd, eine Zuchtstute.
|
||||
|
||||
**Attribute:**
|
||||
* `Pferd-ID` (PK): Eindeutiger technischer Schlüssel (UUID).
|
||||
* `Name`: Offizieller Name des Pferdes.
|
||||
* `Abstammung_Vater_ID` (FK): Verweis auf ein anderes `Pferd` (Vater).
|
||||
* `Abstammung_Mutter_ID` (FK): Verweis auf ein anderes `Pferd` (Mutter).
|
||||
* `Besitzer_ID` (FK): Verweis auf den `Akteur`, dem das Pferd gehört.
|
||||
* **OEPS-Daten:**
|
||||
* `Satznummer`: 10-stellig, numerisch (Primärschlüssel OEPS).
|
||||
* `Kopfnummer`: 4-stellig, alphanumerisch (Permanente ID).
|
||||
* `Lebensnummer`: 9-stellig (Zuchtnummer).
|
||||
* **FEI-Daten:**
|
||||
* `FEI-ID`: Eindeutige FEI-Nummer.
|
||||
* `FEI-Pass`: Passnummer (kann abweichen).
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
type: Reference
|
||||
status: ACTIVE
|
||||
owner: Lead Architect
|
||||
---
|
||||
# Entitäten des Kern-Modells
|
||||
|
||||
Dieses Verzeichnis enthält detaillierte Beschreibungen der zentralen fachlichen Entitäten des "Meldestelle"-Projekts.
|
||||
Jede Datei beschreibt eine Entität und ihre Attribute.
|
||||
|
||||
Diese Dokumente sind die "Wahrheit" für die Implementierung.
|
||||
@@ -1,101 +0,0 @@
|
||||
# Prozess: ZNS-Import (Master Data Sync)
|
||||
|
||||
**Status:** Draft / Konzept
|
||||
**Datum:** 17.03.2026
|
||||
|
||||
## 1. Ausgangslage & Herausforderungen
|
||||
|
||||
Das OEPS stellt die Stammdaten als ZIP-Datei (`zns.zip`) bereit, die in Form von textbasierten ASCII-Dateien (Codepage
|
||||
850) vorliegen. Die Struktur ist starr, nicht relational und erfahrungsgemäß oft fehlerbehaftet oder unsauber
|
||||
formatiert (Legacy-Spezifikation V2.4).
|
||||
|
||||
Zusätzlich ändern sich Lizenzstände, Sperrlisten oder Registrierungen laufend. Weiters ist die Meldestelle oft
|
||||
gezwungen, vor Ort manuelle Korrekturen vorzunehmen oder Daten aus anderen Quellen (z.B. Zuchtverbände wie AWÖ) zu
|
||||
integrieren.
|
||||
|
||||
## 2. Architektonische Entscheidung: Event Sourcing & CQRS
|
||||
|
||||
Um den Anforderungen (vollständige Historie, turnierspezifischer Datenstand, fehlertoleranter Import, **manuelle
|
||||
Overrides**) gerecht zu werden, wird der ZNS-Import nach Prinzipien von **Event Sourcing** und **CQRS (Command Query
|
||||
Responsibility Segregation)** konzipiert.
|
||||
|
||||
* Wir überschreiben keine Daten einfach (`UPDATE`), sondern hängen Änderungen als Ereignisse (`EVENTS`) an.
|
||||
* Dies ermöglicht es uns, den Stand einer Person oder eines Pferdes für die Ewigkeit exakt zu rekonstruieren, selbst
|
||||
wenn sich die Stammdaten ändern.
|
||||
|
||||
### 2.1 Der Import-Ablauf (Die "Command" Seite)
|
||||
|
||||
1. **Ingestion:** Der User (Meldestelle) lädt die `zns.zip` hoch oder triggert einen Import aus einer anderen Quelle (
|
||||
Zuchtverband).
|
||||
2. **Parsing & Cleansing:** Ein dedizierter Importer-Service entpackt die ZIP, liest die Dateien zeilenweise (Codepage
|
||||
850!) und konvertiert die starren ASCII-Strings in nutzbare DTOs (Data Transfer Objects). Hier greifen erste
|
||||
Reinigungs-Routinen.
|
||||
3. **Event Generation:** Der Service vergleicht die geparsten Daten mit dem aktuellen Stand (der "Read Model"
|
||||
Datenbank).
|
||||
* Findet er einen neuen Akteur (Satznummer bisher unbekannt), erzeugt er ein `ActorCreatedEvent`.
|
||||
* Findet er Änderungen (z.B. Lizenz wurde von R1 auf R2 erhöht, oder Sperre wurde gesetzt), erzeugt er ein
|
||||
`ActorUpdatedEvent` (bzw. spezifischer `LicenseUpgradedEvent`, `ActorLockedEvent`).
|
||||
4. **Manuelle Korrekturen (Overrides):** Wenn die Meldestelle vor Ort Daten korrigiert (weil die OEPS-Daten falsch
|
||||
waren), erzeugt das System ein spezielles Event, z.B. `ManualActorCorrectionEvent`. Dieses Event hat eine **höhere
|
||||
Priorität** als zukünftige `ActorUpdatedEvents` aus dem ZNS-Import, solange der OEPS die Daten in seinem System nicht
|
||||
korrigiert hat (Lösung z.B. über einen "Ignorier-Zeitstempel" oder Prioritäts-Flags in der Projektion).
|
||||
5. **Event Log:** Diese Events werden in einem zentralen Event Log (dem "Event Store") persistiert. Dies ist die
|
||||
absolute Single Source of Truth.
|
||||
|
||||
### 2.2 Die Datenbereitstellung (Die "Query" Seite)
|
||||
|
||||
1. **Projection (Projektion):** Kleine "Listener" hören auf das Event Log und bauen daraus die relationale
|
||||
Lesedatenbank (SQLite / PostgreSQL) auf. Hierbei wird die Logik angewandt, dass manuelle Korrekturen der Meldestelle
|
||||
Vorrang vor veralteten Verbandsdaten haben.
|
||||
2. **Turnier-Snapshot:** Wenn ein Turnier konfiguriert wird oder am Vortag aktualisiert wird, zieht sich das System
|
||||
einen "Snapshot" (Schnappschuss) der aktuellen Stammdaten und verknüpft diese mit der Turnier-ID.
|
||||
3. **Zuchtverbands-Daten (Fremdformate):** Die Architektur erlaubt es uns leicht, neue Parser (z.B. für AWÖ-Daten) zu
|
||||
schreiben. Diese lesen die fremden Formate ein und generieren die gleichen Standard-Events (`HorseCreatedEvent`, aber
|
||||
evtl. mit Lebensnummer statt OEPS-Satznummer), die dann problemlos in die bestehende Projektion einfließen.
|
||||
|
||||
## 3. Datenhaltung (Konzeptuelles Modell)
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant ImporterService as ZNS / AWÖ Importer
|
||||
participant EventStore as Event Log (Append Only)
|
||||
participant Projections as DB (Read Models)
|
||||
User ->> ImporterService: Upload zns.zip (Freitag vor Turnier)
|
||||
ImporterService ->> ImporterService: Parse & Clean
|
||||
|
||||
rect rgb(200, 220, 240)
|
||||
Note right of ImporterService: Generierung von Import-Events
|
||||
ImporterService ->> EventStore: Append: ActorUpdatedEvent(Satznummer: 123456, License: R2)
|
||||
end
|
||||
|
||||
User ->> EventStore: Manuelle Korrektur am Turniertag
|
||||
rect rgb(240, 200, 200)
|
||||
Note right of User: Generierung von Override-Events
|
||||
User ->> EventStore: Append: ManualActorCorrectionEvent(Satznummer: 123456, Name: "Neuer Name")
|
||||
end
|
||||
|
||||
EventStore -->> Projections: Update Relational DB (z.B. aktueller Stand)
|
||||
Note over Projections: Turniersystem liest nur <br/>aus Read Models. Manuelle Korrekturen<br/>gewinnen gegen Import-Daten.
|
||||
```
|
||||
|
||||
## 4. Vorteile dieser Architektur
|
||||
|
||||
* **Audit-Sicherheit:** Wir wissen exakt, *wann* sich *was* geändert hat. Nichts geht verloren.
|
||||
* **Archivierung:** Ein Turnier-Archiv muss nicht mehr mühsam als riesiger PDF/Daten-Dump gesichert werden. Wir können
|
||||
das Turnier einfach anhand des Timestamps gegen den Event Store abfragen.
|
||||
* **Fehlertoleranz:** Wenn ein Parsing-Fehler auftritt oder der OEPS kaputte Daten liefert, machen wir einfach ein
|
||||
Rollback der fehlerhaften Events und projizieren die Datenbank neu. Wir zerschießen nicht die operativen Tabellen.
|
||||
* **Erweiterbarkeit (Vision):** Wenn später ein "Ergebnis-Analyse-Service" oder ein "Züchter-Portal" angebunden wird,
|
||||
können diese einfach die historischen Events abonnieren (Kafka/Message Queue).
|
||||
* **Integration von Drittsystemen (Zuchtverbände):** Fremddaten können durch eigene Parser in unsere Standard-Events
|
||||
übersetzt und nahtlos integriert werden.
|
||||
|
||||
## 5. Zu klärende Details für die Implementierung
|
||||
|
||||
* **Sync-Mechanismus:** Wie kommen die Events vom Master-Server auf den Offline-Laptop im Plumpsklo? (Vermutlich eine
|
||||
robuste Sync-Queue, Kafka könnte für den Offline-Einsatz zu schwergewichtig sein, Alternativen evaluieren).
|
||||
* **Event-Payload:** Definition der JSON-Struktur für die wichtigsten Events (`zns.actor.updated`,
|
||||
`zns.horse.registered`).
|
||||
* **Merge-Logik:** Wie lange bleibt ein `ManualActorCorrectionEvent` gültig, bevor ein zukünftiges Update vom ZNS diesen
|
||||
Wert wieder überschreiben darf?
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
type: Reference
|
||||
status: ACTIVE
|
||||
owner: Lead Architect
|
||||
---
|
||||
# Das Kern-Modell (Core Model)
|
||||
|
||||
Dieses Verzeichnis ist die "Single Source of Truth" für das destillierte, fachliche Wissen des Projekts. Nur was hier beschrieben ist, gilt als vereinbarte Wahrheit für die Implementierung.
|
||||
|
||||
## Struktur
|
||||
|
||||
* `Entities/`: Beschreibt die zentralen fachlichen Entitäten des Systems (z.B. Event, Turnier, Akteur).
|
||||
* `Processes/`: Dokumentiert die wichtigsten fachlichen Prozesse und Abläufe (z.B. Nennungsprozess, Ergebniserfassung).
|
||||
* `Rules/`: Definiert explizite Geschäftsregeln und Validierungen.
|
||||
|
||||
## Workflow
|
||||
|
||||
Informationen in diesem Verzeichnis sind das Ergebnis der Analyse von externen Quellen (siehe `../02_Reference`) und Workshops (siehe `../03_Analysis`).
|
||||
Jede Änderung am Core Model sollte nachvollziehbar und idealerweise durch ein ADR gestützt sein.
|
||||
@@ -1,244 +0,0 @@
|
||||
---
|
||||
type: Reference
|
||||
status: ACTIVE
|
||||
owner: Lead Architect & ÖTO/FEI Rulebook Expert
|
||||
last_update: 2026-04-05
|
||||
sources:
|
||||
- ÖTO 2026, Abschnitt A I, § 2 & § 3 & § 4
|
||||
- Domain Workshop 2026-03-17
|
||||
- Session 2026-03-24 (Architektur-Diskussion)
|
||||
---
|
||||
|
||||
# Ubiquitous Language – Offizielle Domänen-Terminologie
|
||||
|
||||
Dieses Dokument ist die **Single Source of Truth** für alle Begriffe im Projekt.
|
||||
Alle Begriffe sind exakt so zu verwenden – im Code, in der Dokumentation und in der Kommunikation.
|
||||
Bei Widersprüchen gilt: **ÖTO-Regelwerk → dieses Dokument → alle anderen Quellen**.
|
||||
|
||||
---
|
||||
|
||||
## 1. Hierarchie der Veranstaltungs-Struktur
|
||||
|
||||
```
|
||||
Veranstalter (OEPS-Mitgliedsverein)
|
||||
└── Veranstaltung (interne ID, selbst vergeben)
|
||||
├── Typ: Turnier | Reitertreffen | Sonderprüfung | PS&S | Turnierartig
|
||||
│
|
||||
├── [wenn Typ = Turnier]
|
||||
│ ├── Turniernummer (OEPS-vergeben, eindeutig)
|
||||
│ ├── Turnierkategorie (C-NEU, C, B, A, ...)
|
||||
│ ├── Sparte(n) (CDN, CSN, ...)
|
||||
│ └── Bewerb / Prüfung (Bewerbsnummer, fortlaufend)
|
||||
│ └── Abteilung (mindestens 1)
|
||||
│ ├── Teilnehmerkreis (Lizenz, Pferdealter, ...)
|
||||
│ └── Eigene Platzierung / Siegerehrung
|
||||
│
|
||||
├── [wenn Typ = Reitertreffen]
|
||||
│ └── Bewerbe (ohne offizielle Turniernummer)
|
||||
│
|
||||
└── [Cup / Serie / Meisterschaft → Querverweis auf mehrere Veranstaltungen]
|
||||
└── eigenes Reglement (siehe Abschnitt 4)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Kern-Begriffe (Alphabetisch)
|
||||
|
||||
### A
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------|
|
||||
| **Abteilung** | **Kleinste ausführbare, atomare Einheit** für Nennungen, Startlisten, Ergebnisse und Auswertungen. Untereinheit eines Bewerbs mit eigenem Teilnehmerkreis (Lizenz, Pferdealter etc.). Erhält eine fortlaufende **Abteilungsnummer** (1, 2, ...) innerhalb des Bewerbs. Referenz auf Startliste/Ergebnisliste: `BW: 9 Abt: 1` bzw. `9-1`. | |
|
||||
| **Abteilungs-Typen:** `SEPARATE_SIEGEREHRUNG` (= eigene Platzierung, eigene Siegerehrung, separater Ergebnislauf) | `ORGANISATORISCH` (= organisatorische Teilung, z.B. zur Ablaufoptimierung; Platzierung/Preise werden gemeinsam mit anderen Abteilungen dieses Bewerbs geführt). | |
|
||||
| Die ÖTO definiert sparten- und klassenabhängige Schwellenwerte, ab wievielen Startern eine Abteilung **verpflichtend** getrennt werden muss. Bei Überschreitung gibt das System eine **WARNUNG** (kein harter Fehler) – der TBA hat das letzte Wort (→ *Override-Event*). Vollständige Schwellenwert-Tabellen: → [`Abteilungs-Trennungs-Schwellenwerte.md`](../02_Reference/OETO_Regelwerk/Abteilungs-Trennungs-Schwellenwerte.md) | ÖTO § 2 Abs. 7, § 39 | |
|
||||
| **Akteur** | Historischer Begriff (siehe → *Stammdaten*). Oberbegriff für alle Personen (Reiter, Richter, Funktionäre, Besitzer) und Organisationen (Vereine), die im System interagieren. | – |
|
||||
| **Ausschreibung** | Das offizielle Dokument, das alle Bedingungen eines Turniers festlegt. Pflichtfelder gemäß ÖTO (A-Satz der ZNS-Schnittstelle). | ÖTO Ausschreibungs-Struktur |
|
||||
| **Austragungsplatz** | Physischer Ort (Platz, Arena, Halle) innerhalb einer Veranstaltung, auf dem Bewerbe stattfinden. Typ: `"Austragungsplatz"` (Wettkampf) oder `"Vorbereitungsplatz"` (Einreiten). Kann einer Sparte zugeordnet sein. Im Code als Entität **`Austragungsplatz`** (events-domain) abgebildet. | – |
|
||||
|
||||
### B
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|
|
||||
| **Bewerb** | Synonym: „Prüfung". Die einzelne sportliche Prüfung innerhalb eines Turniers (z.B. „Prüfung Nr. 9: Standardspringprüfung 95 cm"). Erhält eine fortlaufende **Bewerbsnummer** (01, 02, ...). Ein Bewerb besteht aus **mindestens einer Abteilung**. Die → *Abteilung* ist die kleinste Einheit für Nennungen, Startlisten und Ergebnisse. | ÖTO § 2 Abs. 7 |
|
||||
|
||||
### C
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|---------|------------------|----------------|
|
||||
| **Cup** | Siehe → *Serie*. | ÖTO § 2 Abs. 8 |
|
||||
|
||||
### F
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------|
|
||||
| **FEI-ID** | Eindeutige Identifikationsnummer der Internationalen Reiterlichen Vereinigung (FEI) für Reiter und Pferde. | FEI General Regulations |
|
||||
| **Funktionär** | Person mit einer definierten Rolle bei einem Turnier (Richter, Parcoursbauer, TBA, ...). Qualifikation wird gegen `RICHT01.DAT` geprüft. Im Code als Entität **`Funktionaer`** abgebildet. | ÖTO Funktionärs-Qualifikation |
|
||||
|
||||
### G
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|-----------------------|------------------------------------------------------------------------------------------------------------------|---------------------------|
|
||||
| **Gastreiter** | Reiter mit ausländischer Staatsbürgerschaft, der nicht für einen österreichischen Verein startet. | ÖTO Teilnahmeberechtigung |
|
||||
| **Gebühren-Verzicht** | Der Veranstalter kann die Nachnenngebühr für einzelne Nennungen erlassen. Wird als explizites Event gespeichert. | ÖTO Gebührenstruktur |
|
||||
|
||||
### K
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|
|
||||
| **Kategorie** | Das Niveau eines Turniers und/oder seiner Bewerbe bzw. die Teilnahmeberechtigung daran. Nationale Kategorien: `C-NEU`, `C`, `B*`, `B`, `A`, `A*`. | ÖTO § 3 Abs. 4 |
|
||||
| **Bewerbsklasse** | Früher „Turnierklasse“. Schwierigkeitsgrad eines Bewerbs. Springen: E0 (60–90 cm), A (105–110 cm), L, M, S. Dressur: E, A, L, M, S (nach Aufgabe). Stammdaten in `bewerbs_klassen`. | ÖTO B-Teil |
|
||||
| **Kombination** | Zwei oder mehr Turniere (ggf. unterschiedlicher Sparten) die am selben Ort/Datum stattfinden. Jedes Turnier behält seine eigene Turniernummer. Genehmigung durch LFV/OEPS erforderlich. | ÖTO § 4 |
|
||||
| **Kopfnummer** | *National (OEPS):* 4-stellige Registrierungsnummer eines Pferdes beim OEPS. **Nicht als eindeutige ID geeignet** – kann sich ändern. Dient zur schnellen Suche/Eingabe in der Meldestelle (Autocomplete), aber nicht als Datenbankschlüssel. *Turnier:* Temporäre Startnummer für das spezifische Turnier (ebenfalls nicht persistent). | – |
|
||||
| **Konto** | Kontobasierte Abrechnung pro Zahler (nicht nur pro Reiter). Basis für das „Hansi-Szenario" (Guthaben bei Transfer). | Billing Context |
|
||||
|
||||
### L
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|
|
||||
| **Lebensnummer** | 9-stellige (national) bzw. 15-stellige (international, UELN) Nummer, die ein Pferd bei der Geburt vom Zuchtverband erhält. Bei ausländischen Pferden im OEPS oft **generiert** → **nicht zur Suche geeignet**. Die ZNS-Daten zu Lebensnummern sind erfahrungsgemäß inkonsistent und widersprüchlich (z.B. Farbe `"Braun"` vs. `"Brauner"` für dasselbe Pferd). Primärer Schlüssel für den Datenaustausch bleibt die → *Satznummer*. | – |
|
||||
| **Lizenz (Reiterlizenz)** | Qualifikationsstufe eines Reiters (z.B. `R1`, `RD1`, `RD2`, `RS2`). Ein Reiter hat 0..1 Reiterlizenz. Stammdaten in `reiterlizenzen`, Referenz am Reiter `reit_lizenz_id`. | ÖTO Teilnahmeberechtigung |
|
||||
| **Fahr-Lizenz** | Lizenzkategorie für den Fahrsport (z.B. `F1`, `F2`). Ein Reiter hat 0..1 Fahr-Lizenz. Stammdaten in `fahr_lizenzen`, Referenz am Reiter `fahr_lizenz_id`. | ÖTO Teilnahmeberechtigung |
|
||||
| **Startkarte** | Nachweis der Jahresgebühr. Ein Reiter hat 0..1 Startkarte. Stammdaten in `startkarten`, Referenz am Reiter `startkarte_id`. | ÖTO Teilnahmeberechtigung |
|
||||
|
||||
### M
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------|
|
||||
| **Meisterschaft** | Übergeordneter Wettbewerb, der Ergebnisse aus Bewerben bei **mindestens zwei Turnieren** aggregiert und zu einem Endklassement führt. Darf nur auf Turnieren der Kategorie A* und A veranstaltet werden (außer Sonderregelungen der Sparte). Besitzt ein **eigenes Reglement** (siehe Abschnitt 4). | ÖTO § 2 Abs. 8, § 3 Abs. 4 |
|
||||
|
||||
### N
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------|
|
||||
| **Nennung** | Die verbindliche Anmeldung eines Paares (Reiter & Pferd) zu einem Bewerb. | Registration Context |
|
||||
| **Nennschluss** | Frist, bis zu der Nennungen ohne Nachnenngebühr eingereicht werden können. | ÖTO Nennschluss |
|
||||
| **Nennungs-Transfer** | Tausch von Reiter und/oder Pferd innerhalb einer bestehenden Nennung. **Kein Storno + Neu**, sondern eine Transfer-Operation. Bereits bezahltes Nenngeld wird als Guthaben geführt. | Registration Context |
|
||||
| **Nachnenngebühr** | Zusatzgebühr für Nennungen nach dem Nennschluss. Kann vom Veranstalter erlassen werden (→ *Gebühren-Verzicht*). | ÖTO Gebührenstruktur |
|
||||
|
||||
### O
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|--------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------|
|
||||
| **OEPS** | Österreichischer Pferdesportverband. Übergeordnete Organisation, vergibt Turniernummern und führt das ZNS. | – |
|
||||
| **Override-Event** | Explizit gespeichertes Ereignis, wenn der TBA oder die Meldestelle eine Regelwerk-Warnung bewusst überschreibt. Das System gibt **niemals** einen harten Fehler bei Regelkonflikten – immer nur eine Warnung + Override-Möglichkeit. | Domain Workshop 2026-03-17 |
|
||||
|
||||
### P
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------|
|
||||
| **Pferdesportliche Veranstaltung** | Oberbegriff laut ÖTO für alle Arten von Veranstaltungen: Turniere, Reitertreffen, Sonderprüfungen, PS&S, Turnierartige Veranstaltungen. In unserer Software entspricht dies dem Begriff → *Veranstaltung*. | ÖTO § 2 Abs. 1 |
|
||||
| **Prüfung** | Synonym für → *Bewerb*. In der ÖTO-Ausschreibung wird der Begriff „Prüfung" verwendet. | ÖTO § 2 Abs. 7 |
|
||||
|
||||
### R
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|--------------------|------------------------------------------------------------------------------------------------------------------------------|--------------|
|
||||
| **RichterEinsatz** | Value Object, das den Einsatz eines Funktionärs (Richter, Aufsicht) in einem Bewerb beschreibt. Felder: `funktionaerId` (Referenz auf Funktionär) und `position` (z.B. `"C"`, `"M"`, `"B"`, `"Aufsicht"`). Im Code als **`RichterEinsatz`** (entries-domain) abgebildet. | ÖTO Funktionärs-Qualifikation |
|
||||
| **Richtverfahren** | Das Bewertungsverfahren eines Bewerbs (z.B. § 204/4 Stilspringen, § 218 Einlauf). Bestimmt, wie Ergebnisse berechnet werden. | ÖTO B-Teil |
|
||||
|
||||
### S
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------|
|
||||
| **Reiter** | Eine Person, die an einem Bewerb teilnimmt. Spezialisierung einer Person mit pferdesportlichen Attributen (Lizenz, Startkarte). Im Code als Entität **`Reiter`** abgebildet. Datenquelle primär `LIZENZ01.DAT`. | ÖTO § 2 Abs. 11 |
|
||||
| **Satznummer** | *Pferd:* 10-stellige, rein numerische ID (`0000123456`). **Primärer Schlüssel für den Datenaustausch.** *Reiter:* 6-stellige, rein numerische ID. | ZNS-Schnittstelle |
|
||||
| **Serie** | Synonym für → *Cup*. Übergeordneter Wettbewerb, der Ergebnisse aus Bewerben bei **mindestens zwei Turnieren** aggregiert. Besitzt ein **eigenes Reglement** (siehe Abschnitt 4). | ÖTO § 2 Abs. 8 |
|
||||
| **Sparte** | Die unterschiedlichen Arten von Turnieren oder Bewerben (z.B. Dressur = CDN, Springen = CSN). Bestimmt das anzuwendende Richtverfahren und das Regelwerk. | ÖTO § 2 Abs. 9, § 3 Abs. 2 |
|
||||
| **Sperrliste** | Vom Verband geführte Liste von Personen oder Pferden, die aktuell nicht startberechtigt sind (meist wegen offener Zahlungen). | – |
|
||||
| **Sportförderbeitrag** | Gebühr, die **pro Start** anfällt (nicht pro Nennung!). Relevant bei Mehrfach-Starts. | ÖTO Gebührenordnung |
|
||||
| **Stammdaten** | (Früher: Akteur-Context). Die zentrale Library of Truth (`master-data-context`) für alle statischen Informationen: Personen, Pferde, Vereine, sowie das ÖTO-Regelwerk (Richtverfahren, Paragraphen, Gebührensätze). | – |
|
||||
| **Startkarte** | Nachweis, dass die Jahresgebühr für die Lizenz bezahlt wurde. Ohne aktive Startkarte ist national kein Start möglich. | ÖTO Teilnahmeberechtigung |
|
||||
| **Startwunsch** | Präferenz eines Reiters bezüglich seiner Position in der Startliste (vorne/hinten). | Registration Context |
|
||||
|
||||
### T
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|-----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|
|
||||
| **TBA** | Turnierbeauftragter. Hat bei Regelkonflikten immer das letzte Wort. Jede Überschreibung wird als → *Override-Event* gespeichert. | ÖTO § 24/§ 25 |
|
||||
| **TurnierArtikel** | Abrechenbare Leistung oder Produkt im Rahmen einer Veranstaltung (z.B. Ansage, Heu, Startgeld). Preis in Cent (Long). Typ: `"AUTOMATISCH"` (systemseitig erzeugt) oder `"MANUELL"` (manuell erfasst). Im Code als Entität **`TurnierArtikel`** (events-domain, Billing Context) abgebildet. | Billing Context |
|
||||
| **Tierwohl-Euro** | Gebühr, die **pro Start** anfällt (nicht pro Nennung!). | ÖTO Gebührenordnung |
|
||||
| **Turnier** | In unserer Software: Eine pferdesportliche Veranstaltung mit einer offiziellen **Ausschreibung** und einer vom OEPS/LFV vergebenen, eindeutigen **Turniernummer**. Entspricht ÖTO § 2 Abs. 2. Ist eine Spezialisierung von → *Veranstaltung*. | ÖTO § 2 Abs. 2, § 5, § 24 |
|
||||
| **Turniernummer** | Offizielle, vom OEPS vergebene **5-stellige** Kennung eines Turniers (z.B. `26128`). Sie ist eindeutig und Voraussetzung für die offizielle Ausschreibung. | ÖTO § 3, ZNS A-Satz |
|
||||
| **Teilnehmerkreis-Einschränkung** | Optionale Einschränkung des zulässigen Teilnehmerkreises eines Turniers gemäß ÖTO-Gliederung (§ 3), dargestellt über Zusatz-Buchstaben (z.B. `-H`, `-P`, `-J`). | ÖTO § 3 |
|
||||
| **Turnierkategorie** | Siehe → *Kategorie*. | ÖTO § 3 Abs. 4 |
|
||||
| **Turnierkassa** | Kassa auf Ebene des einzelnen → *Turniers*. Hält Belege, Tagesabschlüsse und Barbestände pro Turnier. Wird in der → *Veranstaltungs‑Kassa* konsolidiert. | Billing Context |
|
||||
| **TeilnehmerKonto** | Konto eines Zahlers auf Ebene der → *Veranstaltung* (nicht nur eines Turniers). Aggregiert Saldo, Einzahlungen und Verrechnungen über alle → *Turniere* derselben Veranstaltung hinweg (Multi‑Turnier‑Aggregation). Ermöglicht, dass eine einzelne Zahlung mehrere Rechnungen in verschiedenen Turnieren derselben Veranstaltung ausgleicht. | Billing Context |
|
||||
|
||||
### V
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------|
|
||||
| **Veranstaltung** | In unserer Software: Der Oberbegriff für jede Art von pferdesportlicher Veranstaltung, die von einem Verein durchgeführt wird. Erhält eine **intern vergebene ID**. Entspricht dem ÖTO-Oberbegriff „Pferdesportliche Veranstaltung" (§ 2 Abs. 1). Kann vom Typ Turnier, Reitertreffen, Sonderprüfung, PS&S oder Turnierartig sein. | ÖTO § 2 Abs. 1 |
|
||||
| **Veranstalter** | OEPS-Mitgliedsverein (über LFV angeschlossen), der eine Veranstaltung ausrichtet. Besitzt eine **Vereinsnummer**. Im Code als Entität **`Verein`** abgebildet. | ÖTO § 2 Abs. 12 |
|
||||
| **Veranstaltungs‑Kassa** | Kassen- und Abrechnungsführer auf Ebene der → *Veranstaltung*. Konsolidiert alle Zahlungen, Belege und Rückgelder über mehrere → *Turniere* derselben Veranstaltung. Dient als zentrale Sammelkasse; kann Zahlvorgänge turnierübergreifend splitten und konsolidieren. | Billing Context |
|
||||
|
||||
### Z
|
||||
|
||||
| Begriff | Definition | ÖTO-Referenz |
|
||||
|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|
|
||||
| **Zahlvorgang** | Eine einzelne Zahlungstransaktion (Bar, Karte, Überweisung), die einen Betrag einem → *TeilnehmerKonto* gutschreibt und dabei **eine Zahlung auf mehrere Rechnungen/Belege** aufteilen kann – auch turnierübergreifend innerhalb derselben → *Veranstaltung*. | Billing Context |
|
||||
| **ZNS** | Zentrales Nennsystem des OEPS. Datenaustausch-Format für Stammdaten (Reiter, Pferde) und Nennungen. Quelle der Wahrheit für Akteurs-Daten. | ZNS-Schnittstelle |
|
||||
|
||||
---
|
||||
|
||||
## 3. Bounded Contexts & Zuordnung
|
||||
|
||||
| Begriff | Primärer Bounded Context |
|
||||
|-------------------------------------------------------------------|-------------------------------|
|
||||
| Veranstaltung, Turnier, Ausschreibung, Veranstalter | `event-management-context` |
|
||||
| Bewerb, Abteilung, Startliste, Ergebnis, Richtverfahren | `competition-context` |
|
||||
| Nennung, Nennungs-Transfer, Startwunsch, ZNS-Import | `registration-context` |
|
||||
| Reiter, Pferd, Lizenz, Funktionär, Kopfnummer, Satznummer, Verein | `actor-context` |
|
||||
| Nenngeld, Startgeld, Konto, Transaktion, Sportförderbeitrag | `billing-context` |
|
||||
| Cup, Serie, Meisterschaft, Reglement, Endklassement | `series-context` *(Phase 2+)* |
|
||||
| Login, Rolle, Berechtigung | `identity-context` |
|
||||
|
||||
---
|
||||
|
||||
## 4. Meisterschaften, Cups & Serien – Eigene Reglements
|
||||
|
||||
> ⚠️ **Wichtiger Hinweis für zukünftige Entwicklungsphasen**
|
||||
|
||||
Jede Meisterschaft, jeder Cup und jede Serie besitzt ein **eigenes, individuelles Reglement**.
|
||||
Dieses Reglement ist **nicht** durch die ÖTO allein abgedeckt, sondern wird vom jeweiligen
|
||||
Veranstalter (LFV, OEPS-Referat, Verein) separat erlassen.
|
||||
|
||||
Ein Reglement definiert typischerweise:
|
||||
|
||||
| Abschnitt | Inhalt | Relevanter Context |
|
||||
|---------------------------------------|-------------------------------------------------------------------------------------------------------------|----------------------------------------------|
|
||||
| **Präambel & Geltungsbereich** | Name, Träger, Verweis auf ÖTO + Sonderbestimmungen des LFV | `series-context` |
|
||||
| **Teilnahmeberechtigung** | Lizenzklasse, Altersklasse, Vereinsmitgliedschaft, Pferdealter, Paar-Bindung (Reiter+Pferd oder nur Reiter) | `registration-context` (Filterlogik) |
|
||||
| **Qualifikation & Wertungsprüfungen** | Welche Turniere/Bewerbe zählen, Pflichtteilnahme vs. Mindestanzahl | `event-management-context` |
|
||||
| **Punktesystem & Berechnungsmodus** | Addition der Ergebnisse, Fixpunkte nach Platzierung, Faktoren (Finale 1,5-fach), Streichresultate | `competition-context` (Ergebnis-Aggregation) |
|
||||
| **Ex-aequo-Regelung** | Tiebreaker-Regeln bei Punktgleichheit | `competition-context` |
|
||||
| **Das Finale** | Teilnahmevoraussetzung (z.B. Top 15), Startreihenfolge (umgekehrter Zwischenstand) | `competition-context` |
|
||||
| **Preise & Ehrungen** | Titel, Ehrengaben, Preisgeld-Verteilungsschlüssel | `billing-context` |
|
||||
| **Proteste & Sonderfälle** | Einspruchsfristen, Regelung bei Turnierabsagen / Höherer Gewalt | `series-context` |
|
||||
|
||||
**Konsequenz für die Architektur:**
|
||||
|
||||
- Der `series-context` muss das Reglement als **konfigurierbare Entität** abbilden (kein Hard-Coding).
|
||||
- Verschiedene Cups/Serien können **unterschiedliche Punktesysteme** haben → das Berechnungsmodell muss pluggable sein.
|
||||
- Die **Paar-Bindung** (Punkte an Reiter+Pferd vs. nur Reiter) ist eine kritische Designentscheidung pro Reglement.
|
||||
- Referenz-Dokument: [
|
||||
`docs/03_Domain/02_Reference/OETO_Regelwerk/Struktur-Meisterschafts-Cup-Reglements_OETO.md`](../02_Reference/OETO_Regelwerk/Struktur-Meisterschafts-Cup-Reglements_OETO.md)
|
||||
|
||||
---
|
||||
|
||||
## 5. MVP-Scope (Phase 1) – In Scope / Out of Scope
|
||||
|
||||
| Begriff / Feature | Phase 1 | Begründung |
|
||||
|----------------------------------------|-------------|----------------------------------------------------|
|
||||
| Turnier (Typ = Turnier) | ✅ In Scope | Kern des Systems |
|
||||
| Kategorie C und C-NEU | ✅ In Scope | MVP-Entscheidung |
|
||||
| Sparten CDN (Dressur) + CSN (Springen) | ✅ In Scope | MVP-Entscheidung |
|
||||
| Reitertreffen, Sonderprüfung, PS&S | 🔜 Phase 2 | Architektur lässt es zu |
|
||||
| Cup / Serie / Meisterschaft | 🔜 Phase 2+ | Eigenes Reglement erforderlich (siehe Abschnitt 4) |
|
||||
| Kombination von Turnieren (§ 4) | 🔜 Phase 2 | Datenmodell ist vorbereitet |
|
||||
| Kategorie A, B (Meisterschaften) | 🔜 Phase 2+ | Nur auf A*/A erlaubt |
|
||||
|
||||
---
|
||||
|
||||
*Erstellt: 2026-03-24 | Autoren: Lead Architect, ÖTO/FEI Rulebook Expert, Curator*
|
||||
*Basiert auf: ÖTO 2026 § 2, § 3, § 4 | Domain Workshop 2026-03-17 | Session 2026-03-24 | Update: 2026-04-05 (Verein-Renaming & Bereinigung)*
|
||||
@@ -1,241 +0,0 @@
|
||||
-- Database Schema Draft for Meldestelle (Offline-First)
|
||||
-- Dialect: SQLite (compatible with SQLDelight)
|
||||
-- Status: Draft / Proposal
|
||||
-- Based on: OEPS Legacy Spec V2.4 & Domain Analysis
|
||||
|
||||
-- ==================================================================
|
||||
-- 1. CORE INFRASTRUCTURE (Sync & Audit)
|
||||
-- ==================================================================
|
||||
-- Every table should ideally have these fields, but for brevity
|
||||
-- they are implied or added where critical.
|
||||
-- id: TEXT NOT NULL PRIMARY KEY (UUID)
|
||||
-- created_at: INTEGER NOT NULL (Epoch Millis)
|
||||
-- updated_at: INTEGER NOT NULL (Epoch Millis)
|
||||
-- version: INTEGER NOT NULL (Optimistic Locking / Sync Counter)
|
||||
-- is_deleted: INTEGER NOT NULL DEFAULT 0 (Soft Delete)
|
||||
|
||||
-- ==================================================================
|
||||
-- 2. MASTER DATA (Stammdaten)
|
||||
-- ==================================================================
|
||||
|
||||
-- Akteure: Personen und Organisationen
|
||||
-- Covers: Reiter, Richter, Besitzer, Vereine
|
||||
CREATE TABLE actor (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
type TEXT NOT NULL, -- 'PERSON', 'ORGANIZATION'
|
||||
|
||||
-- Display Data
|
||||
first_name TEXT, -- NULL for Organizations
|
||||
last_name TEXT NOT NULL, -- Name or Org-Name
|
||||
|
||||
-- OEPS Specifics (Legacy Spec)
|
||||
oeps_id TEXT, -- 'Satznummer' (6 digits for Person, 4 for Club)
|
||||
oeps_category TEXT, -- 'Verein', 'Reiter', 'Richter'
|
||||
|
||||
-- Licenses & Status
|
||||
license_code TEXT, -- e.g. 'R1', 'RD3'
|
||||
has_start_card INTEGER NOT NULL DEFAULT 0, -- Boolean: Paid annual fee?
|
||||
is_locked INTEGER NOT NULL DEFAULT 0, -- Boolean: Sperrliste?
|
||||
|
||||
-- Contact & Meta
|
||||
nationality TEXT NOT NULL DEFAULT 'AUT', -- ISO 3-Letter
|
||||
contact_json TEXT, -- Address, Phone, Email
|
||||
|
||||
-- Sync Meta
|
||||
created_at INTEGER NOT NULL,
|
||||
updated_at INTEGER NOT NULL,
|
||||
version INTEGER NOT NULL DEFAULT 1
|
||||
);
|
||||
|
||||
CREATE INDEX idx_actor_oeps_id ON actor(oeps_id);
|
||||
CREATE INDEX idx_actor_name ON actor(last_name, first_name);
|
||||
|
||||
|
||||
-- Pferde
|
||||
CREATE TABLE horse (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
|
||||
-- Identification
|
||||
oeps_id TEXT, -- 'Satznummer' (10 digits) - CRITICAL for Export
|
||||
head_number_permanent TEXT, -- 'Kopfnummer' (e.g. A123)
|
||||
life_number TEXT, -- 'Lebensnummer' (Zucht)
|
||||
fei_id TEXT,
|
||||
|
||||
-- Details
|
||||
birth_year INTEGER,
|
||||
gender TEXT, -- 'M', 'W', 'G' (Gelding/Wallach)
|
||||
color TEXT,
|
||||
sire_name TEXT, -- Vater (Denormalized for search)
|
||||
dam_name TEXT, -- Mutter
|
||||
|
||||
-- Owner Link
|
||||
owner_id TEXT, -- FK to actor.id
|
||||
|
||||
-- Status
|
||||
is_locked INTEGER NOT NULL DEFAULT 0, -- Sperrliste
|
||||
|
||||
-- Sync Meta
|
||||
created_at INTEGER NOT NULL,
|
||||
updated_at INTEGER NOT NULL,
|
||||
version INTEGER NOT NULL DEFAULT 1
|
||||
);
|
||||
|
||||
CREATE INDEX idx_horse_oeps_id ON horse(oeps_id);
|
||||
CREATE INDEX idx_horse_head_num ON horse(head_number_permanent);
|
||||
CREATE INDEX idx_horse_name ON horse(name);
|
||||
|
||||
-- ==================================================================
|
||||
-- 3. EVENT STRUCTURE
|
||||
-- ==================================================================
|
||||
|
||||
CREATE TABLE event (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
start_date INTEGER NOT NULL, -- Epoch Day
|
||||
end_date INTEGER NOT NULL,
|
||||
location TEXT,
|
||||
organizer_id TEXT NOT NULL, -- FK to actor.id
|
||||
|
||||
status TEXT NOT NULL DEFAULT 'PLANNING' -- PLANNING, ACTIVE, ARCHIVED
|
||||
);
|
||||
|
||||
CREATE TABLE tournament (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
event_id TEXT NOT NULL REFERENCES event(id),
|
||||
|
||||
-- OEPS Spec
|
||||
oeps_number TEXT NOT NULL, -- 5 digits (e.g. 21001)
|
||||
category TEXT, -- e.g. 'CSN-A'
|
||||
ruleset TEXT NOT NULL DEFAULT 'OETO', -- 'OETO', 'FEI'
|
||||
|
||||
-- Sync Meta
|
||||
updated_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
-- Bewerbe (Competitions)
|
||||
-- Note: If a competition is split into 2 departments (Abteilungen),
|
||||
-- we create 2 rows here to match the OEPS 'B-Satz' logic.
|
||||
CREATE TABLE competition (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
tournament_id TEXT NOT NULL REFERENCES tournament(id),
|
||||
|
||||
-- Identification
|
||||
code_internal TEXT NOT NULL, -- '01', '02' (2 digits)
|
||||
code_official TEXT, -- '001' (3 digits, optional)
|
||||
division_id INTEGER NOT NULL DEFAULT 0, -- 'Abteilung' (0=None, 1=1st, 2=2nd)
|
||||
|
||||
-- Description
|
||||
title TEXT NOT NULL,
|
||||
category TEXT, -- e.g. 'LM', 'S*'
|
||||
discipline TEXT NOT NULL, -- 'D', 'S', 'C' (Dressage, Jumping, Combined)
|
||||
|
||||
-- Rules & Scoring
|
||||
scoring_method TEXT NOT NULL, -- 'A0', 'C', 'DRESSAGE_PERCENT'
|
||||
start_fee INTEGER NOT NULL DEFAULT 0, -- In Cents
|
||||
|
||||
-- State
|
||||
status TEXT NOT NULL DEFAULT 'OPEN', -- OPEN, CLOSED_FOR_ENTRIES, RUNNING, FINISHED, SIGNED_OFF
|
||||
|
||||
-- Sync Meta
|
||||
updated_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_comp_tournament ON competition(tournament_id);
|
||||
|
||||
-- ==================================================================
|
||||
-- 4. SPORT & PROCESS
|
||||
-- ==================================================================
|
||||
|
||||
-- Nennungen (Entries)
|
||||
-- Represents the intent to start.
|
||||
CREATE TABLE entry (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
competition_id TEXT NOT NULL REFERENCES competition(id),
|
||||
|
||||
-- The Pair
|
||||
horse_id TEXT NOT NULL REFERENCES horse(id),
|
||||
rider_id TEXT NOT NULL REFERENCES actor(id),
|
||||
|
||||
-- Financials
|
||||
responsible_person_id TEXT REFERENCES actor(id), -- Who pays?
|
||||
fee_agreed INTEGER NOT NULL, -- In Cents (Snapshot of price at entry time)
|
||||
payment_status TEXT NOT NULL DEFAULT 'PENDING', -- PENDING, PAID, WAIVED
|
||||
|
||||
-- Validation Override (The "Human Factor")
|
||||
validation_status TEXT NOT NULL DEFAULT 'OK', -- OK, WARNING, BLOCKED
|
||||
override_comment TEXT, -- Why was this allowed despite warning?
|
||||
|
||||
-- Sync Meta
|
||||
created_at INTEGER NOT NULL,
|
||||
updated_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_entry_comp ON entry(competition_id);
|
||||
CREATE INDEX idx_entry_rider ON entry(rider_id);
|
||||
|
||||
-- Startliste (Start Order)
|
||||
-- Subset of entries that actually start.
|
||||
CREATE TABLE start_list_entry (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
entry_id TEXT NOT NULL REFERENCES entry(id),
|
||||
|
||||
-- Ordering
|
||||
start_order INTEGER, -- 1, 2, 3...
|
||||
start_time_planned INTEGER, -- Epoch Millis (optional)
|
||||
|
||||
-- Tournament Specifics
|
||||
head_number_event TEXT, -- Startnummer am Turnier (kann von A123 abweichen)
|
||||
|
||||
-- Status
|
||||
status TEXT NOT NULL DEFAULT 'READY', -- READY, STARTED, DNS (Did Not Start)
|
||||
|
||||
UNIQUE(entry_id)
|
||||
);
|
||||
|
||||
-- Ergebnisse (Results)
|
||||
CREATE TABLE result (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
start_list_entry_id TEXT NOT NULL REFERENCES start_list_entry(id),
|
||||
|
||||
-- The Outcome
|
||||
rank INTEGER, -- 1, 2, 3... (NULL if eliminated)
|
||||
|
||||
-- Scoring Details (Polymorphic based on Competition Type)
|
||||
points_jump_faults DECIMAL(5,2), -- Springfehler
|
||||
time_taken_ms INTEGER, -- Zeit in Millisekunden
|
||||
score_dressage_percent DECIMAL(5,3), -- 72.500
|
||||
score_dressage_total DECIMAL(6,2), -- Summe Punkte
|
||||
|
||||
-- Status Flags
|
||||
classification TEXT NOT NULL DEFAULT 'OK', -- OK, EL (Elim), RET (Retired), DIS (Disq)
|
||||
|
||||
-- Detailed Marks (JSON)
|
||||
-- e.g. { "judge_C": 7.5, "judge_H": 7.2, "obstacles": [...] }
|
||||
details_json TEXT,
|
||||
|
||||
-- Money
|
||||
prize_money INTEGER DEFAULT 0, -- In Cents
|
||||
|
||||
-- Audit
|
||||
updated_by_user_id TEXT,
|
||||
updated_at INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX idx_result_starter ON result(start_list_entry_id);
|
||||
|
||||
-- ==================================================================
|
||||
-- 5. AUDIT LOG (NFR-07)
|
||||
-- ==================================================================
|
||||
|
||||
CREATE TABLE audit_log (
|
||||
id TEXT NOT NULL PRIMARY KEY,
|
||||
entity_type TEXT NOT NULL, -- 'RESULT', 'ENTRY'
|
||||
entity_id TEXT NOT NULL,
|
||||
action TEXT NOT NULL, -- 'CREATE', 'UPDATE', 'DELETE'
|
||||
|
||||
user_id TEXT,
|
||||
timestamp INTEGER NOT NULL,
|
||||
|
||||
changes_json TEXT -- { "score_old": 7.0, "score_new": 7.5 }
|
||||
);
|
||||
@@ -1,36 +0,0 @@
|
||||
# ToDo-Liste: Domain Workshop (Kick-off)
|
||||
|
||||
**Datum:** Heute Abend
|
||||
**Teilnehmer:** Owner (Fachexperte), 🏗️ [Lead Architect], 📜 [ÖTO/FEI Rulebook Expert]
|
||||
|
||||
## Ziel des Abends
|
||||
|
||||
Start der fachlichen Klärung (Phase 3). Definition des ersten Kernprozesses, um die Basis für die Feature-Entwicklung zu
|
||||
schaffen.
|
||||
|
||||
## Agenda & ToDos
|
||||
|
||||
### 1. Auswahl des Einstiegs-Themas
|
||||
|
||||
*Entscheidung treffen, mit welchem Bounded Context wir starten:*
|
||||
|
||||
- [ ] **Option A: Stammdaten & Akteure**
|
||||
*Was definiert ein Pferd, einen Reiter, einen Verein? (Fokus auf OEPS-IDs, Lizenzen, Startkarten).*
|
||||
- [ ] **Option B: Turnier- & Bewerbsstruktur**
|
||||
*Wie ist ein Turnier aufgebaut? (Kategorien, Bewerbe, Abteilungen, Richtverfahren).*
|
||||
- [ ] **Option C: Der Nennungsprozess**
|
||||
*Der Kern-Workflow: Wie meldet ein Reiter ein Pferd an? Welche Validierungen (Sperrlisten, Lizenzen) greifen hier?*
|
||||
|
||||
### 2. Durchführung des Workshops (am gewählten Thema)
|
||||
|
||||
- [ ] **Prozess-Skizzierung:** Der Owner beschreibt den fachlichen Ablauf aus der Praxis.
|
||||
- [ ] **Regel-Check:** Der 📜 *[ÖTO/FEI Rulebook Expert]* prüft den skizzierten Ablauf live gegen das hinterlegte
|
||||
ÖTO-2026-Regelwerk und weist auf Edge-Cases hin.
|
||||
- [ ] **Modellierung:** Der 🏗️ *[Lead Architect]* leitet daraus die ersten Entwürfe für Aggregates und Entitäten ab.
|
||||
|
||||
### 3. Abschluss & Übergabe
|
||||
|
||||
- [ ] **Festhalten der Ergebnisse:** Dokumentation der getroffenen Definitionen im Ordner
|
||||
`docs/03_Domain/01_Core_Model/`.
|
||||
- [ ] **Übergabe an QA & UX:** Auftrag an den *QA Specialist* (für Gherkin-Szenarien) und den *UI/UX Designer* (für
|
||||
Wireframes) basierend auf den Ergebnissen des Abends erteilen.
|
||||
@@ -1,102 +0,0 @@
|
||||
# Ergebnisse Domain Workshop (17.03.2026)
|
||||
|
||||
**Teilnehmer:** Owner, 🏗️ [Lead Architect], 📜 [ÖTO/FEI Rulebook Expert], 👷 [Backend Developer], 🎨 [Frontend Expert],
|
||||
🖌️ [UI/UX Designer]
|
||||
|
||||
## 📜 [ÖTO/FEI Rulebook Expert] - Erkenntnisse
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
## 👷 [Backend Developer] - Erkenntnisse
|
||||
|
||||
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).
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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] - Erkenntnisse
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
@@ -1,80 +0,0 @@
|
||||
---
|
||||
type: Reference
|
||||
status: ACTIVE
|
||||
owner: Lead Architect
|
||||
---
|
||||
# Analyse der Legacy-Spezifikation (OEPS Pflichtenheft 2021 V2.4)
|
||||
|
||||
* **Datum:** 2026-01-14
|
||||
* **Quelle:** `docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Pflichtenheft_V2.4_2021-07-28.md`
|
||||
* **Status:** Draft
|
||||
|
||||
## 1. Zusammenfassung
|
||||
|
||||
Das Pflichtenheft definiert das Datenaustauschformat zwischen Meldestellen-Software und dem OEPS (Österreichischer Pferdesportverband). Es ist die **maßgebliche technische Referenz** für nationale Turniere in Österreich. Die Einhaltung dieser Spezifikation ist zwingend erforderlich, um Ergebnisse an den Verband zu melden.
|
||||
|
||||
## 2. Kritische Datenfelder & Identifikatoren
|
||||
|
||||
Die Analyse zeigt, dass das aktuelle `Core_Model` (`Overview.md`) zu generisch ist. Für den operativen Betrieb fehlen essenzielle Identifikatoren.
|
||||
|
||||
### 2.1. Identifikation von Personen & Pferden
|
||||
Das System verlässt sich nicht primär auf Namen, sondern auf **Satznummern**.
|
||||
|
||||
* **Pferd:**
|
||||
* `Satznummer` (10-stellig, numerisch): Der primäre Key im OEPS-System. Muss zwingend persistiert und exportiert werden.
|
||||
* `Kopfnummer` (4-stellig, alphanumerisch):
|
||||
* National: Die permanente Registrierungsnummer beim OEPS.
|
||||
* International: Eine turnierspezifische Startnummer.
|
||||
* `Lebensnummer` (9-stellig): Zuchtnummer. Achtung: Bei ausländischen Pferden oft generiert/fiktiv -> Nicht zur Suche geeignet!
|
||||
* `FEI-Pass` vs. `FEI-ID`: Zwei getrennte Felder!
|
||||
|
||||
* **Reiter:**
|
||||
* `Satznummer` (6-stellig, numerisch): Der primäre Key.
|
||||
* `Lizenz` (z.B. "RD1", "R1"): Bestimmt die Startberechtigung in Klassen.
|
||||
* `Startkarte`: Flag, ob die Jahresgebühr bezahlt wurde. Ohne Startkarte keine Startberechtigung (außer Gastlizenzen).
|
||||
|
||||
### 2.2. Turnier & Bewerbsstruktur
|
||||
Die Struktur ist starrer als im aktuellen Modell angenommen.
|
||||
|
||||
* **Turniernummer:** 5-stellig.
|
||||
* **Bewerbe:**
|
||||
* Haben eine 2-stellige Nummer (intern) UND eine 3-stellige Nummer (für Turniere > 99 Bewerbe).
|
||||
* **Abteilungen:** Ein Bewerb kann in Abteilungen (Abt. 1, Abt. 2...) unterteilt sein. Dies ist keine rein organisatorische Trennung, sondern datentechnisch relevant (Feld `ABTEILUNG`).
|
||||
|
||||
## 3. Implizite Geschäftsregeln
|
||||
|
||||
Aus den Datenfeldern lassen sich harte Business Rules ableiten:
|
||||
|
||||
1. **Startberechtigung (Sperrliste):** Es gibt ein Flag `SPERRLISTE`. Wenn gesetzt, muss das System warnen/blockieren. Grund oft: Offene Forderungen.
|
||||
2. **Nation-Logik (Gast vs. Inländer):**
|
||||
* Ausländer mit österr. Lizenz + bezahlter Startkarte -> Startet für österr. Verein -> Nation im Ergebnis = "AUT".
|
||||
* Ausländer ohne Mitgliedschaft -> Gastreiter -> Nation = Staatsbürgerschaft (z.B. "GER").
|
||||
* *Konsequenz:* Die "Nation" eines Starts ist kontextabhängig und nicht rein statisch am Reiter hängend.
|
||||
3. **Pferde-Status:** Pferde, für die >3 Jahre keine Gebühr bezahlt wurde, gelten als "nicht registriert" -> Neuanlage erforderlich.
|
||||
|
||||
## 4. Lücken im aktuellen Modell (Gap Analysis)
|
||||
|
||||
| Entität | Fehlendes Attribut / Konzept | Dringlichkeit |
|
||||
| :--- | :--- | :--- |
|
||||
| **Pferd** | `Satznummer` (OEPS-ID) | **Hoch** (Sync unmöglich ohne dies) |
|
||||
| **Pferd** | Unterscheidung `Kopfnummer` (Permanent) vs. `Startnummer` (Turnier) | Mittel |
|
||||
| **Akteur** | `Satznummer` (OEPS-ID) | **Hoch** |
|
||||
| **Akteur** | `Startkarte` (Status) | Hoch (Validierung) |
|
||||
| **Bewerb** | `Abteilung` (Sub-Struktur) | Mittel |
|
||||
| **Ergebnis** | `Ausschluss-Typ` (Disqualifikation, Aufgabe, Ausschluss) | Mittel |
|
||||
| **Ergebnis** | `Geldpreis` (Formatierung, Währung ist implizit EUR) | Niedrig |
|
||||
|
||||
## 5. Empfehlung für das Datenmodell
|
||||
|
||||
Wir müssen die Entität `Akteur` in spezifische Rollen-Modelle ausdifferenzieren oder per Composition erweitern, da die Attribute für Reiter (Lizenz, Startkarte) für andere Akteure (Richter, Besitzer) irrelevant oder anders sind.
|
||||
|
||||
**Vorschlag:**
|
||||
* `Akteur` bleibt Basis (Name, Kontakt).
|
||||
* `ReiterProfile` (Value Object / 1:1 Relation): Enthält `Satznummer`, `Lizenz`, `Startkarte`, `Sperrvermerk`.
|
||||
* `Pferd` erhält `OEPS_Daten` (Value Object): `Satznummer`, `Kopfnummer`, `Lebensnummer`.
|
||||
|
||||
## 6. Offene Fragen an den PO
|
||||
|
||||
1. Wie gehen wir mit **internationalen Turnieren** (FEI) um? Das Pflichtenheft deutet an, dass auch hier OEPS-Formate genutzt werden ("Version 2.4 für internationale Bewerbe"), aber die FEI hat eigene Formate. Welches ist führend?
|
||||
2. Soll das System den **Import** der `zns.zip` (Stammdaten) unterstützen? Das wäre essenziell für den Offline-Betrieb.
|
||||
3. Wie strikt soll die **Validierung** sein? Soll das System eine Nennung *verhindern*, wenn die Startkarte fehlt, oder nur *warnen*? (Realität: Oft wird vor Ort nachgezahlt).
|
||||
@@ -1,85 +0,0 @@
|
||||
---
|
||||
type: ADR
|
||||
status: DRAFT
|
||||
owner: Lead Architect
|
||||
---
|
||||
# Non-Functional Requirements (NFRs) - Phase 1
|
||||
|
||||
* **Status:** Draft
|
||||
* **Fokus:** Offline-First Architektur, Robustheit, Datenintegrität
|
||||
|
||||
---
|
||||
|
||||
## 1. Offline-Fähigkeit & Resilienz (Availability)
|
||||
|
||||
Das System muss in einer Umgebung funktionieren, in der Netzwerkverbindungen unzuverlässig oder nicht vorhanden sind (Reitställe, ländliche Gebiete).
|
||||
|
||||
* **NFR-01: Local-First Prinzip**
|
||||
* Alle Kernfunktionen (Nennung, Startlistenerstellung, Ergebniserfassung, Drucken) müssen **zu 100% ohne Netzwerkverbindung** ausführbar sein.
|
||||
* Die lokale Datenbank (SQLite/SQLDelight) ist die primäre Datenquelle für das UI.
|
||||
* Der Server dient lediglich als Synchronisations-Hub und Backup, nicht als Laufzeit-Abhängigkeit.
|
||||
|
||||
* **NFR-02: Synchronisation & Konfliktlösung**
|
||||
* Sobald eine Verbindung besteht, müssen Daten im Hintergrund synchronisiert werden.
|
||||
* **Konfliktstrategie:** Bei konkurrierenden Änderungen (z.B. zwei Richter ändern dasselbe Ergebnis) muss das System:
|
||||
1. Technische Konflikte automatisch lösen (z.B. "Last Write Wins" basierend auf präzisen Zeitstempeln).
|
||||
2. Fachliche Konflikte protokollieren und zur manuellen Klärung markieren.
|
||||
|
||||
* **NFR-03: Wiederherstellung (Disaster Recovery)**
|
||||
* Nach einem Absturz oder Stromausfall muss das System innerhalb von **< 30 Sekunden** wieder betriebsbereit sein.
|
||||
* Kein Datenverlust von bereits bestätigten Eingaben (ACID-Transaktionen lokal).
|
||||
|
||||
---
|
||||
|
||||
## 2. Performance & Latenz (Usability)
|
||||
|
||||
Im Turnierbetrieb herrscht Zeitdruck. Wartezeiten summieren sich und führen zu Stress bei den Anwendern.
|
||||
|
||||
* **NFR-04: Optimistic UI Updates**
|
||||
* Benutzeraktionen (z.B. Speichern einer Note) müssen im UI **sofort (< 50ms)** bestätigt werden, ohne auf Netzwerk-Roundtrips oder Datenbank-Commits zu warten (Asynchrone Verarbeitung).
|
||||
|
||||
* **NFR-05: Such-Performance**
|
||||
* Die Suche nach Pferden (in > 50.000 Stammdaten) oder Reitern muss **< 200ms** dauern (Full-Text-Search Indexierung lokal).
|
||||
* Dies gilt auch auf leistungsschwächerer Hardware (ältere Laptops, Tablets).
|
||||
|
||||
* **NFR-06: Massendaten-Verarbeitung**
|
||||
* Der Import der `zns.zip` (Stammdaten) darf den UI-Thread nicht blockieren und sollte **< 5 Minuten** dauern.
|
||||
|
||||
---
|
||||
|
||||
## 3. Datenintegrität & Audit (Compliance)
|
||||
|
||||
Ergebnisse entscheiden über Qualifikationen und Preisgelder. Manipulationen oder versehentliche Änderungen müssen nachvollziehbar sein.
|
||||
|
||||
* **NFR-07: Audit Trail**
|
||||
* Jede Änderung an einem Ergebnis (Score, Zeit, Platzierung) muss unveränderbar protokolliert werden.
|
||||
* Inhalt: `Timestamp`, `User-ID`, `Old-Value`, `New-Value`, `Reason` (optional).
|
||||
* Der Audit-Log muss mit synchronisiert werden.
|
||||
|
||||
* **NFR-08: Validierungs-Hierarchie**
|
||||
* Das System muss zwischen "Hard Constraints" (Datenbank-Integrität, z.B. Foreign Keys) und "Soft Constraints" (Fachliche Regeln, z.B. fehlende Startkarte) unterscheiden.
|
||||
* Soft Constraints dürfen den Prozess nicht blockieren, müssen aber persistente Warnungen erzeugen ("Override"-Flag).
|
||||
|
||||
---
|
||||
|
||||
## 4. Sicherheit (Security)
|
||||
|
||||
* **NFR-09: Lokale Datensicherheit**
|
||||
* Da Laptops/Tablets gestohlen werden können: Sensible Daten (Personendaten, Adressen) sollten "At Rest" verschlüsselt sein (z.B. SQLCipher), sofern die Performance (NFR-05) nicht kritisch beeinträchtigt wird.
|
||||
* Minimalanforderung: Keine Speicherung von Passwörtern im Klartext.
|
||||
|
||||
* **NFR-10: Rollenbasierter Zugriff (RBAC)**
|
||||
* Unterscheidung der Berechtigungen im UI:
|
||||
* *Richter:* Darf nur Ergebnisse für zugewiesene Bewerbe eingeben.
|
||||
* *Meldestelle:* Vollzugriff.
|
||||
* *Zuschauer (Kiosk-Mode):* Nur Lesezugriff auf Starter-/Ergebnislisten.
|
||||
|
||||
---
|
||||
|
||||
## 5. Hardware & Umgebung
|
||||
|
||||
* **NFR-11: Eingabe-Effizienz**
|
||||
* Die Ergebniserfassung muss "Keyboard-First" bedienbar sein (Nummernblock-Optimierung). Maus/Touch ist für Massenerfassung zu langsam.
|
||||
|
||||
* **NFR-12: Druck-Unterstützung**
|
||||
* Unterstützung von lokalen Druckern (USB/Netzwerk) ohne komplexe Treiber-Installation, da Listen (Starterlisten, Ergebnisse) physisch ausgehängt werden müssen (Pflicht laut Reglement).
|
||||
@@ -1,697 +0,0 @@
|
||||
---
|
||||
type: Reference
|
||||
status: ACTIVE
|
||||
owner: Lead Architect
|
||||
---
|
||||
# Anekdote Meldestelle
|
||||
|
||||
Ich bin diesmal die Meldestelle für ein kleines Turnier, z.B. ein "CDN-C Neu" bzw. "CSN-C Neu" am "Musterhof".
|
||||
|
||||
Sagen wir in der Ausschreibung stand "Meldestelle geöffnet ab 15 Uhr", das Turnier findet Samstag und Sonntag statt.
|
||||
|
||||
Also, am Freitag mache ich mich auf den Weg zum Turnier, aus Erfahrung achte ich darauf, dass ich mehr als rechtzeitig am Turniergelände eintreffe.
|
||||
|
||||
Meistens bin ich schon ca. 2-3 Stunden vor der offiziellen Öffnungszeit vor Ort.
|
||||
|
||||
Also treffe ich ca. 12 Uhr am Turniergelände ein.
|
||||
|
||||
"Hallo? Ist hier jemand?"
|
||||
|
||||
Ich mache mich auf die Suche nach den Verantwortlichen, oder irgendjemanden, der mir sagen kann, wo ich meine "Meldestelle" aufbauen kann.
|
||||
|
||||
Da ein ein Stallbursche, er spricht kaum deutsch und kein englisch, aber mit Händen und Füßen haben wir uns dann doch noch verständigen können und er weis jetzt, wonach ich suche.
|
||||
|
||||
Leider hat er auch keine Ahnung wo ich meine "Meldestelle" aufbauen kann.
|
||||
|
||||
Jetzt machen wir uns zu zweit auf die Suche nach einer Person, die mir weiterhelfen kann.
|
||||
|
||||
Endlich, nach einer gefühlten Stunde auf der Suche, haben wir ein Vereinsmitglied gefunden, das mir sagen kann, wo ich meine "Meldestelle" aufbauen kann.
|
||||
|
||||
Echt, jetzt?
|
||||
|
||||
Im letzten Winkel vom Turniergelände in einem schäbigen alten Holzhäuschen, das so aussieht und die Größe ist wie ein "Plumpsklo" auf einer Alm-Hütte.
|
||||
|
||||
Naja, zumindest habe ich so was Ähnliches wie einen Schreibtisch und einen Klappsessel.
|
||||
|
||||
Ich: "Karin, könnte ich vielleicht noch Strom haben?"
|
||||
|
||||
Karin ist das Vereinsmitglied, sie ist in dem Verein die "Kassenführerin".
|
||||
|
||||
Karin: "Ah, ja, muss nur schauen woher. Ich kümmere mich darum."
|
||||
|
||||
Ich: "Danke, dass wäre sehr hilfreich"
|
||||
|
||||
Okay, Karin ist auf der Suche nach dem Strom.
|
||||
|
||||
Zum Glück habe ich meine keine USV mitgenommen, damit ich zumindest kleine Stromausfälle kompensieren kann.
|
||||
|
||||
Das "Plumpsklo" ist noch staubig, also reinige ich ein wenig, bevor ich meinen Laptop aufstellen kann.
|
||||
|
||||
Es ist mittlerweile schon 14 Uhr.
|
||||
|
||||
Hmmm, wie soll ich jetzt ein Netzwerk aufbauen zum Richterturm?
|
||||
|
||||
Was habe ich mit als Meldestelle:
|
||||
|
||||
\- einen Internet-Würfel von A1
|
||||
|
||||
\- 3x Laptops Meldestelle Rechenstelle und Richter (bei kleinen Turnieren ist nur gemeinsames Richten, bei Springturnieren klopft der Zeitnehmer die Ergebnisse ein)
|
||||
|
||||
\- 2x Switches
|
||||
|
||||
\- 2x 50m Outdoor-Netzwerk-Kabeln
|
||||
|
||||
\- 2x WLAN-Outdoor Access-Point von tplin CPE210 Sender Empfänger
|
||||
|
||||
\- einige 1-2 m Netzwerk-Kabeln
|
||||
|
||||
\- einen Laserdrucker-SW \+ Papier
|
||||
|
||||
\- 1x USV EATON 3S700D für die Meldestelle
|
||||
|
||||
Geht sich das noch aus, bevor ich die Meldestelle offiziell öffnen muss?
|
||||
|
||||
Schauen wir mal, wo der Richter-Turm ist.
|
||||
|
||||
War ja klar, der Austragungsplatz ist genau hinter dem Stallgebäude und die Reithalle genau am anderen Ende des Geländes.
|
||||
|
||||
Wo kann ich meine Accesspoints montieren, ohne im Weg zu sein mit dem Kabel?
|
||||
|
||||
Während ich so am Gelände herumlaufe und mir Gedanken mache, wie ich das Netzwerk aufbauen kann, läuft mir ein Reiter entgegen.
|
||||
|
||||
"Hallo, du\! Bist du die Meldestelle?"
|
||||
|
||||
Ich: "Ja, servus"
|
||||
|
||||
Reiterin: "Kann ich schon Nennen?"
|
||||
|
||||
Ich: "Ja sicher, im Internet. Brauchst nur den Link zum Online-Nennen anklicken."
|
||||
|
||||
Reiterin: "Kann ich es nicht gleich persönlich bei dir machen? Ich habe kein Download-Guthaben mehr und das Internet funktioniert hier nicht wirklich"
|
||||
|
||||
Ich: "Okay, komm mit, ich muss nur noch den Computer hochfahren"
|
||||
|
||||
Reiterin: "Super, danke"
|
||||
|
||||
Bei meinem "Plumpsklo".
|
||||
|
||||
Ich schalte den Computer ein, natürlich noch im Akku-Betrieb, denn Strom habe ich noch immer nicht.
|
||||
|
||||
Ich: "Okay, kann los gehen. Kopfnummer bitte?"
|
||||
|
||||
Reiterin: "Kopfnummer? Die habe ich nicht."
|
||||
|
||||
Ich: "Okay, welchen Bewerb möchtest du denn gehen?"
|
||||
|
||||
Reiterin: "Reiternadel"
|
||||
|
||||
Ich: "Ah, okay. Für diesen Bewerb muss das Pferd nicht registriert sein. Wie ist denn der Name des Pferdes?"
|
||||
|
||||
Reiterin: "Also, wir nennen Ihn immer nur Hansi, aber ob das sein richtiger Name ist weis ich nicht"
|
||||
|
||||
Ich: "Okay, weißt du was? Ich nenne dich jetzt einmal in den Bewerb mit dem Pferd Hansi und du fragst einmal nach, wie er wirklich heißt, okay?"
|
||||
|
||||
Reiterin: "Super, danke"
|
||||
|
||||
Ich lege ein neues Pferd an mit dem Namen "Hansi", sonst habe ich keine Infos.
|
||||
|
||||
Das Programm erstellt mir eine selbst generierte Kopfnummer aus z.B: "C001" und dann fortlaufend für alle neu erstellten Pferde, die nicht Turnierpferde registriert sind und nur für Bewerbe, die keine erfordern.
|
||||
|
||||
So, jetzt habe ich ein Pferd namens Hansi mit der Kopfnummer C001 im System.
|
||||
|
||||
Ich: "Wie ist dein Name?"
|
||||
|
||||
Reiterin: "Ich? Susi Jur..."
|
||||
|
||||
Ich: "Okay, tut mir leid, ich habe deinen Nachnamen nicht ganz verstanden. Kannst du mir deinen Nachnamen bitte noch einmal wiederholen?"
|
||||
|
||||
Reiterin: "Juritschenkowz"
|
||||
|
||||
Ich: "Juri.. wie weiter? Kannst du mir deinen Namen bitte Buchstabieren?"
|
||||
|
||||
Reiterin: "J U R I T sch"
|
||||
|
||||
Ich: "das "sch" Siegfried Cäsar Heinrich ? Oder schreibt man es anders?"
|
||||
|
||||
Reiterin: "Ich heiße nicht Siegfried." Ich heiße Susi"
|
||||
|
||||
Ich: "Bist du bitte so freundlich und kannst mir hier deinen kompletten Namen aufschreiben, ich glaube, somit tun wir uns am leichtesten."
|
||||
|
||||
Reiterin: "Okay, wars das jetzt, oder muss ich noch etwas tun?"
|
||||
|
||||
Ich: "Nein, alles okay. Du kannst dann heute Abend so gegen 20 Uhr die Startlisten aus www.XXX.at abrufen, okay?"
|
||||
|
||||
Reiterin: "So spät?"
|
||||
|
||||
Ich: "Ja, ich habe noch einen langen Tag"
|
||||
|
||||
Reiterin: "Danke, bis morgen"
|
||||
|
||||
Susi geht zufrieden weiter, ich suche nach ihrem Namen im System.
|
||||
|
||||
Fehlanzeige, keine Juri... in den ZNS-Daten, also lege ich die Reiterin einmal so an, wenn Sie wieder kommt werde ich hoffentlich die Daten vervollständigen können, denn mit diesem Ergebnis vom Turnier könnte Sie auch die Reiter-Lizenz erreiten. Voraussetzung natürlich, dass die Daten vollständig und korrekt sind, gilt übrigens auch für Reiter aus Deutschland, dass diese Ergebnisse in Ihrem Verband anerkannt werden.
|
||||
|
||||
Okay, 14:30 Uhr
|
||||
|
||||
Na super, Netzwerk habe ich noch nicht aufgebaut und Zeit dafür habe ich auch keine mehr dafür.
|
||||
|
||||
Meldestellen-Handy, stimmt die Nummer in der Ausschreibung mit dem Handy überhaupt überein?
|
||||
|
||||
Probe: 0664 12 12 123
|
||||
|
||||
Ja, Akku ist voll, ich bin mit Handy und Laptop bereit.
|
||||
|
||||
Karin taucht auf.
|
||||
|
||||
Karin: "Ich hab deinen Strom\!"
|
||||
|
||||
Ich: "Super"
|
||||
|
||||
Karin: "Brauchst du noch was?"
|
||||
|
||||
Ich: "Vielleicht einen Kaffee?"
|
||||
|
||||
Karin: "Muss ich schauen ob wir schon einen haben"
|
||||
|
||||
Ich: "Dass, wäre echt toll"
|
||||
|
||||
Was will man mehr?
|
||||
|
||||
Frische Luft im Plumpsklo neben dem Misthaufen, Strom, aja, habe ich überhaupt Internet?
|
||||
|
||||
Mal schauen, okay bisschen, speed-test download gerade einmal 10MB/s
|
||||
|
||||
Handyempfang schlecht, aber vorhanden.
|
||||
|
||||
ca. 14:40 Uhr
|
||||
|
||||
Ring ring Meldestellen Händy läutet
|
||||
|
||||
Ich: "Meldestelle, Musterhof Guten Tag"
|
||||
|
||||
Anrufer: "Ah, bist es nicht du Matthias?"
|
||||
|
||||
Ich: "Nein, ich bin es Mo dieses Wochenende mach ich die Meldestelle am Musterhof"
|
||||
|
||||
Anrufer: "Ah, okay. Tragst du mich mit meinen Pferden in die A's und L's ein?"
|
||||
|
||||
Ich: "Ah, du bist es, Petra hab dich nicht gleich erkannt. Der Empfang hier ist ziemlich schlecht. Welche Pferde hast du denn mit?"
|
||||
|
||||
Petra: "Tschuldigung, servus Mo\! Ja, ich habe Seppi, Weißdorn und die Obora mit. Weißt eh welche Reihenfolge”
|
||||
Ich: “Ich glaube, das werde ich schon schaffen”
|
||||
Petra: “Danke, bist später\!”
|
||||
|
||||
Okay, Petra, wie war noch Ihr Nachnahme Sie hat ja vor kurzen geheiratet. Aja, Sie heist jetzt Musterfrau.
|
||||
Seppi, den kenne ich, aber wie war noch der Turniername? Sebastian, ja da habe ich Ihn ja, “Sebastian Von Seebenstein” A357, das ist der junge mit dem will Sie sicher nur die A-Bewerbe gehen.
|
||||
Weißdorn, da haben wir Sie ja “Weißdorn by Gewizda” 8936, in die L-Bewerbe.
|
||||
Und dann noch “Tuchlaub by Oboras” 9056, ebenfalls in die L-Bewerbe.
|
||||
Erledigt.
|
||||
|
||||
Ring ring …
|
||||
|
||||
Das geht jetzt sicher 1-2 Stunden so weiter.
|
||||
|
||||
17:30 Uhr
|
||||
|
||||
Mal schauen wie viele Starter wir schon habe, okay für das “CSN-C Neu” haben wir schon 150 Starter. Für das kleine Turnier gar nicht schlecht.
|
||||
Dressur sieht noch etwas mager aus, mit derzeit nur 23 Startern.
|
||||
Naja, was will man machen, ist halt so.
|
||||
|
||||
Zeitplan?
|
||||
Ist der Parcoursbauer schon da? Der Markus ist doch normalerweise immer früher da, um den Parcours für den ersten Bewerb aufzustellen.
|
||||
|
||||
Karin, läuft wieder bei mir vorbei.
|
||||
Ich: “Karin\! Hast du vielleicht schon den Markus gesehen?”
|
||||
Karin: “Markus wer?”
|
||||
Ich: “Der Parcoursbauer”
|
||||
Karin: “Acht, den meinst du. Nein, er hat angerufen und hat gemeint, er kommt morgen gleich ganz in der Früh.”
|
||||
Ich: “Danke\!”
|
||||
|
||||
Wieder typisch für Ihn, immer alles auf den letzten Drücker.
|
||||
Okay, zum planen, wie lange wird ein Reiter brauchen?
|
||||
Die ersten Bewerbe, sind welche für Anfänger oder junge Pferde, denen geben wir mehr Zeit.
|
||||
Countdown: 45 Sek.
|
||||
Parcours: 350 m/min Erlaubte Zeit: 60 Sek. Idealzeit: \-10% \= 54 Sek.
|
||||
sagen wir zum Kalkulieren in den ersten Bewerbe (1 \- 5\) 2 min./Starter
|
||||
Siegerehrungen gibt es keine, sondern nur Mascherln (Schleifen) bei 0 Fehler direkt beim Ausritt vom Bewerbsplatz.
|
||||
Wir haben nicht so viele Starter, das wird schon passen.
|
||||
Eine kleine Mittagspause für die Richter, sagen wir 15 min.
|
||||
zwischen den Bewerben Umbauzeit sagen wir 10 min., Besichtigung 5 min.
|
||||
Das passt schön, Bewerbe 1, 2, 3, 4, 5 sind zur zeit 80 Starter
|
||||
macht pro Bewerb \+ Umbauzeit \+ Besichtigen 55 min. ca. 1 Std.
|
||||
Haben wir dann um ca. 13 Uhr Mittagspause von 15 min.
|
||||
Zeit für Bodenpflege und Bewässern.
|
||||
Machen wir um 13:30 Uhr mit den nächsten Bewerben weiter.
|
||||
Bewerb 6, 7, 8, 9 normal mit kleiner Siegerehrung ca. 10 min.
|
||||
Bewerb 10 ist der letzte und der Hauptbewerb des Tages.
|
||||
Das heißt wieder kleine Bodenpflege davor
|
||||
Bewerbe 6 \- 9 habe ich 49 Starter \~ 50 á 1 min 30 sek.
|
||||
13:30 Uhr \+ 2 h 15 min \= 15:45 Uhr \~ 16:00 Uhr
|
||||
Also ca. 16 Uhr Hauptbewerb.
|
||||
|
||||
Wie spät ist es?
|
||||
|
||||
18:30 Uhr
|
||||
|
||||
Okay, machen wir einmal einen Vorläufigen Zeitplan für die Dressur.
|
||||
Da haben wir zum Glück nur 5 Bewerbe morgen.
|
||||
Wie viele Starter? Gesamt 46 Starter
|
||||
1 D-Bewerb Aufgabe XY ca. 3 min 30 sek \~ 4 min Starter 6
|
||||
45 sek Countdown, Anfänger machen wir 5 min / Starter Beginn 8:00 Uhr Endet: 8:30 Uhr
|
||||
In der Dressur hat jeder Starter seine fixe Startzeit.
|
||||
kleine Siegerehrung 10 min
|
||||
Startzeit erster Bewerb 8:00 Uhr
|
||||
2 D-Bewerb Aufgabe XY ca. 3 min 30 sek \~ 4 min Starter 10
|
||||
45 sek Countdown, Anfänger machen wir 5 min / Starter Beginn: 9:00 Uhr Endet: 9:50 Uhr
|
||||
kleine Siegerehrung 10 min
|
||||
3 D-Bewerb Aufgabe XY ca. 4 min 30 sek \~ 5 min Starter 10
|
||||
45 sek Countdown, Anfänger machen wir 6 min / Starter Beginn: 10:15 Uhr Endet: 11:15 Uhr
|
||||
kleine Siegerehrung 10 min
|
||||
4 D-Bewerb Aufgabe XY ca. 4 min 30 sek \~ 5 min Starter 5
|
||||
45 sek Countdown, Anfänger machen wir 6 min / Starter Beginn: 12:00 Uhr Endet: 12:30 Uhr
|
||||
kleine Siegerehrung 10 min
|
||||
5 D-Bewerb Aufgabe XY ca. 5 min \~ 6 min Starter 15
|
||||
45 sek Countdown, Anfänger machen wir 6 min / Starter Beginn: 13:00 Uhr Endet: 14:30 Uhr
|
||||
|
||||
Ich glaube, es sieht gut aus.
|
||||
|
||||
Uhrzeit?
|
||||
|
||||
18:45 Uhr
|
||||
|
||||
Jetzt ruf ich mal den Michi (Veranstalter) an, dass er mal her kommen soll, damit er sich den Zeitplan ansehen kann, ob dieser ihm passt.
|
||||
|
||||
Ich: “Servus, Michi, kommst einmal vorbei? wegen Zeitplan”
|
||||
Michi: “Ja, komme gleich, magst auch ein Bier?”
|
||||
Ich: “Ja, gerne”
|
||||
|
||||
\======================================================================
|
||||
|
||||
Dem Michi hat mein Zeitplan gefallen.
|
||||
Nachdem ich die Startlisten dann noch sortiert hatte nach Wünschen der Reiter und wenn Reiter mehrere Pferde am Start hatten, habe ich dies natürlich auch berücksichtigt und diese dann je nach Wunsch ganz nach vorn und das zweite Pferd ganz nach hinten in der Startreihenfolge geplant.
|
||||
Manche Trainer wollen alle Ihre Schützlinge zusammen haben, wofür ein optionaler Vermerk auf den Trainer machen könnte, sicher ein Plus.
|
||||
|
||||
\=====================================================================
|
||||
|
||||
Michi kommt mit meinem Bier zu meinem Plumpsklo, alias Meldestelle.
|
||||
Michi: “Servus, Mo\! Hast eh alles gefunden, oder?”
|
||||
Ich: “Ja, soweit alles klar, du musst mir nur noch helfen mein Netzwerk fertig aufzubauen.”
|
||||
Michi: “Was brauchst den dafür?”
|
||||
Ich: “Meine beiden Funkies müssen noch so aufgehängt werden, damit sich die beiden sehen können. Womöglich so hoch wie möglich, damit die Handys den Funk nicht stören.”
|
||||
Michi: “Ah, das kann Janosch machen, mein Stallbursche, der kennt sich mit allem aus, der macht das schon. Ich rufe ihn gleich her, dann kannst du ihm die Funkies gleich geben.”
|
||||
Ich: “Super, eine Sorge weniger. Du, wegen dem Zeitplan. Ich habe dir eine kleine Mittagspause eingeplant so gegen 13:15 Uhr, passt das so für dich?”
|
||||
Michi: “Ja, passt schon, zeig her mal den Plan.”
|
||||
|
||||
Michi sieht sich den Plan an. Fünf Minuten später sieht er mich an.
|
||||
Michi: “Wieso beginnen wir schon um 8 Uhr Früh? Wenn wir eh nicht so viele Starter haben?”
|
||||
Ich: “Weil du es so in der Ausschreibung schon so veröffentlicht hast?”
|
||||
Michi: “Na okay. Wie viele Pfefferstäser haben wir denn morgen?” (Damit meint Michi die Dressurreiter)
|
||||
Ich: “ Steht eh drauf, 46”
|
||||
|
||||
In der Zwischenzeit ist auch schon Janosch aufgetaucht.
|
||||
|
||||
Michi: “Joschi, nimm dir die zwei Funkies und montiere sie, okay?”
|
||||
Janosch: “Chef, ja Chef”
|
||||
|
||||
Janosch sieht sich die WLAN-Funkies an, sieht mich an
|
||||
|
||||
Janosch: “Deine? Gute Funky, ich kennen”
|
||||
|
||||
und grinst mich an. Erhobenen Daumens grinse ich zurück
|
||||
|
||||
Ich: “Janosch, da” und zeige Ihm die Beschriftung auf den Funkies
|
||||
“Blaue Schrift ist Meldestelle und Rote Schrift ist Richter”
|
||||
Janosch: “Gut Chefe, mach ich”
|
||||
|
||||
Okay, Janosch macht sich an die Arbeit, mein Netzwerk fertig aufzubauen und Michi ist wieder, keine Ahnung was er macht.
|
||||
|
||||
19 Uhr \- Nennschluss
|
||||
|
||||
So, jetzt kann ich endlich die Startlisten fertig machen. Die Springer mach ich zuerst, mit denen bin ich schneller fertig.
|
||||
Ausschreibung, wo habe ich Sie? Ach ja, hier.
|
||||
Die Bewerbe einmal in die einzelnen Abteilungen trennen.
|
||||
Die ersten Bewerbe sind die “Anfänger-Bewerbe”, haben sich da hoffentlich keine Lizenz-Reiter eingeschmuggelt?
|
||||
Da, natürlich, was mach ich denn jetzt?
|
||||
Lizenz-Reiter mit den lizenzfreien Reitern gemeinsam zu beurteilen ist nicht fair.
|
||||
Ich mache noch eine Abteilung auf, das muss ich Franz sagen. (Franz ist der Turnier-Beauftragter Richter für dieses Turnier)
|
||||
Bewerb 6, 7 und 8 habe ich einige Reiter dabei die 2 und 3 Pferde reiten, diese Bewerbe werde ich für die Startlisten noch nicht in die einzelnen Abteilungen aufteilen, sonst haben diese Reiter nicht genügend Zeit Ihre Pferde vorzubereiten und oder wir brauchen zu viel Zeit auf diese dann zu warten.
|
||||
Ich lasse diese Bewerbe gemischt und teile erst am Ende des jeweiligen Bewerbes die Ergebnisse in die richtigen Abteilungen auf.
|
||||
Im Hauptbewerb darf ich das natürlich nicht, oder wenn es um Geld geht oder Meisterschaft.
|
||||
Den Rest lasse ich einfach in alphabetischer Reihenfolge nach Reiter-Nachname sortieren.
|
||||
Bei Meisterschaften oder Cups könnte ich die Reihenfolge nach Zufallsprinzip sortieren.
|
||||
Manche Veranstalter wollen bei Pferdeprüfungen die Sortierung nach Pferdename oder Abstammung haben.
|
||||
Bei Haflinger Bewerben ist es einfach zu überprüfen, ob tatsächlich nur Haflinger auf die Startliste gefunden haben, denn die Kopfnummern der Haflinger beginnen alle mit einem “H”.
|
||||
Und rein theoretisch beginnen alle österreichischen Warmblutpferde mit einem “A”.
|
||||
Das Allerbeste ist, dass die Bewerbe auch manuell in Abteilungen für jeden einzelnen Starter aufgeteilt werden können, denn nicht immer sind die Bewerbe nach gängigen Regeln geteilt.
|
||||
Bei diesem Turnier sind die Bewerbe zum Glück nur der Norm entsprechend nach Reiter-Lizenzen und Pferdealter in Abteilungen getrennt und die RS4-Reiter werden sowieso separat gewertet.
|
||||
|
||||
Startlisten springen fertig, jetzt kann ich die ersten Startlisten veröffentlichen.
|
||||
|
||||
Weiter zu den Dressur-Reitern, da sind etliche dabei die extra Wünsche haben.
|
||||
Ich darf nicht vergessen, die Susi nach weiteren Informationen zu Ihrem Pferd zu fangen.
|
||||
Da, schon wieder eine Reiterin, die darum bittet ganz hinten starten zu wollen, weil angeblich Ihr Pferd sonst zu sehr abgelenkt wird.
|
||||
Ich glaube, Sie will noch ein wenig länger schlafen.
|
||||
Petra hat viele Pferde mit auf dem Turnier und noch mehr Schüler.
|
||||
Sie will immer einen Schüler von Ihr, dann einen anderen dazwischen und dann wieder einen Schüler von Ihr.
|
||||
Mal sehen, ob das überhaupt so ausgeht.
|
||||
Bei den Dressur-Reitern muss ich besonders acht geben, denn diese bestehen auf Ihre Startzeiten der Startlisten welche heute Abend veröffentlicht werden und diese dürfen nicht mehr so leicht geändert werden.
|
||||
Auch wenn vor Ihnen 2-3 Reiter ausfallen würden und Sie der/die letzte Starter des Bewerbes sind, kommen die wenigsten Dressurreiter auf die Idee auch nur 5 Minuten früher an den Start zu gehen, denn diese Zeit brauchen Sie ja um sich selbst und Ihr Pferd auf den Punkt vorzubereiten.
|
||||
Ob das den Unterschied macht, wage ich zu bezweifeln.
|
||||
|
||||
Okay, Startlisten Dressur fertig, veröffentlichten.
|
||||
|
||||
So, die Protokolle für die Springreiter ausdrucken, die Startlisten für den Vorbereitungsplatz, Turnier-Sprecher und das Richterkollegium drucke ich erst morgen in der früh aus, ca. eine Stunde vor dem Bewerbs beginn, denn dann sollten absolut keine Änderungen möglich sein, normalerweise.
|
||||
Springreiter sind diesbezüglich, vor allem auf kleinen nationalen Turnieren ein Kapitel für sich. Denn einige von Ihnen kommen noch 5 min. vor dem Bewerbs-Beginn auf die Idee, doch noch eine Änderung vornehmen zu wollen.
|
||||
Reihenfolge der Pferde, wenn diese 2 oder mehr Pferde im Bewerb haben.
|
||||
Oder, weil es im Vorbewerb nicht so gut lief, noch schnell auch den nächsten Bewerb starten zu wollen.
|
||||
Bei manchen Heros muss man glücklich sein, wenn Sie überhaupt in der Meldestelle bescheid geben lassen, oft muss der Zeitnehmer verdammt aufpassen, ob es tatsächlich des richtige Pferd-Reiter-Paar ist, damit er das Ergebniss dem richtig Paar zu gute bucht.
|
||||
Wie es oft am Richterturm zugeht, wissen wir ja.
|
||||
|
||||
Ring Ring …
|
||||
|
||||
Es ist mittlerweile 19:30 Uhr
|
||||
|
||||
Habe ich jemanden in die falsche Abteilung oder Bewerb eingetragen?
|
||||
|
||||
Ich: “Meldestelle, Musterhof”
|
||||
Anrufer: “Hallo, ich habe ganz vergessen zu Nennen, kannst du mich noch eintragen?”
|
||||
Ich: “Okay, Kopfnummer …”
|
||||
|
||||
War ja klar, dass mindestens ein Teilnehmer nach Nennschluss anruft, um sich noch schnell nennen zu lassen.
|
||||
|
||||
Ring Ring …
|
||||
|
||||
Noch was?
|
||||
|
||||
Ich: “Meldestelle, Musterhof”
|
||||
Anrufer: “Du hast mich in den falschen Bewerb eingetragen”
|
||||
Ich: “Okay, wer bist du und was habe ich falsch gemacht?”
|
||||
|
||||
19:45 Uhr
|
||||
|
||||
Aber jetzt kann ich endlich die Protokolle für die Dressur vorbereiten.
|
||||
|
||||
Okay, ich brauche die Dressur-Aufgaben, die Leitfäden und Startlisten pro Bewerb.
|
||||
Bei diesem Turnier ist nur gemeinsames Richtverfahren auf einem 20x40 m Viereck ausgeschrieben.
|
||||
Pickerln werde ich noch drucken, damit die “Schreiber” ein wenig entlastet werden, um die Dressur-Protokolle zu personalisieren.
|
||||
|
||||
20:15 Uhr
|
||||
|
||||
Mal nachsehen, was Janosch gemacht hat mit meinem Netzwerk.
|
||||
Ja, das hat er wirklich gut montiert. Machen wir einen Testdurchlauf ob die Verbindung zum Richterturm Dressur und Springen funktioniert.
|
||||
|
||||
Super alles funktioniert wie es soll.
|
||||
|
||||
\==== Nächster Morgen 6:30 Uhr \====
|
||||
|
||||
So geht es auf einen neuen Turniertag.
|
||||
|
||||
\* Strom \- check
|
||||
\* Meldestellen-Laptop inkl. Programm \- check
|
||||
\* Meldestellen-Handy aufgeladen und bereit \- check
|
||||
\* Internet \- check
|
||||
\* Startlisten angeschlagen \- check
|
||||
\* Spring-Protokolle Standard und Stil Zeitplan und für den ersten Bewerb die Startlisten für Richter, Sprecher und Abreiteplatz vorbereitet \- check
|
||||
\* Dressur-Protokolle und Pickerln für den ersten Bewerb, Zeitplan für Richter, Sprecher und Abreiteplatz vorbereitet \- check
|
||||
\* Kontrollgang Richterturm-Springen:
|
||||
\- Strom \- check
|
||||
\- Laptop inkl. Programm einsatzbereit \- check
|
||||
\* Kontrollgang Richterturm-Dressur:
|
||||
\- Strom \- check
|
||||
\- Laptop inkl. Programm einsatzbereit \- check
|
||||
|
||||
7:00 Uhr
|
||||
|
||||
Ich glaube, von meiner Seite ist alles Einsatzbereit.
|
||||
|
||||
Starterin: “Hast du eine Aufgabe für mich?”
|
||||
Ich: “Guten Morgen\! Welche Aufgabe hättest du denn gerne?”
|
||||
Starterin: “Na die, die jetzt gleich dran kommt”
|
||||
Ich: “Aufgabe Reiterpass. Bitte gerne”
|
||||
|
||||
Tutro (Abkürzung für Turnier-Trottel, eine liebevolle Bezeichnung für einen Turnier-Helfer, meistens Freunde aus dem Verein welche einem als Turnier-Starter helfen um z.B: Startlisten zu besorgen und den Überblick behalten bezüglich der Startzeit und so weiter, damit man sich als Teilnehmer voll und ganz auf sich selbst und sein Pferd konzentrieren kann.)
|
||||
|
||||
nächster Turto: “Hast du für mich eine Startliste, für die nächsten beiden Spring-Bewerbe?”
|
||||
Ich: “Da habe ich ein paar aufgelegt zur freien entnahme”
|
||||
|
||||
Franz: “Guten Morgen Mo\! Danke, für die Info gestern am Abend mit dem Zeitplan. Die Richter-Einteilung”
|
||||
und überreicht mir einen Schmierzettel mit fast undefinierten Hieroglyphen
|
||||
Ich: “Guten Morgen, Herr Turnier-Beauftragter Richter. Haben der Herr gut geschlafen?”
|
||||
Franz: “Weist schon gibt\`s an Kaffee?”
|
||||
Ich: “Musst schauen, ich hab nur meinen Löskaffee. Magst einen von mir?"
|
||||
Franz: “Na, den kannst da kalten. Hast schon was für’n Narrenturm?”
|
||||
Ich: “Ist schon alles oben”
|
||||
|
||||
Franz macht sich auf den weg zum Narrenturm, Richterturm.
|
||||
|
||||
“Hallo, ich bin Anna. Ich soll die Protokolle für die Dressur von dir holen.”
|
||||
Ich: “Guten Morgen, Anna. Wofür brauchst du denn die Protokolle?”
|
||||
Anna: “Ich bin die Schreiberin”
|
||||
Ich: “Ah, sehr gut. Ich habe schon alles für dich vorbereitet, musst nur noch die Pickerln kleben und beim schreiben immer aufpassen, ob du eh das richtige Protokoll zum richtigen Starter hast, okay? Startlisten und Zeitplan hast du auch schon mit dabei.”
|
||||
Anna: “Pickerln, ich muss nicht alles mit der Hand vorschreiben? Das ist ja cool”
|
||||
Ich: “und kennst du dich schon mit meinem Programm aus um die Wertungen gleich in den Computer klopfen kannst?”
|
||||
Anna: “Was, das muss ich auch noch machen?”
|
||||
Ich: “Das ist nicht schwer, auf den Bewerb klicken, den richtigen Starter anklicken und die Wertung eingeben, enter, enter und der nächste Starter laut Startliste die du unten sehen kannst wird rein geladen. Die Wertung eingeben, enter, enter und so weiter.
|
||||
Also ganz einfach und unkompliziert.”
|
||||
Anna: “Und was ist wenn ich mal einen Fehler mache?”
|
||||
Ich: “Kein, Problem. du klickst den Starter aus der Ergebnis-Liste, die du gleich oben sehen kannst an, somit hast du in wieder zurück geladen, besserst die Wertung aus, bestätigst erneut, und das war es auch schon. Die Ergebnisse werde ich später auch noch mit dem schriftlichen Protokoll (Die Startliste wird gerne als “Notiz-Zettel” benutzt auf dem die Richter Ihre Wertungen selber aufschreiben, vom Hauptrichter des Bewerbes nehmen wir mit in die “Ablage”) der Richter überprüfen. Also keine Sorge, das machst du schon.”
|
||||
Anna: “Und warum, muss ich die Wertung auch noch eingeben?”
|
||||
Ich: “Damit informieren wir die Starter, die Ergebnisse sind live im Internet. Achja und ich in der Meldestelle werde meistens nicht darüber informiert, wie viele Starter dann tatsächlich platziert werden. Das Programm schlägt dir nur so viele Platzierungen vor, wie es die ÖTO vorsieht, aber wie viele dann wirklich platziert werden, entscheidet der Veranstalter in Absprache mit dem Richterkollegium. Soweit ich Michi kenne will es sicher alle platzieren die positiv sind. Diese Einstellung für die Platzierungen machst du bitte auch für mich rechts oben, einfach die Anzahl oder die Prozent eingeben, okay?”
|
||||
Anna: “Was, wir haben Live-Ergebnisse im Internet? Ist ja cool”
|
||||
Ich: “Wenn du Fragen hast oder sonnst irgendein Problem hast, dann kannst du mich im Chat vom Programm einfach fragen.”
|
||||
Anna: “Cool”
|
||||
|
||||
Anna, schafft das bestimmt.
|
||||
|
||||
7:30 Uhr
|
||||
|
||||
Jetzt brauche ich nur noch die Parcours-Skizzen von Markus.
|
||||
Karin ist auch schon früh unterwegs und läuft geradewegs bei mir vorbei.
|
||||
|
||||
Ich: “Karin\!”
|
||||
Karin sieht mich an.
|
||||
Karin: “Ja?”
|
||||
Ich: “Guten Morgen, bist auch schon früh unterwegs”
|
||||
Karin: “Guten Morgen, kennst ja Michi, wenn ich nicht alles für Ihn organisiere passiert hier nichts.”
|
||||
Ich: “Apropo organisieren, hast du Markus schon gesehen? Ich bräuchte noch seine Parcours-Skizzen.”
|
||||
Karin: “Ja, er baut gerade auf”
|
||||
Ich: “Eh schon. Wenn du Ihn siehst, sag Ihm er soll mir seine Skizzen bringen.”
|
||||
Karin: “Mach ich”
|
||||
|
||||
Auf den Parcours-Skizzen der Parcoursbauer bekomme ich die Informationen:
|
||||
\- Länge der Bahn
|
||||
\- Geschwindigkeit \- meistens 350 meter pro Minute
|
||||
\- Anzahl der Hindernisse
|
||||
\- Anzahl der Sprünge
|
||||
\- Erlaubte Zeit
|
||||
\- Idealzeit
|
||||
\- Start- und Ziel- Linie
|
||||
\- usw.
|
||||
|
||||
Viele Reiter hätten gerne so eine Skizze, damit Sie sich auf den Parcours vorbereiten können und wenn ich diesen online stellen kann, sind alle zufrieden.
|
||||
|
||||
“Hallo, ich bin die Schreiberin für das Springen”
|
||||
Ich: “Guten Morgen, hat Michi diesmal keine Zeitnehmung?”
|
||||
“Nein, er hat gesagt für das kleine Turnier braucht er keine”
|
||||
Ich: “Okay, ich bin Mo, wer bist du?”
|
||||
“Ah, ich bin Sissi”
|
||||
Ich: “Servus, Sissi\! Es sollte schon alles oben sein und kennst du dich schon aus mit dem Programm?”
|
||||
Sissi: “Ja, letzte Woche habe ich das auch schon gemacht. Da war Matthias am Stücklerhof”
|
||||
Ich: “Sehr gut, und war es schwer?”
|
||||
Sissi: “Nein, aber die Übersicht könnte noch etwas besser sein”
|
||||
Ich: “Okay, kannst du mir einen Vorschlag machen, wie du dir das Vorstellst? Indem du mir eine Beschreibung geben kannst oder eine Zeichnung?”
|
||||
Sissi: “Ja, mach ich”
|
||||
Ich: “Super, danke”
|
||||
|
||||
Ein weiterer Tutro: “Hast du die Nummer vom Hufschmied”
|
||||
Ich: “Die steht gleich an der Anschlag-Tafel. Was ist passiert”
|
||||
Turto: “Unser Pferd hat sich gerade am Abreiteplatz ein Eisen runter getreten”
|
||||
Ich: “Welches Pferd?”
|
||||
|
||||
Damit ich im Programm diesen Starter markieren kann, dass ein Problem gemeldet wurde. Somit wird der Schreiber/Zeitnehmer auf der Startliste seines Sichtfensters informiert, dass es ein Problem bei diesem Starter gibt. Diese Informationen kann dieser dann am Richterturm bescheid geben. Für einen schnellen, einfachen Informationsaustausch zwischen Meldestelle und Richterturm bzw. direkt an den oder die zuständigen Funktionäre.
|
||||
|
||||
Tutro: “Das Pferd vom Daniel”
|
||||
Ich: “Sag mir oder dem Richterturm bescheid, ob Ihr noch an den Start gehen könnt\!”
|
||||
Tutro: “Mach ich”
|
||||
|
||||
Für solche oder ähnliche Probleme am Abreiteplatz, wäre eine direkte Verbindung vom Abreiteplatz zur Meldestelle und zum Richterturm bzw. an Funktionäre sicher ein Plus.
|
||||
Könnte auch hilfreich sein, wenn diese Live-Ergebnisse im eigenen LAN-Netzwerk haben, damit diese Anzeige nicht von der örtlichen Internetverbindung abhängig ist.
|
||||
Diese, ich sage einmal “Offline-Live-Ergebnisse” könnten dann auch auf dem Gelände als Info-Anzeigen genutzt werden.
|
||||
|
||||
Die Aufgabe der Person am Abreiteplatz ist bei solchen Veranstaltungen wichtiger als man glauben mag, leider wird diese oft sehr unterschätzt.
|
||||
Die Person am Abreiteplatz hat die Uhrzeit ständig im Auge und achtet darauf, dass jeder Bewerb pünktlich beginnen kann.
|
||||
Sie/Er sorgt dafür, dass die Teilnehmer in der richtigen Reihenfolge laut Startliste rechtzeitig an den Start gehen.
|
||||
Sie/Er sollte stets den Überblick behalten, dass die nächsten Teilnehmer in Vorbereitung sind.
|
||||
Andernfalls hat dieser dies gleich dem Richterturm zu melden.
|
||||
Das ist sehr wichtig für einen gelungenen, flüssigen und vor allem stressfreien Ablauf der Veranstaltung.
|
||||
|
||||
Noch eine Reiterin läuft ganz aufgeregt herum, sieht mich, läuft zu mir und fragt mich
|
||||
“Hast du die Aufgabe?”
|
||||
Ich: “Welche brauchst du denn?”
|
||||
Reiterin: “Ich weis nicht, 2ter Bewerb”
|
||||
Ich: “Das ist die Reiternadel-Prüfung”
|
||||
Reiterin: “Ja kann sein. Ich hatte Sie auswendig gelernt, aber jetzt ist weis ich sie nicht mehr. Habt Ihr Ansager?”
|
||||
Ich: “Moment, da muss ich nachfragen”
|
||||
|
||||
Kurzer Anruf an die Schreiberin vom Dressur-Richterturm.
|
||||
Ich: "Anna, weißt du, haben wir Ansager?”
|
||||
Anna: “Ich kann sicher einen Ansager auftreiben, um wem geht es denn?”
|
||||
|
||||
Ich zur Reiterin “Wer bist du denn?”
|
||||
Reiterin “Olivia”
|
||||
|
||||
Ich zu Anna am Telefon: “Olivia im Reiternadel Bewerb”
|
||||
Anna: “Habe ich mir notiert”
|
||||
Ich: “Super, danke”
|
||||
|
||||
“Also, Olivia, es gibt die Möglichkeit einer Ansage, kann nur sein, dass wir € 2,- bis € 5,- pro Ansage Trinkgeld abkassieren. Ist das Okay für dich”
|
||||
Olivia: “Ja ist mir egal, Hauptsache ich bekomme Unterstützung”
|
||||
|
||||
“Servus Mo, du altes Haus\! Wie geht\`s deinen Kindern?”
|
||||
Ich: “Heidi, schön dich zu sehen. Was machst du hier?”
|
||||
Heidi: “Michi hat mich gebeten den Abreiteplatz zu machen”
|
||||
Ich: “Super Idee vom Michi. Danke der Nachfrage, meinen Kinder geht\`s gut.”
|
||||
|
||||
Das ist gut das Heidi den Abreiteplatz macht, Sie kennt die Reiter und den Ablauf, schließlich war Sie schon öfters als FEI-Steward bei größeren Veranstaltungen eingesetzt, die macht das.
|
||||
|
||||
8:00 Uhr
|
||||
|
||||
Die ersten Bewerbe haben endlich begonnen und bis jetzt läuft alles ganz nach Plan.
|
||||
|
||||
“Hallo, kann ich schon zahlen?”
|
||||
Ich: “Guten Morgen, natürlich darfst du zahlen. Wem möchtest du denn abrechnen?”
|
||||
Mutter einer Teilnehmerin: “ Ich zahl die Starts von Theresa L.”
|
||||
Ich: “Einen Moment bitte. Ja, Sie startet den Reiternadel-Bewerb. Das Pferd ist auch mit Nadine M. am Start in der L. Zahlst du gleich alles?”
|
||||
Mutter: “Nein, ich zahle nur den start meiner Tochter, das ist das Pferd von Ihrer Trainerin”
|
||||
Ich: “Okay, dann bekomme ich von Dir € 15,-”
|
||||
|
||||
Bei C-Neu Turnieren zahlen die Teilnehmer in den unteren Klassen kein Sportförderungs-Euro und auch kein Nenngeld.
|
||||
Das Programm muss in der Lage sein , Reiter- und aber auch Pferde- bezogen Abrechnungen durchzuführen.
|
||||
Es kommt auch öfter vor, dass Berufsreiter, Trainer, Züchter oder sonstige Einzel- und/oder Sammel- oder Rechnungen für Sponsoren, Firmen oder sonstige Personen bezogen benötigen.
|
||||
|
||||
Manche Veranstalter sind so freundlich und stellen mir als Meldestelle "Wechselgeld" zur Verfügung, welches ich natürlich auch in das Ein/Ausgabenbuch vermerken muss.
|
||||
|
||||
8:35 Uhr
|
||||
|
||||
“Hier, die soll ich dir geben”
|
||||
Ein Mädchen schnellen Schrittes mit den Dressur-Protokollen in Händen steckt mir diese entgegen.
|
||||
Ich: “Danke\!”
|
||||
|
||||
Kontrolle, ob die Ergebnisse korrekt in das System übertragen worden sind, Ergebnislisten ausdrucken und auf die Rückseite der Handschriftlichen Dressur-Protokolle anheften.
|
||||
Fertig, ab zur Ablage vor meiner Meldestelle, damit sich die Teilnehmer Ihre Protokolle abholen können.
|
||||
|
||||
Kurze Zeit später läuft Anna an der Meldestelle vobei.
|
||||
|
||||
Ich: “Und, Anna, hattest du Probleme?”
|
||||
Anna: “Nein, war genau so, wie du mir gesagt hast und danke für die Pickerln. Das hat mir viel Schreibarbeit abgenommen.”
|
||||
Ich: “Sehr gut, da lege ich dir immer die nächsten Protokolle hin, falls ich einmal nicht da sein sollte, okay?”
|
||||
Anna: “Ja, passt. Am Nachmittag kommt eine anderer, statt mir zu schreiben.”
|
||||
Ich: “Okay, erklärst du Ihr dann gleich, wie es geht?”
|
||||
Anna: “Ja, kann ich machen”
|
||||
|
||||
Die Spring-Ergebnisse kontrollieren.
|
||||
Ich gehe selber mal zum Richterturm und sehe nach dem Rechten.
|
||||
|
||||
Spring-Richterturm
|
||||
|
||||
Ich: “Und Franz, hast du alles unter kontrolle?”
|
||||
Franz: “Hey Mo, hast Ausgang bekommen?”
|
||||
Ich: “Ein bischen die Beine vertreten. Netter Parcours”
|
||||
Ein Blick zur Schreiberin Sissi
|
||||
Ich: “Ah, ihr habt ja schon eine Parcours-Skizze von Markus. Da schau Sissi, hier trägst du dann bitte die Erlaubte-Zeit ein, okay? Das System berechnet automatisch die Idealzeit.”
|
||||
Sissi: “Aja okay”
|
||||
Ich: “Und damit Ihr schnell Siegerehrungen machen könnt, brauchst du nur nach hier "Vorläufiges-Ergebnis" klicken, dann hast du eine schönere, größere Anzeige über die Ergebnisse”
|
||||
Sissi: “Wieso, vorläufig?"
|
||||
Ich: “Die Ergebnisse werden noch einmal kontrolliert und erst wenn alles richtig ist wird daraus das Endergebnis"
|
||||
|
||||
Teilnehmer haben bis zu einer halben Stunde nach Beendigung des Bewerbes das Recht, Einspruch zu erheben.
|
||||
Was zum Glück nicht oft vorkommt.
|
||||
Auf diesem Turnier ist keine elektronische Zeitnehmung im Einsatz, der/die Richter stoppen die Zeit mit einer Hand-Stoppuhr. Wenn dies der Fall ist, wird die gestoppte Zeit des Starters auf maximal zehntel Sekunden Genauigkeit für das Ergebnis übernommen.
|
||||
|
||||
Ich: “Servus, Markus. Hast du auch für mich deine Parcours-Skizzen?”
|
||||
Markus: “Ja, gleich muss nur noch den letzten Bewerb zeichnen. Ich komm dann bei die vorbei”
|
||||
|
||||
Wie immer etwas chaotisch mit ihm, aber er baut schöne, anspruchsvolle Parcours.
|
||||
|
||||
Ich setzte meinen Rundgang fort, auch Heidi hat den Abreiteplatz voll im griff.
|
||||
Markus pusht seine Schüler, da läutet das Meldestellen-Handy, Franz ruft mich an
|
||||
|
||||
Ich: “Ja?”
|
||||
Franz: "Pferde Passkontrolle, machen wir Bewerb 7”
|
||||
Ich: “Okay”
|
||||
|
||||
Damit ist mein Rundgang auch schon wieder vorbei.
|
||||
In der Meldestelle angelangt schreibe ich gleich auf die Web-Seite
|
||||
|
||||
“Pferde-Passkontrolle Bewer 7”
|
||||
|
||||
Auch auf der Startliste, welche im Internet veröffentlicht ist, vermerke ich den Zusatz rot, damit diese Änderung auffällt.
|
||||
Einen Zettel drucke ich aus, um es auf der Anschlagtafel auszuhängen.
|
||||
Der Turniersprecher hat diese Neuerung ebenfalls verkündet und wird dies noch etliche Male bis zum Beginn des Bewerbes 7 wiederholen.
|
||||
|
||||
Kiste vorbereiten für die Pferdepässe und eine Startliste zum Abstreichen.
|
||||
Wenn alle Pferdepässe eingelangt sind, wird die/der Turnier-Tierarzt verständige, dieser kontrolliert die eingetragenen Pflichtimpfungen der Pferde.
|
||||
Nicht ordnungsgemäß eingetragene Impfungen werden laut ÖTO geahndet.
|
||||
Ist ein Pferdepass nicht rechtzeitig vor Beginn des Bewerbes eingetroffen, ist dieser Teilnehmer nicht startberechtigt.
|
||||
Im Endeffekt entscheidet der Turnier- Beauftragte Richter, was geschehen wird.
|
||||
|
||||
Markus: “Da hast”
|
||||
|
||||
Markus überreicht mir einen USB-Stick mit seinen Parcours-Skizzen
|
||||
|
||||
Ich: “Hast das in PDF-format übertragen?”
|
||||
Markus: “glaub schon”
|
||||
|
||||
Reiterin kommt vorbei.
|
||||
|
||||
“Gibt\`s schon Protokolle?”
|
||||
Ich: “Ja, da vorne”
|
||||
Reiterin: “Die Ergebnisse?”
|
||||
Ich: “Hinten dran und im Internet”
|
||||
Reiterin: “Kannst du das hier erkennen, was das heißen soll?”
|
||||
|
||||
Und zeigt mir das Protokoll mit den Hieroglyphen
|
||||
|
||||
Ich: “Hmm … könnte nicht taktrein heißen”
|
||||
Reiterin: “Das könnte sein, ja danke”
|
||||
|
||||
Ring ring …
|
||||
Das Meldestellen-Handy läutet
|
||||
|
||||
“Sissi, was gibt\`s?”
|
||||
Sissi: “Das Programm schreibt mir gerade, dass es keine Verbindung zur Meldestelle mehr hat, was soll ich tun?”
|
||||
Ich: “Kein Problem, schreib einfach weiter, ich werde die Verbindung gleich kontrollieren.”
|
||||
|
||||
Na super, bis jetzt lief alles so gut und jetzt das noch.
|
||||
Okay, wo könnte das Problem liegen?
|
||||
Bei mir in der Meldestelle ist alles angeschlossen und hat Strom.
|
||||
Kontrollieren wir einmal das erste Funkie, Kabel ist in Ordnung und Strom ist auch vorhanden.
|
||||
Empfänger-Funkie, ah das hat keinen Strom.
|
||||
Warum? Angeschlossen ist alles. Ah, da haben wir den Übeltäter, das POE-Netzteil ist überhitzt, weil die Sonne direkt darauf scheint, hat der Überhitzungsschutz abgeschaltet.
|
||||
Zum Glück habe ich noch ein Ersatz-Netzteil mit, gleich wechseln und irgendwie abdecken, damit es von der Sonneneinstrahlung besser geschützt ist.
|
||||
Kontrollgang zur Sissi, ob Sie wieder eine Verbindung hat und auch gleich bei Ihr darauf achten, dass das Netzteil vom Laptop und natürlich auch den Laptop selbst von der Sonne etwas schützen.
|
||||
|
||||
Zurück zur Meldestelle, sind schon ein paar Leute angestellt.
|
||||
|
||||
“Bin schon da, was kann ich antun?”
|
||||
Teilnehmer: “Wir wollen zahlen\!”
|
||||
Ich: “Warum sagt Ihr das nicht gleich? Dafür lasse ich doch alles liegen und stehen.”
|
||||
|
||||
Während ich unterwegs war, um die Verbindung wiederherzustellen, hatten die wartenden Teilnehmer fast die gesamten Süßigkeiten, die ich als kleine Versüßung zur Meldestelle aufgestellt hatte, vernascht.
|
||||
Naja, eine Packung habe ich noch in Reserve.
|
||||
|
||||
Kaum hatte ich diese Traube an Teilnehmer abgefertigt, ruft mich Anna an.
|
||||
|
||||
“Ja, was gibt\`s”
|
||||
Anna: “Die Reiter brauchen für die Aufgabe länger als die 3 min. 30 sek. Dadurch sind wir im Verzug”
|
||||
Ich: “Okay, lass mich kurz nachsehen. Wir sind ca. 10 min. im Verzug. Stimmt das in etwa?”
|
||||
Anna: “Ja, das kommt hin.”
|
||||
Ich: “Das heist, wenn der Bewerb vorbei ist und alle weiteren Starter jetzt wie lange brauchen?”
|
||||
Anna: “Gute Minute bis 1,5 Minuten brauchen die länger”
|
||||
Ich: “Das heist wir haben abzüglich der Mini-Pause dazwischen ca. 25 Minuten verspätung für den nächsten Bewerb. Danach haben wir eh die kleine Mittagspause. Dadurch haben wir die Verspätung wieder kompensiert. Okay, wir machen gleich ohne Pause mit dem nächsten Bewerb weiter und die Siegerehrung findet ohne Pferd in der Gastro statt, okay. Sagst du das dem Sprecher, das er dass gleich so verkünden soll. Der nächste Bewerb ca. 20 Minuten verspätung soll er sagen, okay?
|
||||
Anna: “Okay, ohne Pause ca. 20 Minuten nächster Bewerb Verspätung, Siegerehrung ohne Pferd in der Gastro, passt sage ich Ihm”
|
||||
|
||||
Auch das noch. Eine Dressuraufgabe, die länger dauert als auf dieser angeschlagen steht und noch dazu in einem Bewerb, wo wir mehr Starter haben.
|
||||
Gleich diese neue Startzeit für den nächsten Bewerb im Internet deutlich machen und dem Abreiteplatz (Heidi) bescheid geben.
|
||||
Da wird es sicher zumindest einen Dressur-Reiter geben die/der sich aufregen wird.
|
||||
|
||||
@@ -1,117 +0,0 @@
|
||||
---
|
||||
type: ADR
|
||||
status: DRAFT
|
||||
owner: Lead Architect
|
||||
---
|
||||
# Use Cases Draft - Phase 1 (Core Domain)
|
||||
|
||||
* **Status:** Draft
|
||||
* **Fokus:** High-Level Prozessflüsse und Systemgrenzen
|
||||
|
||||
---
|
||||
|
||||
## Cluster 1: Turnier-Initialisierung & Datenbasis
|
||||
|
||||
### UC-01: Turnier-Stammdaten importieren
|
||||
* **Akteur:** Meldestellen-Leiter
|
||||
* **Auslöser:** Vorbereitung eines neuen Turniers oder Update am Turniermorgen.
|
||||
* **Vorbedingung:** `zns.zip` (oder äquivalente OEPS-Daten) liegt vor.
|
||||
* **Ablauf:**
|
||||
1. System liest die Datensätze für Pferde, Reiter, Vereine und Funktionäre.
|
||||
2. System aktualisiert die lokale Datenbank (Insert/Update).
|
||||
3. System markiert Datensätze mit Sperrvermerken oder fehlenden Lizenzen.
|
||||
* **Nachbedingung:** Die lokale Datenbank ist die "Single Source of Truth" für Validierungen.
|
||||
|
||||
### UC-02: Turnier-Konfiguration anlegen
|
||||
* **Akteur:** Meldestellen-Leiter
|
||||
* **Auslöser:** Erstellung eines neuen Events.
|
||||
* **Vorbedingung:** Ausschreibung liegt vor.
|
||||
* **Ablauf:**
|
||||
1. Akteur definiert Stammdaten (Ort, Datum, Veranstalter).
|
||||
2. Akteur legt Bewerbe an (Nummer, Klasse, Richtverfahren).
|
||||
3. Akteur definiert Gebühren (Nenngeld, Startgeld, Boxenpreise).
|
||||
* **Nachbedingung:** Das Turniergerüst steht bereit für Nennungen.
|
||||
|
||||
---
|
||||
|
||||
## Cluster 2: Nennungs-Management (Pre-Competition)
|
||||
|
||||
### UC-03: Nennung erfassen & validieren
|
||||
* **Akteur:** Meldestellen-Mitarbeiter
|
||||
* **Auslöser:** Import von Online-Nennungen oder manuelle Eingabe.
|
||||
* **Ablauf:**
|
||||
1. System prüft Existenz von Reiter und Pferd (via Satznummer).
|
||||
2. **Validierung:**
|
||||
* Ist die Startkarte bezahlt?
|
||||
* Ist die Lizenz ausreichend für die Klasse?
|
||||
* Liegt eine Sperre vor?
|
||||
* Ist das Pferd geimpft/registriert?
|
||||
3. Bei Validierungsfehler: System zeigt Warnung, erlaubt aber "Override" durch Akteur (z.B. "Zahlung erfolgt").
|
||||
4. System verknüpft Paar mit Bewerb.
|
||||
* **Nachbedingung:** Das Paar ist auf der "Nennliste" (noch nicht Starterliste).
|
||||
|
||||
### UC-04: Pferd/Reiter tauschen
|
||||
* **Akteur:** Meldestellen-Mitarbeiter
|
||||
* **Auslöser:** Reiter fällt aus oder Pferd ist lahm.
|
||||
* **Ablauf:**
|
||||
1. Akteur wählt bestehende Nennung.
|
||||
2. Akteur tauscht Reiter ODER Pferd aus.
|
||||
3. System führt Validierung (UC-03) für die neue Kombination durch.
|
||||
4. System protokolliert den Tausch (relevant für T-Satz im Export).
|
||||
* **Nachbedingung:** Nennung ist aktualisiert, Historie ist gewahrt.
|
||||
|
||||
---
|
||||
|
||||
## Cluster 3: Durchführung & Sport (Competition)
|
||||
|
||||
### UC-05: Startliste erstellen
|
||||
* **Akteur:** Meldestellen-Leiter
|
||||
* **Auslöser:** Nennschluss für einen Bewerb ist erreicht.
|
||||
* **Ablauf:**
|
||||
1. Akteur definiert Startreihenfolge (z.B. "Alphabetisch", "Gelost", "Nach Lizenz").
|
||||
2. System generiert die Reihenfolge.
|
||||
3. System weist Kopfnummern zu (falls noch nicht geschehen).
|
||||
4. System teilt bei Bedarf in Abteilungen (siehe US-005).
|
||||
* **Nachbedingung:** Die Startliste ist fixiert und kann gedruckt/publiziert werden.
|
||||
|
||||
### UC-06: Ergebnis erfassen
|
||||
* **Akteur:** Richter / Schreiber / Zeitnehmung
|
||||
* **Auslöser:** Ein Ritt ist beendet.
|
||||
* **Ablauf:**
|
||||
1. Akteur wählt Starter.
|
||||
2. Akteur gibt Rohdaten ein (Zeit, Fehlerpunkte, Wertnote).
|
||||
3. System berechnet sofort den Score und den vorläufigen Rang.
|
||||
4. System prüft auf Spezialfälle (Ausschluss, Aufgabe).
|
||||
* **Nachbedingung:** Ergebnis ist gespeichert, Live-Ranking ist aktualisiert.
|
||||
|
||||
### UC-07: Bewerb abschließen
|
||||
* **Akteur:** Meldestellen-Leiter / Hauptrichter
|
||||
* **Auslöser:** Letzter Reiter ist fertig, Einspruchsfrist abgelaufen.
|
||||
* **Ablauf:**
|
||||
1. System finalisiert die Rangierung (inkl. Ex-Aequo Regeln).
|
||||
2. System berechnet Geldpreise gemäß Ausschreibung und Teilnehmerzahl.
|
||||
3. System sperrt den Bewerb für Änderungen.
|
||||
* **Nachbedingung:** Ergebnisse sind "amtlich", Geldpreise sind den Konten gutgeschrieben.
|
||||
|
||||
---
|
||||
|
||||
## Cluster 4: Abschluss & Finanzen
|
||||
|
||||
### UC-08: Konto abrechnen (Kassieren)
|
||||
* **Akteur:** Kassen-Mitarbeiter
|
||||
* **Auslöser:** Teilnehmer will abreisen/bezahlen.
|
||||
* **Ablauf:**
|
||||
1. System aggregiert alle Kosten (Nenngelder, Boxen, Gebühren) pro "Verantwortlicher Person".
|
||||
2. System zieht gewonnene Geldpreise ab.
|
||||
3. System erstellt Saldo.
|
||||
4. Akteur verbucht Zahlungseingang.
|
||||
* **Nachbedingung:** Konto ist ausgeglichen, "Horse Pass" kann ausgegeben werden.
|
||||
|
||||
### UC-09: OEPS-Export durchführen
|
||||
* **Akteur:** Meldestellen-Leiter
|
||||
* **Auslöser:** Turnierende.
|
||||
* **Ablauf:**
|
||||
1. System prüft Datenintegrität (Alle Pflichtfelder für Export vorhanden?).
|
||||
2. System generiert `XXXXX.ERG` Datei gemäß Spezifikation V2.4.
|
||||
3. System erstellt Protokoll über eventuelle Warnungen/Abweichungen.
|
||||
* **Nachbedingung:** Export-Datei liegt bereit zur Übermittlung.
|
||||
@@ -1,114 +0,0 @@
|
||||
---
|
||||
type: ADR
|
||||
status: DRAFT
|
||||
owner: Lead Architect
|
||||
---
|
||||
# User Stories Draft - Phase 1 (Core Domain)
|
||||
|
||||
* **Status:** Draft
|
||||
* **Fokus:** Nationale Turniere (OEPS), Offline-Betrieb, Basis-Verwaltung
|
||||
|
||||
---
|
||||
|
||||
## Epic 1: Stammdaten & Offline-Vorbereitung
|
||||
|
||||
### US-001: Import der Verbands-Stammdaten (ZNS)
|
||||
**Als** Meldestellen-Leiter
|
||||
**möchte ich** die offizielle `zns.zip` Datei (Pferde, Reiter, Vereine, Richter) in das System importieren,
|
||||
**damit** ich auch ohne Internetverbindung Zugriff auf alle validen Lizenz- und Pferdedaten habe.
|
||||
|
||||
* **Akzeptanzkriterien:**
|
||||
* System akzeptiert `zns.zip` oder entpackte `.dat` Dateien (Codepage 850).
|
||||
* Importiert `PFERDE01.dat` (inkl. Mapping der 10-stelligen Satznummer).
|
||||
* Importiert `LIZENZ01.dat` (inkl. Startkarten-Status und Sperrvermerke).
|
||||
* Der Import ist performant genug, um am Turniermorgen aktualisiert zu werden (< 5 Min).
|
||||
* Fehlerhafte Datensätze werden protokolliert, brechen den Import aber nicht ab.
|
||||
|
||||
### US-002: Intelligente Akteur-Suche
|
||||
**Als** Meldestellen-Mitarbeiter
|
||||
**möchte ich** Reiter und Pferde über eine fehlertolerante Suche finden (Name, Kopfnummer, Lizenznummer),
|
||||
**damit** ich Nennungen schnell erfassen kann, auch wenn der Reiter seine genaue Nummer nicht weiß.
|
||||
|
||||
* **Akzeptanzkriterien:**
|
||||
* Suche nach Pferdenamen (Teilübereinstimmung).
|
||||
* Suche nach Kopfnummer (z.B. "A123").
|
||||
* Anzeige von Warnhinweisen direkt im Suchergebnis (z.B. "Sperrliste", "Keine Startkarte").
|
||||
* Unterscheidung bei Namensgleichheit durch Anzeige von Verein/Jahrgang/Abstammung.
|
||||
|
||||
---
|
||||
|
||||
## Epic 2: Nennung & Check-in
|
||||
|
||||
### US-003: Validierung der Startberechtigung (Startkarte)
|
||||
**Als** Meldestellen-Leiter
|
||||
**möchte ich**, dass das System mich warnt, wenn ein Reiter für einen Bewerb nennt, aber keine aktive Startkarte (Jahresgebühr) hat,
|
||||
**damit** ich ihn zur Nachzahlung auffordern kann.
|
||||
|
||||
* **Akzeptanzkriterien:**
|
||||
* Prüfung des Flags `STARTKARTE` aus den Stammdaten.
|
||||
* Prüfung der Lizenzklasse (z.B. darf "R1" nicht in Klasse S starten).
|
||||
* **Wichtig:** Das System darf die Nennung *nicht* blockieren (Soft-Validation), sondern muss einen "Override" ermöglichen (z.B. "Zahlung vor Ort erfolgt").
|
||||
* Visuelle Hervorhebung in der Starterliste (z.B. roter Status).
|
||||
|
||||
### US-004: Manuelle Nachnennung vor Ort
|
||||
**Als** Meldestellen-Mitarbeiter
|
||||
**möchte ich** ein Pferd-Reiter-Paar kurzfristig zu einem Bewerb hinzufügen,
|
||||
**damit** Teilnehmer, die die Online-Nennfrist verpasst haben, gegen Gebühr noch starten können.
|
||||
|
||||
* **Akzeptanzkriterien:**
|
||||
* Auswahl von Bewerb, Reiter und Pferd.
|
||||
* Automatische Berechnung der erhöhten Nenngebühr (Nachnenngebühr).
|
||||
* Vergabe einer Startnummer (fortlaufend oder manuell).
|
||||
* Eintrag in die `KKARTEI` (Nennliste) und `BBEWERBE` (Starterliste).
|
||||
|
||||
---
|
||||
|
||||
## Epic 3: Bewerbs-Abwicklung
|
||||
|
||||
### US-005: Verwaltung von Abteilungen
|
||||
**Als** Meldestellen-Leiter
|
||||
**möchte ich** einen Bewerb mit vielen Startern in mehrere Abteilungen (z.B. R1-Reiter vs. R2-Reiter) unterteilen,
|
||||
**damit** ich getrennte Ergebnislisten und Platzierungen erstellen kann, wie es die ÖTO verlangt.
|
||||
|
||||
* **Akzeptanzkriterien:**
|
||||
* Ein Bewerb kann in n Abteilungen gesplittet werden.
|
||||
* Starter können per Drag&Drop oder Regel (z.B. "Alle R1 in Abt. 1") zugewiesen werden.
|
||||
* Jede Abteilung hat eine eigene Platzierung, aber sie teilen sich die gleichen Prüfungsparameter (Parcours).
|
||||
* Export berücksichtigt das Feld `ABTEILUNG` im B-Satz.
|
||||
|
||||
### US-006: Ergebniserfassung & Platzierung
|
||||
**Als** Richter oder Schreiber
|
||||
**möchte ich** Ergebnisse (Zeit, Fehler, Wertnote) für einen Starter eingeben,
|
||||
**damit** die Rangierung automatisch berechnet wird.
|
||||
|
||||
* **Akzeptanzkriterien:**
|
||||
* Eingabemaske optimiert für schnelle Nummernblock-Eingabe.
|
||||
* Automatische Berechnung der Rangfolge basierend auf dem Regelwerk (Fehler/Zeit vs. Wertnote).
|
||||
* Handling von Spezialfällen: Ausschluss (EL), Aufgabe (RET), Disqualifikation (DQ), Nicht angetreten (DNS).
|
||||
* Sofortige Aktualisierung der "Live-Ergebnisse".
|
||||
|
||||
---
|
||||
|
||||
## Epic 4: Abschluss & Export
|
||||
|
||||
### US-007: OEPS-Konformer Ergebnis-Export
|
||||
**Als** Meldestellen-Leiter
|
||||
**möchte ich** die Ergebnisse des Turniers in das definierte Format (ASCII, Codepage 850) exportieren,
|
||||
**damit** ich meiner Meldepflicht gegenüber dem Verband nachkommen kann.
|
||||
|
||||
* **Akzeptanzkriterien:**
|
||||
* Erstellung der `XXXXX.ERG` Datei.
|
||||
* Strikte Einhaltung der Spaltenbreiten und Formate (siehe Legacy Spec Analyse).
|
||||
* Validierung vor Export: Warnung bei fehlenden Satznummern oder ungültigen Codes.
|
||||
* Korrekte Zuordnung der Nation (Gast vs. Inländer).
|
||||
|
||||
### US-008: Kassenabschluss & Abrechnung
|
||||
**Als** Veranstalter
|
||||
**möchte ich** eine Liste aller offenen Posten (Nenngelder, Boxen, Nachnenngebühren) pro Reiter/Verein sehen,
|
||||
**damit** ich vor der Ausgabe der Pferdepässe kassieren kann.
|
||||
|
||||
* **Akzeptanzkriterien:**
|
||||
* Aggregierte Ansicht pro "Verantwortlicher Person" (Zahler).
|
||||
* Auflistung aller Posten (Nennung, Startgeld, Gebühren).
|
||||
* Verrechnung von gewonnenen Geldpreisen (Gutschrift).
|
||||
* Druckfunktion für Rechnung/Quittung.
|
||||
@@ -1,123 +0,0 @@
|
||||
A26128CSN-C-NEU CSNP-C-NEU NEUM2026042520260425CSN-C-Neu CSNP-C_Neu 2.2PSO v1.07
|
||||
B010Stilspringprüfung - CSNP-C_N006000000001
|
||||
C010001307002129000000000000000000000000000000000000021771000000
|
||||
D001PG47Paddy's Nikita 170107Remplbauer Selina 00080000000 000000AUT*
|
||||
D002PK06H-S Button 196040Gillinger Marlene 00067000000 000000AUT*
|
||||
D003P824Pit 3 184759Krenn Eva 00055000000 000000AUT*
|
||||
D004P814Balu 6 193244Remplbauer Sophia 00000000000 000000AUT
|
||||
D004P901Daneder's Blitz 195501Weidinger Janina 00000000000 000000AUT
|
||||
D004PB70Daneder's Caramello 163545Montgomery Helena 00000000000 000000AUT
|
||||
B021Einlaufspringprüfung - CSN-C-Ne008000000002
|
||||
C021001307002129000000000000000000000000000000000000021771000000
|
||||
D0001781Ritual Do Vizo 126532Layr Bianca 00000000000 000000AUT*
|
||||
D000P816Aldensfarm Breaking Dawn 159405Starzengruber Marie-Theres 00000000000 000000AUT*
|
||||
D000P901Daneder's Blitz 195501Weidinger Janina 00000000000 000000AUT*
|
||||
D000PB70Daneder's Caramello 163545Montgomery Helena 00000000000 000000AUT*
|
||||
D000PE14SD Antonette 929451Mayrhofer Simon 00000000000 000000AUT*
|
||||
D000PG47Paddy's Nikita 170107Remplbauer Selina 00000000000 000000AUT*
|
||||
D000P824Pit 3 184759Krenn Eva 00003000000 000000AUT
|
||||
D000P814Balu 6 193244Remplbauer Sophia 00000000000 000000AUT
|
||||
B022Einlaufspringprüfung - CSN-C-Ne003000000002
|
||||
C022001307002129000000000000000000000000000000000000021771000000
|
||||
D000AR70Chocolate Kiss 2 147265Vanova Nina 00000000000 000000AUT*10258795
|
||||
D000P561Ginger Bread Girl 153601Winter Maja Sophie 00000000000 000000AUT*
|
||||
D997Z001Wildberry Gold RPZ 168660Zechmeister-Paster Diana A00000000000 000000AUT
|
||||
B030Stilspringprüfung - CSNP-C_N006000000003
|
||||
C030001307002129000000000000000000000000000000000000021771000000
|
||||
D001PA53Rathcline Star 178474Schmidmayr Nena Sophie 00072000000 000000AUT*
|
||||
D002P152Verena 3 170454Krenn Miriam 00070000000 000000AUT*
|
||||
D003P816Aldensfarm Breaking Dawn 159405Starzengruber Marie-Theres 00068000000 000000AUT*
|
||||
D004P561Ginger Bread Girl 153601Winter Maja Sophie 00067000000 000000AUT*
|
||||
D997PE14SD Antonette 929451Mayrhofer Simon A00000000000 000000AUT
|
||||
D997PK06H-S Button 196040Gillinger Marlene A00000000000 000000AUT
|
||||
B041Einlaufspringprüfung - CSNP-C_N006000000004
|
||||
C041001307002129000000000000000000000000000000000000021771000000
|
||||
D0002M80Handsome 186927Lengauer Jelena 00000000000 000000AUT* 106KB09
|
||||
D000AN19Exklusiv EM 187665Mück Hannah 00000000000 000000AUT*
|
||||
D0001781Ritual Do Vizo 126532Layr Bianca 00040000000 000000AUT
|
||||
D0004Y59Legolas 196 925183Schreiber Tamina 00047000000 000000GER
|
||||
D000AB83HB Vijola 920327Reisinger Marlene 00056000000 000000AUT
|
||||
D0003E99Quinet 906586Kapeller Emilia 00000000000 000000AUT
|
||||
B042Einlaufspringprüfung - CSNP-C_N007000000004
|
||||
C042001307002129000000000000000000000000000000000000021771000000
|
||||
D0003K69Lillet 18 150620Reitetschläger Lena 00000000000 000000AUT*
|
||||
D0005789Furiosa de la Bryere CE 140156Ehrentraut Carina 00000000000 000000AUT*
|
||||
D000A099Quintessa 2 609548Aichinger Bianca 00000000000 000000AUT*
|
||||
D0003M58Samantha 25 609771Karl Reinhard 00040000000 000000AUT
|
||||
D000H606Moondancer 070156Alberer Manuela 00040000000 000000AUT
|
||||
D000Z001Wildberry Gold RPZ 168660Zechmeister-Paster Diana 00092500000 000000AUT
|
||||
D000AR70Chocolate Kiss 2 147265Vanova Nina 00129000000 000000AUT 10258795
|
||||
B050Stilspringprüfung - CSNP-C_N003000000005
|
||||
C050001307002129000000000000000000000000000000000000021771000000
|
||||
D001P152Verena 3 170454Krenn Miriam 00074000000 000000AUT*
|
||||
D002P985Taffy 2 193430Schartmüller Sarah 00072000000 000000AUT*
|
||||
D003PA53Rathcline Star 906580Egger Julia 00065000000 000000AUT*
|
||||
B061Stilspringprüfung - CSNP-C_N009000000006
|
||||
C061001307002129000000000000000000000000000000000000021771000000
|
||||
D0012B41Guccini 922710Simlinger Marlies 00075000000 000000AUT*
|
||||
D002AN19Exklusiv EM 187665Mück Hannah 00072000000 000000AUT*
|
||||
D0033E99Quinet 906586Kapeller Emilia 00071000000 000000AUT*
|
||||
D0042M80Handsome 186927Lengauer Jelena 00070000000 000000AUT* 106KB09
|
||||
D004AF41Cäsar 55 916541Dugandzic Sarah 00070000000 000000AUT*
|
||||
D006PA53Rathcline Star 906580Egger Julia 00068000000 000000AUT
|
||||
D0074Y59Legolas 196 925183Schreiber Tamina 00062000000 000000GER
|
||||
D0083785Coeur 17 145963Obermüller Hannah 00061000000 000000AUT
|
||||
D009AB83HB Vijola 920327Reisinger Marlene 00057000000 000000AUT
|
||||
B062Stilspringprüfung - CSNP-C_N007000000006
|
||||
C062001307002129000000000000000000000000000000000000021771000000
|
||||
D001A099Quintessa 2 609548Aichinger Bianca 00082000000 000000AUT*
|
||||
D0025789Furiosa de la Bryere CE 140156Ehrentraut Carina 00072000000 000000AUT*
|
||||
D0033K69Lillet 18 150620Reitetschläger Lena 00067000000 000000AUT*
|
||||
D004KSS1Charity Coke 053749Eichler Eva 00065000000 000000AUT*
|
||||
D0053M58Samantha 25 609771Karl Reinhard 00060000000 000000AUT
|
||||
D005H606Moondancer 070156Alberer Manuela 00060000000 000000AUT
|
||||
D9971A11Gradan 102783Steyrer Anna A00000000000 000000AUT
|
||||
B070Stilspringprüfung - CSNP-C_N002000000007
|
||||
C070001307002129000000000000000000000000000000000000021771000000
|
||||
D001Y001Bella Graziella 144315Gaugl Laura 00075000000 000000AUT*
|
||||
D002P985Taffy 2 193430Schartmüller Sarah 00000000000 000000AUT
|
||||
B080Springreiterbewerb - CSNP-C_N003000000008
|
||||
C080001307002129000000000000000000000000000000000000021771000000
|
||||
D0013785Coeur 17 145963Obermüller Hannah 00080000000 000000AUT*
|
||||
D0022M80Handsome 186927Lengauer Jelena 00072000000 000000AUT* 106KB09
|
||||
D9973E99Quinet 178474Schmidmayr Nena Sophie A00000000000 000000AUT
|
||||
B091Standardspringprüfung - CSNP-C_N005000000009
|
||||
C091001307002129000000000000000000000000000000000000021771000000
|
||||
D0012062Grover 157407Pröll Leonie 00000005416 000000AUT*
|
||||
D0022B41Guccini 160813Grubmüller Lea 00000005463 000000AUT*
|
||||
D0031317Quality's Finest 612295Stroblmair Victoria 00000005492 000000AUT*
|
||||
D0041A11Gradan 102783Steyrer Anna 00000005858 000000AUT*
|
||||
D005KSS1Charity Coke 053749Eichler Eva 00040006428 000000AUT
|
||||
B092Standardspringprüfung - CSNP-C_N007000000009
|
||||
C092001307002129000000000000000000000000000000000000021771000000
|
||||
D001A024D Day 075374Ambros Susanne 00000005940 000000AUT*10071068 108EH50
|
||||
D0021G88Hamira 3 074007Beißmann Andreas 00000005991 000000AUT*
|
||||
D0032G77S Mirrallas 605835Ellmer Kassandra 00000006298 000000AUT*
|
||||
D0043966Capitaine 601366Madlmayr Carina 00040005862 000000AUT
|
||||
D0051942Obora's Agnetha 601300Hofer Michaela 00040005966 000000AUT
|
||||
D006Y001Bella Graziella 144315Gaugl Laura 00080005012 000000AUT
|
||||
D9972785Herr Frodo 144315Gaugl Laura A00000000000 000000AUT
|
||||
B100Springpferdeprüfung - CSN-C-Ne000000000010
|
||||
C100001307002129000000000000000000000000000000000000021771000000
|
||||
B110Stilspringprüfung - CSN-C-Ne002000000011
|
||||
C110001307002129000000000000000000000000000000000000021771000000
|
||||
D0012062Grover 157407Pröll Leonie 00085000000 000000AUT*
|
||||
D0021317Quality's Finest 612295Stroblmair Victoria 00080000000 000000AUT*
|
||||
B121Standardspringprüfung - CSN-C-Ne002000000012
|
||||
C121001307002129000000000000000000000000000000000000021771000000
|
||||
D0012062Grover 157407Pröll Leonie 00040005651 000000AUT*
|
||||
D0022B41Guccini 160813Grubmüller Lea 00080005774 000000AUT
|
||||
B122Standardspringprüfung - CSN-C-Ne004000000012
|
||||
C122001307002129000000000000000000000000000000000000021771000000
|
||||
D001AS94Landliebe 3 162776Höllmüller Anna 00000005557 000000AUT*10294537
|
||||
D0022G77S Mirrallas 605835Ellmer Kassandra 00000006212 000000AUT*
|
||||
D0031942Obora's Agnetha 601300Hofer Michaela 00000006723 000000AUT*
|
||||
D004A024D Day 075374Ambros Susanne 00040005943 000000AUT 10071068 108EH50
|
||||
B130Stilspringprüfung - CSN-C-Ne001000000013
|
||||
C130001307002129000000000000000000000000000000000000021771000000
|
||||
D0014258Casino East 601300Hofer Michaela 00075000000 000000AUT*
|
||||
B140Standardspringprüfung - CSN-C-Ne003000000014
|
||||
C140001307002129000000000000000000000000000000000000021771000000
|
||||
D0012010Leonidas van de Zuuthoeve Z 145960Fischerlehner Leonie 00000005368 000000AUT*
|
||||
D002AS94Landliebe 3 162776Höllmüller Anna 00000005745 000000AUT*10294537
|
||||
D0034258Casino East 601300Hofer Michaela 00000006261 000000AUT*
|
||||
@@ -1,71 +0,0 @@
|
||||
# CSN-C NEU / CSNP-C NEU NEUMARKT/M.
|
||||
|
||||
**Turnier-Nr.: 26128** | **Datum: 25. April 2026**
|
||||
|
||||
## Allgemeine Informationen
|
||||
|
||||
* **Veranstalter:** Union Reit- u. Fahrverein Neumarkt/M. (6-009)
|
||||
* **Ort:** Reitanlage Stroblmair, 4212 Neumarkt
|
||||
* **Kontakt:** Ursula Stroblmair, Brandstetterweg 2, 4212 Neumarkt
|
||||
* **Tel.:** 0664 1832381
|
||||
* **E-Mail:** reit-stall@gmx.at
|
||||
* **Nennungsschluss:** 24.04.2026, 19:00 Uhr
|
||||
* **Online-Nennung:** Ab Mittwoch, 22.04.
|
||||
auf [www.ihremeldestelle.at](http://www.ihremeldestelle.at)
|
||||
* **Meldestelle:** Geöffnet ab 24.04., 17:00 Uhr (Tel: +43 681 10769120)
|
||||
|
||||
## Technische Details
|
||||
|
||||
* **Austragungsplatz:** 45 x 65 m (Sand/Vlies)
|
||||
* **Vorbereitungsplatz:** 20 x 40 m Halle (Sand/Vlies)
|
||||
* **Warmreiten:** Draußen (20 x 60 m Sand/Vlies) möglich
|
||||
* **Boxen:** Keine Einstallung möglich
|
||||
|
||||
## Funktionäre
|
||||
|
||||
* **Turnierleiter:** Ursula Stroblmair
|
||||
* **Turnierbeauftragter:** Rudi Kreupl
|
||||
* **Richter:** Rudi Kreupl, Helmut Riedler
|
||||
* **Parcoursbauchef:** Kurt Reitetschlägerr
|
||||
* **Tierarzt:** Dr. Sabine Ötschmaier
|
||||
|
||||
---
|
||||
|
||||
## Besondere Bestimmungen
|
||||
|
||||
* **Kosten:** Startgeld € 15,- pro Bewerb. Kein Nenngeld, kein Sporteuro.
|
||||
* **Teilnahmebedingungen:**
|
||||
* Für Springprüfungen bis 95 cm: Mitgliedschaft OEPS-Verein und Reiterpass erforderlich.
|
||||
* Pferde bis 90 cm müssen **nicht** beim OEPS registriert sein.
|
||||
* Pferdepass mit gültigem Impfschutz (§ 11 OTO) ist vorzulegen.
|
||||
* Haftpflichtversicherung für jedes Pferd ist Pflicht.
|
||||
* **Startregelung:**
|
||||
* Ein Pferd darf maximal 3x pro Tag starten.
|
||||
* In Bewerben bis 95 cm darf ein Pferd mit zwei verschiedenen Reitern starten.
|
||||
* **Hunde:** Am gesamten Gelände herrscht Leinenpflicht.
|
||||
|
||||
---
|
||||
|
||||
## Bewerbe (Samstag, 25. April 2026 - Beginn 08:00 Uhr)
|
||||
|
||||
| Nr. | Bewerb | Höhe | Richtverfahren / Abteilungen |
|
||||
|:-------|:--------------------------------|:-------|:-------------------------------------------------------------|
|
||||
| **1** | Pony Stilspringprüfung | 60 cm | RV: § 204/4 (CSNP-C) |
|
||||
| **2** | Einlaufspringprüfung | 60 cm | RV: § 204/4 (1. Abt: lizenzfrei / 2. Abt: mit Lizenz) |
|
||||
| **3** | Pony Stilspringprüfung | 70 cm | RV: § 204/4 (CSNP-C) |
|
||||
| **4** | Einlaufspringprüfung | 70 cm | RV: § 218 (1. Abt: lizenzfrei / 2. Abt: mit Lizenz) |
|
||||
| **5** | Pony Stilspringprüfung | 80 cm | RV: § 204/4 (CSNP-C) |
|
||||
| **6** | Stilspringprüfung | 80 cm | RV: § 204/4 (1. Abt: lizenzfrei / 2. Abt: R1 & 5-6j. Pferde) |
|
||||
| **7** | Pony Stilspringprüfung | 95 cm | RV: § 204/4 (CSNP-C) |
|
||||
| **8** | Springreiterbewerb (lizenzfrei) | 95 cm | RV: § 204/4 (CSNP-C) |
|
||||
| **9** | Standardspringprüfung | 95 cm | RV: A2 (1. Abt: R1 / 2. Abt: R2 und höher) |
|
||||
| **10** | Springpferdeprüfung | 105 cm | RV: § 203/3 (1. Abt: 4-jährig / 2. Abt: 5-6-jährig) |
|
||||
| **11** | Stilspringprüfung | 105 cm | RV: § 204/4 (1. Abt: R1) |
|
||||
| **12** | Standardspringprüfung | 105 cm | RV: A2 (1. Abt: R1 / 2. Abt: R2/RS2 und höher) |
|
||||
| **13** | Stilspringprüfung | 115 cm | RV: § 204/4 (1. Abt: R1) |
|
||||
| **14** | Standardspringprüfung | 115 cm | RV: A2 (1. Abt: R1 / 2. Abt: R2/RS2 und höher) |
|
||||
|
||||
---
|
||||
**Haftung:** Der Veranstalter übernimmt keine Haftung. Teilnehmer haften persönlich für Schäden gegenüber
|
||||
Dritten.
|
||||
|
||||
Binary file not shown.
@@ -1,96 +0,0 @@
|
||||
A26129CDN-C-NEU CDNP-C_NEU NEUM2026042620260426 2.2PSO v1.07
|
||||
B010Dressurprüfung lzf CDN-C_Ne002000000001
|
||||
C010000000038705000000000000000000000000000000000000000000000000
|
||||
D001PB70Daneder's Caramello 163545Montgomery Helena 00062000000 000000AUT*
|
||||
D0022892Amore 5 AUT Stadler Caroline 00060000000 000000AUT*
|
||||
B020Dressurprüfung lzf CDN-C_Ne003000000002
|
||||
C020000000038705000000000000000000000000000000000000000000000000
|
||||
D0014208Sahib Silver G 195331Neuhauser Lara 00075000000 000000AUT*
|
||||
D0022892Amore 5 AUT Stadler Caroline 00068000000 000000AUT*
|
||||
D003PB70Daneder's Caramello 163545Montgomery Helena 00060000000 000000AUT*
|
||||
B030Dressurreiterprüfung lzf CDN-C_Ne005000000003
|
||||
C030035110000000000000000000000000000000000000000000000000000000
|
||||
D001PC62Flora HP 917397Altendorfer Pia 00080000000 000000AUT*
|
||||
D002Z002Abrakadabra S 107926Fürbäck Melanie 00077000000 000000AUT*
|
||||
D0034Y59Legolas 196 184074Stöbich Enya 00068000000 000000AUT*
|
||||
D004HKTBAcceptius FA 196261Salzinger Luisa Marie 00064000000 000000AUT
|
||||
D005PA53Rathcline Star 922380Kropfreiter Ines 00062000000 000000AUT
|
||||
B040Dressurreiterprüfung lzf CDN-C_Ne006000000004
|
||||
C040000000038705000000000000000000000000000000000000000000000000
|
||||
D001PC62Flora HP 917397Altendorfer Pia 00078000000 000000AUT*
|
||||
D0024208Sahib Silver G 195331Neuhauser Lara 00076000000 000000AUT*
|
||||
D003Z002Abrakadabra S 107926Fürbäck Melanie 00068000000 000000AUT*
|
||||
D004HKTBAcceptius FA 196261Salzinger Luisa Marie 00064000000 000000AUT
|
||||
D0054Y59Legolas 196 184074Stöbich Enya 00062000000 000000AUT
|
||||
D006PA53Rathcline Star 922380Kropfreiter Ines 00060000000 000000AUT
|
||||
B050Dressurreiterprüfung lzf CDN-C_Ne001000000005
|
||||
C050035110000000000000000000000000000000000000000000000000000000
|
||||
D001PF06Domino N AUT Stelzl Helena 00080000000 000000AUT*
|
||||
B060Dressurreiterprüfung lzf CDN-C_Ne000000000006
|
||||
C060035110000000000000000000000000000000000000000000000000000000
|
||||
B070Pony Dressurprüfung A CSNP-C_N003000000007
|
||||
C070000000038705000000000000000000000000000000000000000000000000
|
||||
D001PT24Daneder's Captain 146663Steinmetz Sinah-Marie 00065000000 000000AUT*
|
||||
D002P561Ginger Bread Girl 153601Winter Maja Sophie 00060000000 000000AUT*
|
||||
D003PA53Rathcline Star 906592Emsenhuber Tanja 00058000000 000000AUT
|
||||
B081Dressurreiterprüfung A CDN-C_Ne006000000008
|
||||
C081035110038705000000000000000000000000000000000000000000000000
|
||||
D0013888Ravasz 123156Scheiblechner Sonja 00072000000 000000AUT*
|
||||
D0024307Makker 146066Gstöttenbauer Olivia 00064000000 000000AUT*
|
||||
D003P561Ginger Bread Girl 153601Winter Maja Sophie 00062000000 000000AUT*
|
||||
D0042083Light Blue 194297Hazoth Anna-Maria 00060000000 000000AUT*
|
||||
D0053M58Samantha 25 609771Karl Reinhard 00058000000 000000AUT
|
||||
D005KSS1Charity Coke 053749Eichler Eva 00058000000 000000AUT
|
||||
B082Dressurreiterprüfung A CDN-C_Ne002000000008
|
||||
C082035110038705000000000000000000000000000000000000000000000000
|
||||
D001GIGIGigi D'Agostidinina 076742Klein Elisabeth 00068000000 000000AUT*10144403
|
||||
D002A590Queeny 8 612592Panzirsch Anna 00064000000 000000AUT*
|
||||
B091Dressurprüfung A CDN-C_Ne007000000009
|
||||
C091035110038705000000000000000000000000000000000000000000000000
|
||||
D0013888Ravasz 123156Scheiblechner Sonja 00070000000 000000AUT*
|
||||
D002AN19Exklusiv EM 187665Mück Hannah 00064000000 000000AUT*
|
||||
D0032083Light Blue 194297Hazoth Anna-Maria 00062000000 000000AUT*
|
||||
D0044B66Vingino's Victory 616957Kiesenhofer Sarah 00058000000 000000AUT
|
||||
D0053M58Samantha 25 609771Karl Reinhard 00055000000 000000AUT
|
||||
D005KSS1Charity Coke 053749Eichler Eva 00055000000 000000AUT
|
||||
D0074307Makker 146066Gstöttenbauer Olivia 00053000000 000000AUT
|
||||
B092Dressurprüfung A CDN-C_Ne004000000009
|
||||
C092035110038705000000000000000000000000000000000000000000000000
|
||||
D001GIGIGigi D'Agostidinina 076742Klein Elisabeth 00068000000 000000AUT*10144403
|
||||
D002AL46Superbunt 616836Lengauer Julia 00065000000 000000AUT*
|
||||
D0032010Leonidas van de Zuuthoeve Z 145960Fischerlehner Leonie 00064000000 000000AUT*
|
||||
D004A590Queeny 8 612592Panzirsch Anna 00058000000 000000AUT
|
||||
B100Pony Dressurprüfung L CSNP-C_N001000000010
|
||||
C100035110038705000000000000000000000000000000000000000000000000
|
||||
D001P540Pieter V 153601Winter Maja Sophie 00056000000 000000AUT*
|
||||
B110Dressurreiterprüfung L CDN-C_Ne003000000011
|
||||
C110035110038705000000000000000000000000000000000000000000000000
|
||||
D0011317Quality's Finest 612295Stroblmair Victoria 00074000000 000000AUT*
|
||||
D0021F34Ferro Felicis 146066Gstöttenbauer Olivia 00064000000 000000AUT*
|
||||
D003P540Pieter V 153601Winter Maja Sophie 00062000000 000000AUT*
|
||||
B121Dressurprüfung L CDN-C_Ne003000000012
|
||||
C121035110038705000000000000000000000000000000000000000000000000
|
||||
D001AN19Exklusiv EM 187665Mück Hannah 00068000000 000000AUT*
|
||||
D0021F34Ferro Felicis 146066Gstöttenbauer Olivia 00062000000 000000AUT*
|
||||
D003AE11Merlin SH 061601Povacz Gisela 00060000000 000000AUT*
|
||||
B122Dressurprüfung L CDN-C_Ne002000000012
|
||||
C122035110038705000000000000000000000000000000000000000000000000
|
||||
D001A024D Day 075374Ambros Susanne 00066000000 000000AUT*10071068 108EH50
|
||||
D0023966Capitaine 601366Madlmayr Carina 00060000000 000000AUT*
|
||||
B131Dressurpferdeprüfung A CDN-C_Ne003000000013
|
||||
C131035110038705000000000000000000000000000000000000000000000000
|
||||
D001AX99Bon Sai 102783Steyrer Anna 00073400000 000000AUT*
|
||||
D0020214SHS Donna Verdi 169981Süss Sarah 00066000000 000000AUT*
|
||||
D003PT24Daneder's Captain 146663Steinmetz Sinah-Marie 00061200000 000000AUT*
|
||||
B132Dressurpferdeprüfung A CDN-C_Ne005000000013
|
||||
C132035110038705000000000000000000000000000000000000000000000000
|
||||
D001MAXIVerstappen 2 075374Ambros Susanne 00074600000 000000AUT*10071068
|
||||
D0022H08SHS Weltmädel 169981Süss Sarah 00074200000 000000AUT*
|
||||
D003P983Daneders Tornado 153601Winter Maja Sophie 00064800000 000000AUT*
|
||||
D0044B03SHS Roubinjo 169981Süss Sarah 00064200000 000000AUT*
|
||||
D0054B66Vingino's Victory 616957Kiesenhofer Sarah 00063000000 000000AUT*
|
||||
B140Dressurpferdeprüfung L CDN-C_Ne003000000014
|
||||
C140035110038705000000000000000000000000000000000000000000000000
|
||||
D0012H08SHS Weltmädel 169981Süss Sarah 00067800000 000000AUT*
|
||||
D002P983Daneders Tornado 153601Winter Maja Sophie 00064800000 000000AUT*
|
||||
D0034B03SHS Roubinjo 169981Süss Sarah 00063000000 000000AUT*
|
||||
@@ -1,70 +0,0 @@
|
||||
# CDN-C NEU / CDNP-C NEU NEUMARKT/M., OÖ
|
||||
|
||||
**Turnier-Nr.: 26129** | **Datum: 26. April 2026**
|
||||
|
||||
## Allgemeine Informationen
|
||||
|
||||
* **Veranstalter**: Union Reit- u. Fahrverein Neumarkt/M. (6-009)
|
||||
* **Ort**: Reitanlage Stroblmair, 4212 Neumarkt
|
||||
* **Kontaktadresse**: Ursula Stroblmair, Brandstetterweg 2, 4212 Neumarkt
|
||||
* **Telefon**: 0664 1832381
|
||||
* **E-Mail**: reit-stall@gmx.at
|
||||
* **Nennungsschluss**: 25.04.2026, 19:00 Uhr
|
||||
* **Online-Nennung**: Ab Mittwoch, 22.04. auf www.ihremeldestelle.at möglich
|
||||
* **Meldestelle**: Geöffnet ab 25.04., 17:00 Uhr (Tel: +43 681 10769120)
|
||||
* **Start- und Ergebnislisten**: Ab 20:30 Uhr auf www.ihremeldestelle.at verfügbar
|
||||
|
||||
## Technische Details und Gebühren
|
||||
|
||||
* **Austragungsplatz**: 20 x 60 m Sand/Vlies
|
||||
* **Vorbereitungsplatz**: 20 x 40 m Halle (Sand/Vlies) und 20 x 60 m (Sand/Vlies)
|
||||
* **Boxen**: Keine Einstallung möglich
|
||||
* **Kosten**: Startgeld € 15,- pro Bewerb; kein Nenngeld und kein Sporteuro
|
||||
|
||||
## Funktionäre
|
||||
|
||||
* **Turnierleiter**: Ursula Stroblmair
|
||||
* **Turnierbeauftragte**: Alexandra Schuster
|
||||
* **Richter**: Alexandra Schuster, Ulrike Knasmüller-Prinz, Karin Wallner
|
||||
* **Steward**: Barbara Hruschka
|
||||
* **Tierarzt**: Dr. Sabine Ötschmaier
|
||||
|
||||
---
|
||||
|
||||
## Besondere Bestimmungen
|
||||
|
||||
* **Teilnahmevoraussetzungen**:
|
||||
* Für Reiterpass-/Reiternadel-Aufgaben ist die Mitgliedschaft bei einem OEPS-Verein und der Besitz des
|
||||
Reiterpasses erforderlich
|
||||
* Pferde für Reiterpass-/Reiternadel-Aufgaben müssen nicht beim OEPS registriert sein
|
||||
* **Pferde**:
|
||||
* Ein Pferd darf pro Tag maximal 3x starten
|
||||
* Ein Pferd darf mit zwei verschiedenen Reitern an den Start gehen
|
||||
* Vorlage des Pferdepasses mit gültigem Impfschutz gemäß § 11 OTO ist Pflicht
|
||||
* Jedes teilnehmende Pferd muss haftpflichtversichert sein
|
||||
* **Haftung**: Der Veranstalter übernimmt keine Haftung jeder Art und Ursache.
|
||||
Teilnehmer und Besitzer haften persönlich für Schäden gegenüber Dritten
|
||||
* **Sonstiges**: Es gilt Leinenpflicht für Hunde auf dem gesamten Gelände.
|
||||
Ausländische Equiden unterliegen der TRACES-Pflicht.
|
||||
|
||||
---
|
||||
|
||||
## Bewerbe (Sonntag, 26. April 2026 - Beginn 08:00 Uhr)
|
||||
|
||||
| Nr. | Bewerb | Aufg. | Details / Abteilungen |
|
||||
|:-------|:---------------------------------|:------|:-------------------------------------------------|
|
||||
| **1** | Dressurreiterprüfung Reiterpass | R1 | RV: A § 103/5 |
|
||||
| **2** | Dressurreiterprüfung Reiternadel | R4 | RV: A § 103/5 |
|
||||
| **3** | Dressurreiterprüfung lizenzfrei | LF1 | RV: A § 103/5 |
|
||||
| **4** | Dressurreiterprüfung lizenzfrei | LF3 | RV: A § 103/5 |
|
||||
| **5** | First Ridden | - | |
|
||||
| **6** | Führzügelklasse | - | |
|
||||
| **7** | Pony Dressurprüfung Kl. A | P1 | RV: A, § 901 |
|
||||
| **8** | Dressurreiterprüfung Kl. A | DRA1 | 1. Abt: R1/RD1; 2. Abt: R2/RD2 u. höher |
|
||||
| **9** | Dressurprüfung Kl. A | A5 | 1. Abt: R1/RD1; 2. Abt: R2/RD2 u. höher |
|
||||
| **13** | Dressurpferdeprüfung Kl. A | DPA1 | 1. Abt: 4-jähr. Pferde; 2. Abt: 5-6-jähr. Pferde |
|
||||
| **14** | Dressurpferdprüfung Kl. L | DPL1 | Für 5-6-jähr. Pferde |
|
||||
| **10** | Pony Dressurprüfung Kl. L | P6 | RV: A, § 901 |
|
||||
| **11** | Dressurreiterprüfung Kl. L | DRL1 | 1. Abt: R1/RD1; 2. Abt: R2/RD2 u. höher |
|
||||
| **12** | Dressurprüfung Kl. L | L3 | 1. Abt: R1/RD1; 2. Abt: R2/RD2 u. höher |
|
||||
|
||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 9.4 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 325 KiB |
Reference in New Issue
Block a user