Finalize domain model: define event → tournament → class → division hierarchy, multi-tournament account structures, and event-wide cashbox aggregation logic. Add division types and update glossary tasks.

This commit is contained in:
2026-04-02 17:53:46 +02:00
parent 898d249d41
commit bbe5b1a357
5 changed files with 294 additions and 9 deletions
@@ -0,0 +1,99 @@
---
type: RULE_SPEC
status: DRAFT
owner: Rulebook Expert
last_update: 2026-04-02
---
# Validierungsregeln (ÖTO/FEI)
Ziel: Dieses Dokument definiert präzise, testbare Validierungsregeln als Grundlage für Frontend (LiveValidation), Backend (serverseitige Validation) und QA (Testfälle). Änderungen erfolgen versioniert und mit Beispielen.
Quellen/Verweise:
- Roadmap: `docs/04_Agents/Roadmaps/Rulebook_Roadmap.md`
- DomänenModell: `docs/03_Domain/01_Core_Model/Domain_Model_Veranstaltung_Turnier_Bewerb_Abteilung.md`
---
## 1. OEPSMitgliedsnummer (Austria)
Status: Draft finale Bestätigung durch OEPS/Verbandsdokumente ausstehend. Regel ist bewusst konservativ und maschinenlesbar formuliert.
### 1.1 Zweck
- Eindeutige Identifikation von Reiter:innen/Vereinsmitgliedern des OEPS in Formularen, Nennungen und SyncSchnittstellen.
### 1.2 Kanonisches Format (Normalform)
- Zeichenraum: Großbuchstaben AZ, Ziffern 09, Bindestrich `-`.
- Erlaubte Schreibweisen (Regex in PCRENotation):
1) Mit Präfix: `^OEPS-[0-9]{6,8}$`
2) Ohne Präfix: `^[0-9]{6,8}$`
Erläuterungen:
- Länge der numerischen Komponente: 6 bis 8 Ziffern (Spielraum für Altdaten/neuere Nummernkreise). Engführen auf exakt 7 Ziffern ist möglich, sobald offiziell bestätigt.
- Präfix ist optional in der Eingabe, wird bei Speicherung normalisiert (siehe 1.5).
### 1.3 Verbote / Nicht erlaubt
- Leerzeichen innerhalb der Nummer (z. B. `123 4567`).
- Punkte, Schrägstriche, Unterstriche oder andere Sonderzeichen (`. / _ + * ? ! …`).
- Alphanumerische Suffixe oder Buchstaben in der Nummer (z. B. `123456A`).
- Falsches oder gemischtes Präfix (z. B. `OEPS:` oder `Oeps-`).
- Führende Nullen sind erlaubt, zählen jedoch zur Gesamtlänge (z. B. `00123456`).
### 1.4 Beispiele
- Gültig:
- `123456`
- `7654321`
- `00123456`
- `OEPS-1234567`
- `OEPS-00123456`
- Ungültig (mit Begründung):
- `12345` — zu kurz (min. 6 Ziffern)
- `123456789` — zu lang (max. 8 Ziffern)
- `12A4567` — Buchstaben in der Nummer nicht erlaubt
- `OEPS1234567` — fehlender Bindestrich nach Präfix
- `OEPS-12 34567` — Leerzeichen nicht erlaubt
- `oeps-1234567` — falsche Groß/Kleinschreibung im Präfix (nur `OEPS-` zulässig)
- `OEPS-1234.567` — Punkt nicht erlaubt
### 1.5 Normalisierung (Speicherformat)
- Interne Normalform: `NNNNNNNN` (nur Ziffern, links mit Nullen auf 8 Zeichen aufgefüllt), sofern Nummernlänge ≤ 8.
- Eingaben mit Präfix werden gespeichert ohne Präfix, jedoch mit Metadatum `source_prefix = OEPS`.
- Beispiel: `OEPS-1234567``01234567` (Normalform), `source_prefix=OEPS`.
Hinweise:
- Falls sich offiziell herausstellt, dass die Länge fix `7` ist, wird die Normalisierung entsprechend angepasst (kein linksseitiges Auffüllen über 7 hinaus). Diese Änderung wäre eine MINOR Schema/ValidationVersion.
### 1.6 PseudocodeValidierung
```kotlin
fun validateOepsId(input: String): Boolean {
val trimmed = input.trim()
val withPrefix = Regex("^OEPS-[0-9]{6,8}$")
val plain = Regex("^[0-9]{6,8}$")
return withPrefix.matches(trimmed) || plain.matches(trimmed)
}
```
### 1.7 Fehlermeldungen (UXTexte)
- Kurz: "Ungültige OEPSMitgliedsnummer. Erlaubt sind 68 Ziffern, optional mit Präfix 'OEPS-'."
- Lang: "Bitte eine gültige OEPSMitgliedsnummer eingeben: 68 Ziffern (z. B. 1234567 oder OEPS-1234567). Keine Leerzeichen oder Sonderzeichen."
### 1.8 Offene Punkte / ToDo
- Verbandsbestätigung: Fixe Länge (6, 7 oder 8) und eventuelle Prüfziffer klären.
- Mapping Altsysteme: Enthalten historische KartenformatVarianten? Falls ja, eigene LegacyRegex aufnehmen.
- QA: Testfälle für Grenzwerte (6/8 Ziffern), PräfixVarianten, WhitespaceTrimmung.
---
## 2. FEIID
ToDo: Wird in A1 (weiterer Unterpunkt) spezifiziert.
---
## 3. Lizenzklassen (R1R4, RD1RD3, LZF)
ToDo: Vollständige Liste und Zuordnung in A1 (weiterer Unterpunkt).
---
## 4. Altersklassen Pferd
ToDo: Mindestalter je Bewerbsklasse / Höhe und Stichtagsregel (1. Jänner) folgt in A1 (weiterer Unterpunkt).