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:
@@ -0,0 +1,79 @@
|
||||
---
|
||||
date: 2026-04-03
|
||||
sprint: B-2
|
||||
agent: Rulebook Expert
|
||||
status: TEILWEISE ABGESCHLOSSEN
|
||||
---
|
||||
|
||||
# Session-Log: B-2 Regulation-as-Data Backend-Übergabe
|
||||
|
||||
## Ziel der Session
|
||||
|
||||
Lizenz-/Altersmatrix als Regulation-as-Data an 👷 Backend übergeben; Lizenz×Bewerb-Tabellen für Fachfreigabe vorbereiten.
|
||||
|
||||
---
|
||||
|
||||
## Durchgeführte Arbeiten
|
||||
|
||||
### 1. Enum-Korrektur: `LizenzKlasseE` (core-domain)
|
||||
|
||||
- **Problem:** `R4` fehlte im Enum, obwohl Flyway V008 bereits `R4` inserierte → Mismatch.
|
||||
- **Fix:** `R4` in `core/core-domain/src/commonMain/kotlin/at/mocode/core/domain/model/Enums.kt` ergänzt.
|
||||
- **Vollständiger Katalog jetzt:** `LIZENZFREI, R1, R2, R3, R4, RD1, RD2, RD3, JN, JG, YR`
|
||||
|
||||
### 2. Flyway V008 korrigiert
|
||||
|
||||
- **Problem:** `RD4` in Dressur-Lizenz-Matrix inseriert — existiert nicht im ÖTO-Regelwerk und nicht im Enum.
|
||||
- **Fix:** `RD4`-Zeile entfernt; Kommentar mit Enum-Key-Konvention ergänzt.
|
||||
- **Datei:**
|
||||
`backend/services/masterdata/masterdata-service/src/main/resources/db/migration/V008__Seed_OETO_2026_Data.sql`
|
||||
|
||||
### 3. Flyway V009 neu angelegt
|
||||
|
||||
Zwei neue Tabellen als Regulation-as-Data:
|
||||
|
||||
| Tabelle | Inhalt |
|
||||
|-------------------------|-----------------------------------------------------------------------------|
|
||||
| `license_height_matrix` | Höhenbereich (cm) × erlaubte Lizenzklassen (Springen, ÖTO § 231) |
|
||||
| `horse_min_age_matrix` | Mindestalter Pferd je Sparte + Höhe/Niveau (national ÖTO + FEI GR Art. 136) |
|
||||
|
||||
- **Datei:**
|
||||
`backend/services/masterdata/masterdata-service/src/main/resources/db/migration/V009__Add_HorseAge_And_LicenseHeight_Matrix.sql`
|
||||
|
||||
### 4. B-2-Übergabe-Spezifikation erstellt
|
||||
|
||||
- Vollständige Spezifikation für 👷 Backend mit: Enum-Katalog, DB-Tabellen, Abfrage-Patterns, Pseudocode,
|
||||
REST-Endpunkt-Empfehlungen, Abweichungen Backend↔Frontend, Fachfreigabe-Checkliste.
|
||||
- **Datei:** `docs/03_Domain/02_Reference/OETO_Regelwerk/B2-Backend-Uebergabe-Regulation-as-Data.md`
|
||||
|
||||
### 5. `Validierungsregeln.md` aktualisiert (v0.3 → v0.4)
|
||||
|
||||
- `LZF` → `LIZENZFREI` in allen Vorkommen korrigiert (Enum ist SSoT).
|
||||
- Verweis auf B2-Übergabe-Spezifikation ergänzt.
|
||||
- Version auf 0.4 (2026-04-03) angehoben.
|
||||
|
||||
### 6. Roadmap aktualisiert
|
||||
|
||||
- Sprint B von 🔴 auf 🟡 gesetzt (Übergabe abgeschlossen, Fachfreigabe + Backend-Impl. offen).
|
||||
- Abgeschlossene Teilaufgaben abgehakt.
|
||||
|
||||
---
|
||||
|
||||
## Offene Punkte (Übergabe an nächste Session)
|
||||
|
||||
| # | Aufgabe | An wen | Priorität |
|
||||
|---|-----------------------------------------------------------------------|--------------------|-----------|
|
||||
| 1 | **Fachfreigabe** Lizenz×Bewerb-Tabellen beim ÖTO-Fachreferat einholen | 📜 Rulebook Expert | 🔴 |
|
||||
| 2 | Backend-Endpunkte `/api/regulation/*` implementieren | 👷 Backend | 🔴 |
|
||||
| 3 | Frontend `LZF`-Key im Code prüfen (nicht nur Doku) | 🎨 Frontend | 🟠 |
|
||||
| 4 | Serverseitige Validierung prüfen (nach Backend-Impl.) | 📜 Rulebook Expert | 🟠 |
|
||||
| 5 | `AltersklasseRechner` (C-1) spezifizieren und implementieren | 👷 + 📜 | 🟠 |
|
||||
|
||||
---
|
||||
|
||||
## Entscheidungen & Erkenntnisse
|
||||
|
||||
- **`LIZENZFREI` ist der kanonische Enum-Key** — nicht `LZF`. Alle Dokumente und Code müssen diesen Key verwenden.
|
||||
- **`RD4` existiert nicht** im ÖTO-Regelwerk 2026. Höchste Dressur-Lizenz ist `RD3`.
|
||||
- **Aufwärts-Kompatibilität** ist explizit modelliert: Höhere Lizenz darf immer in niedrigerer Klasse starten.
|
||||
- **Fachfreigabe ist Voraussetzung** für STABLE-Status der Tabellen — bis dahin bleibt alles DRAFT.
|
||||
Reference in New Issue
Block a user