meldestelle/docs/99_Journal/2026-04-03_Rulebook_B2_Regulation-as-Data_Backend.md
Stefan Mogeritsch c696b8c50e 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>
2026-04-03 11:10:45 +02:00

3.7 KiB
Raw Blame History

date sprint agent status
2026-04-03 B-2 Rulebook Expert 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)

  • LZFLIZENZFREI 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.