feat(db): add regulation-as-data tables for license height and horse age matrices
- Introduced `license_height_matrix` for mapping minimum license requirements to jump heights (ÖTO § 231). - Added `horse_min_age_matrix` for defining minimum horse ages by discipline, height, or level (ÖTO § 103, FEI GR Art. 136). - Populated both tables with ÖTO 2026 and FEI-compliant seed data. - Updated Flyway V008 to remove incorrect `RD4` entry and annotated corrected enum references. - Created Flyway V009 for introducing the new tables and their seeds. - Aligned documentation, validation rules, and roadmaps for backend implementation handover. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
type: RULE_SPEC
|
||||
status: DRAFT
|
||||
owner: Rulebook Expert
|
||||
last_update: 2026-04-02
|
||||
last_update: 2026-04-03
|
||||
---
|
||||
|
||||
# Validierungsregeln (ÖTO/FEI)
|
||||
@@ -148,29 +148,32 @@ fun validateFeiId(input: String): Boolean {
|
||||
|
||||
---
|
||||
|
||||
## 3. Lizenzklassen (R1–R4, RD1–RD3, LZF)
|
||||
## 3. Lizenzklassen (R1–R4, RD1–RD3, LIZENZFREI)
|
||||
Status: Draft – basierend auf ÖTO‑Praxis und ZNS‑Lizenzdaten. Detaillierte Paragraphen‑Zitate werden nachgereicht (A‑2/A‑3 Arbeiten verknüpft).
|
||||
|
||||
### 3.1 Katalog gültiger Lizenzklassen
|
||||
- Reiten Springen (R‑Klassen): `R1`, `R2`, `R3`, `R4`
|
||||
- Dressur Reiten (RD‑Klassen): `RD1`, `RD2`, `RD3`
|
||||
- Lizenzfrei/ohne Lizenz Kennzeichnung: `LZF` (für bewerbsbezogene Abteilung „ohne Lizenz“)
|
||||
- Lizenzfrei/ohne Lizenz Kennzeichnung: `LIZENZFREI` (Enum-Key in `LizenzKlasseE`; Label: „ohne Lizenz“)
|
||||
|
||||
Erweiterbarkeit: Weitere Spezial‑/Jugend‑ oder Fahrer‑Lizenzen können ergänzt werden, sobald in ÖTO/ZNS erforderlich.
|
||||
|
||||
### 3.2 Grundregeln der Zuordnung (vereinfachte Erstfassung)
|
||||
- Springen (CSN):
|
||||
- Bewerbe bis inkl. 95 cm: Teilnahme mit `LZF` (Abt. „ohne Lizenz“) oder `R1` (Abt. „mit Lizenz`).
|
||||
- Bewerbe bis inkl. 95 cm: Teilnahme mit `LIZENZFREI` (Abt. „ohne Lizenz“) oder `R1` (Abt. „mit Lizenz`).
|
||||
- Ab 100 cm: mindestens `R1` erforderlich; ab bestimmten Höhen empfohlen/erforderlich `R2+` (veranstalter‑/ausschreibungsabhängig).
|
||||
- Zwangsteilungsregeln siehe Roadmap A‑2 (eigener Abschnitt).
|
||||
- Dressur (CDN):
|
||||
- Einsteigerprüfungen (z. B. Dressurreiterprüfungen niedrig): `LZF` oder `RD1`.
|
||||
- Einsteigerprüfungen (z. B. Dressurreiterprüfungen niedrig): `LIZENZFREI` oder `RD1`.
|
||||
- Ab definiertem Schwierigkeitsgrad: `RD1+`, höhere Klassen `RD2/RD3` gemäß Ausschreibung.
|
||||
|
||||
Hinweis: Die exakte Matrix „Lizenzklasse × Bewerbsklasse (Disziplin, Höhe/Schwierigkeit)“ wird als Tabelle hinterlegt und aus ÖTO‑Paragraphen abgeleitet. Nach Bestätigung durch Fachreferat wird diese Spezifikation von „Draft“ auf „Stable“ gehoben.
|
||||
Hinweis: Die vollständige Matrix „Lizenzklasse × Bewerbsklasse“ ist in
|
||||
`docs/03_Domain/02_Reference/OETO_Regelwerk/B2-Backend-Uebergabe-Regulation-as-Data.md` (Abschnitte 4 und 5)
|
||||
spezifiziert und als Flyway V009 im Backend hinterlegt. Nach Fachfreigabe wird der Status auf STABLE angehoben.
|
||||
|
||||
### 3.3 Validierungslogik (Platzhalter bis zur finalen Matrix)
|
||||
- Eingabe muss in obiger Katalogliste vorkommen (`R1|R2|R3|R4|RD1|RD2|RD3|LZF`).
|
||||
|
||||
- Eingabe muss in obiger Katalogliste vorkommen (`R1|R2|R3|R4|RD1|RD2|RD3|LIZENZFREI`).
|
||||
- Bei Auswahl eines Bewerbs wird die erlaubte(n) Lizenzklasse(n) aus der Disziplin/Höhe/Schwierigkeit abgeleitet.
|
||||
- Fehler, wenn gewählte Lizenzklasse nicht in der erlaubten Menge liegt.
|
||||
|
||||
@@ -194,24 +197,24 @@ fun isLicenseAllowed(discipline: Discipline, heightCm: Int?, testLevel: Dressage
|
||||
### 3.6 Lizenz‑Zuordnungstabelle (DRAFT, final mit Paragraphen‑Verweisen)
|
||||
- Springen (CSN) — Bezug ÖTO § 231 ff. (finale Paragraphennummern nachreichen):
|
||||
|
||||
| Höhe (cm) | Zulässige Lizenz-Abteilungen | Primär-Bezug ÖTO |
|
||||
|---|---|---|
|
||||
| ≤ 95 | LZF „ohne Lizenz“ | § 231 (Zwangsteilung Einsteiger) |
|
||||
| ≤ 95 | R1 „mit Lizenz“ | § 231 |
|
||||
| 100 | R1+ | § 231 |
|
||||
| 105–110 | R1, R2+ (Empf. R2) | § 231 |
|
||||
| 115–120 | R2+ | § 231 |
|
||||
| 125–135 | R3+ | § 231 |
|
||||
| ≥ 140 | R4 | § 231 |
|
||||
| Höhe (cm) | Zulässige Lizenz-Abteilungen | Primär-Bezug ÖTO |
|
||||
|-----------|------------------------------|----------------------------------|
|
||||
| ≤ 95 | LIZENZFREI „ohne Lizenz“ | § 231 (Zwangsteilung Einsteiger) |
|
||||
| ≤ 95 | R1 „mit Lizenz“ | § 231 |
|
||||
| 100 | R1+ | § 231 |
|
||||
| 105–110 | R1, R2+ (Empf. R2) | § 231 |
|
||||
| 115–120 | R2+ | § 231 |
|
||||
| 125–135 | R3+ | § 231 |
|
||||
| ≥ 140 | R4 | § 231 |
|
||||
|
||||
- Dressur (CDN) — Bezug ÖTO § 103 ff. (finale Paragraphennummern nachreichen):
|
||||
|
||||
| Prüfungsniveau (national, äquiv.) | Zulässige Lizenzen | Primär-Bezug ÖTO |
|
||||
|---|---|---|
|
||||
| Einsteiger/Dressurreiter (niedrig) | LZF, RD1 | § 103 |
|
||||
| A/L | RD1+ | § 103 |
|
||||
| LM/M | RD2+ | § 103 |
|
||||
| S | RD3 | § 103 |
|
||||
| Prüfungsniveau (national, äquiv.) | Zulässige Lizenzen | Primär-Bezug ÖTO |
|
||||
|------------------------------------|--------------------|------------------|
|
||||
| Einsteiger/Dressurreiter (niedrig) | LIZENZFREI, RD1 | § 103 |
|
||||
| A/L | RD1+ | § 103 |
|
||||
| LM/M | RD2+ | § 103 |
|
||||
| S | RD3 | § 103 |
|
||||
|
||||
Hinweise:
|
||||
- Veranstalter/Ausschreibung kann engere Anforderungen definieren, jedoch nicht lockern.
|
||||
@@ -294,4 +297,4 @@ Hinweis: Exakte FEI‑Tabellen sind pro Disziplinregelwerk verbindlich zu übern
|
||||
|
||||
Meta:
|
||||
- status: DRAFT (wird auf STABLE angehoben nach Fachfreigabe)
|
||||
- version: 0.3 (2026‑04‑02)
|
||||
- version: 0.4 (2026‑04‑03)
|
||||
|
||||
Reference in New Issue
Block a user