feat(docs): expand masterdata documentation with Reiter- and Pferdeprüfungen
- Added `REITER_PRUEFUNGEN.md` and `PFERDEPRUEFUNGEN_BEWERTUNG.md` to document evaluation criteria, scoring logic, and system requirements for dressage and show jumping. - Updated `README.md` with links to new documentation on rider- and horse-specific regulations. - Created database schemas for `TurnierklasseTable`, `RichtverfahrenTable`, `GebuehrTable`, `LicenseTable`, and `RegulationConfigTable`, aligning with ÖTO 2026. - Logged architectural decisions and analysis in `session-logs` and created ADRs `0017-masterdata-importer-worker` and `0019-api-ingestion-layers`. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
+12
-2
@@ -37,7 +37,12 @@ class MasterdataDatabaseConfiguration {
|
||||
ReiterTable,
|
||||
HorseTable,
|
||||
VereinTable,
|
||||
FunktionaerTable
|
||||
FunktionaerTable,
|
||||
TurnierklasseTable,
|
||||
LicenseTable,
|
||||
RichtverfahrenTable,
|
||||
GebuehrTable,
|
||||
RegulationConfigTable
|
||||
)
|
||||
log.info("Masterdata database schema initialized successfully")
|
||||
}
|
||||
@@ -77,7 +82,12 @@ class MasterdataTestDatabaseConfiguration {
|
||||
ReiterTable,
|
||||
HorseTable,
|
||||
VereinTable,
|
||||
FunktionaerTable
|
||||
FunktionaerTable,
|
||||
TurnierklasseTable,
|
||||
LicenseTable,
|
||||
RichtverfahrenTable,
|
||||
GebuehrTable,
|
||||
RegulationConfigTable
|
||||
)
|
||||
log.info("Test masterdata database schema initialized successfully")
|
||||
}
|
||||
|
||||
+148
@@ -0,0 +1,148 @@
|
||||
-- V005: Create Turnierklasse, License, Richtverfahren, Gebuehr, RegulationConfig Tables
|
||||
-- Basierend auf ÖTO 2026 und ADR-0018
|
||||
|
||||
CREATE TABLE IF NOT EXISTS turnierklasse
|
||||
(
|
||||
turnierklasse_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
sparte
|
||||
VARCHAR
|
||||
(
|
||||
20
|
||||
) NOT NULL,
|
||||
code VARCHAR
|
||||
(
|
||||
10
|
||||
) NOT NULL,
|
||||
bezeichnung VARCHAR
|
||||
(
|
||||
100
|
||||
) NOT NULL,
|
||||
max_hoehe INTEGER,
|
||||
aufgaben_niveau VARCHAR
|
||||
(
|
||||
100
|
||||
),
|
||||
valid_from TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
valid_to TIMESTAMP WITH TIME ZONE,
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_turnierklasse_sparte_code ON turnierklasse (sparte, code);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS license_matrix
|
||||
(
|
||||
license_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
sparte
|
||||
VARCHAR
|
||||
(
|
||||
20
|
||||
) NOT NULL,
|
||||
lizenz_klasse VARCHAR
|
||||
(
|
||||
20
|
||||
) NOT NULL,
|
||||
max_turnierklasse_code VARCHAR
|
||||
(
|
||||
10
|
||||
) NOT NULL,
|
||||
valid_from TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
valid_to TIMESTAMP WITH TIME ZONE,
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_license_sparte_klasse ON license_matrix (sparte, lizenz_klasse);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS richtverfahren
|
||||
(
|
||||
richtverfahren_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
sparte
|
||||
VARCHAR
|
||||
(
|
||||
20
|
||||
) NOT NULL,
|
||||
code VARCHAR
|
||||
(
|
||||
10
|
||||
) NOT NULL,
|
||||
bezeichnung VARCHAR
|
||||
(
|
||||
200
|
||||
) NOT NULL,
|
||||
beschreibung TEXT,
|
||||
valid_from TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
valid_to TIMESTAMP WITH TIME ZONE,
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_richtverfahren_sparte_code ON richtverfahren (sparte, code);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS gebuehr
|
||||
(
|
||||
gebuehr_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
bezeichnung
|
||||
VARCHAR
|
||||
(
|
||||
200
|
||||
) NOT NULL,
|
||||
typ VARCHAR
|
||||
(
|
||||
50
|
||||
) NOT NULL,
|
||||
betrag DECIMAL
|
||||
(
|
||||
10,
|
||||
2
|
||||
) NOT NULL,
|
||||
waehrung VARCHAR
|
||||
(
|
||||
3
|
||||
) NOT NULL DEFAULT 'EUR',
|
||||
valid_from TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
valid_to TIMESTAMP WITH TIME ZONE,
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS regulation_config
|
||||
(
|
||||
config_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
config_key
|
||||
VARCHAR
|
||||
(
|
||||
100
|
||||
) NOT NULL,
|
||||
config_value TEXT NOT NULL,
|
||||
beschreibung VARCHAR
|
||||
(
|
||||
255
|
||||
),
|
||||
valid_from TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
valid_to TIMESTAMP WITH TIME ZONE,
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_regulation_config_key ON regulation_config (config_key);
|
||||
+248
@@ -0,0 +1,248 @@
|
||||
-- V006: Missing Core Masterdata Tables (Reiter, Horse, Verein, Funktionaer)
|
||||
-- Diese Tabellen wurden in V1 (Initial) teilweise unter anderen Namen angelegt (dom_verein, dom_person).
|
||||
-- Um konsistent mit den Exposed-Tabellen (ReiterTable, HorseTable, etc.) zu sein, legen wir sie hier final an.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS reiter
|
||||
(
|
||||
reiter_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
person_id
|
||||
UUID,
|
||||
satznummer
|
||||
VARCHAR
|
||||
(
|
||||
10
|
||||
) UNIQUE NOT NULL,
|
||||
lizenz_nummer VARCHAR
|
||||
(
|
||||
20
|
||||
),
|
||||
lizenz_klasse VARCHAR
|
||||
(
|
||||
20
|
||||
) NOT NULL,
|
||||
startkart_aktiv BOOLEAN NOT NULL DEFAULT false,
|
||||
startkart_saison INTEGER,
|
||||
fei_id VARCHAR
|
||||
(
|
||||
20
|
||||
),
|
||||
nation VARCHAR
|
||||
(
|
||||
3
|
||||
),
|
||||
nachname VARCHAR
|
||||
(
|
||||
100
|
||||
) NOT NULL,
|
||||
vorname VARCHAR
|
||||
(
|
||||
100
|
||||
) NOT NULL,
|
||||
geburtsdatum DATE,
|
||||
vereins_nummer VARCHAR
|
||||
(
|
||||
10
|
||||
),
|
||||
vereins_name VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
ist_gastreiter BOOLEAN NOT NULL DEFAULT false,
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
daten_quelle VARCHAR
|
||||
(
|
||||
50
|
||||
) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_reiter_satznummer ON reiter (satznummer);
|
||||
CREATE INDEX idx_reiter_name ON reiter (nachname, vorname);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS horse
|
||||
(
|
||||
horse_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
pferde_name
|
||||
VARCHAR
|
||||
(
|
||||
200
|
||||
) NOT NULL,
|
||||
geschlecht VARCHAR
|
||||
(
|
||||
20
|
||||
) NOT NULL,
|
||||
geburtsdatum DATE,
|
||||
rasse VARCHAR
|
||||
(
|
||||
100
|
||||
),
|
||||
farbe VARCHAR
|
||||
(
|
||||
100
|
||||
),
|
||||
besitzer_id UUID,
|
||||
verantwortliche_person_id UUID,
|
||||
zuechter_name VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
zuchtbuch_nummer VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
lebensnummer VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
chip_nummer VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
pass_nummer VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
oeps_nummer VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
fei_nummer VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
vater_name VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
mutter_name VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
mutter_vater_name VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
stockmass INTEGER,
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
bemerkungen TEXT,
|
||||
daten_quelle VARCHAR
|
||||
(
|
||||
50
|
||||
) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX idx_horse_lebensnummer ON horse (lebensnummer);
|
||||
CREATE INDEX idx_horse_name ON horse (pferde_name);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS verein
|
||||
(
|
||||
verein_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
vereins_nummer
|
||||
VARCHAR
|
||||
(
|
||||
10
|
||||
) UNIQUE NOT NULL,
|
||||
name VARCHAR
|
||||
(
|
||||
200
|
||||
) NOT NULL,
|
||||
kurzname VARCHAR
|
||||
(
|
||||
100
|
||||
),
|
||||
bundesland VARCHAR
|
||||
(
|
||||
100
|
||||
),
|
||||
ort VARCHAR
|
||||
(
|
||||
100
|
||||
),
|
||||
plz VARCHAR
|
||||
(
|
||||
10
|
||||
),
|
||||
strasse VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
email VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
telefon VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
website VARCHAR
|
||||
(
|
||||
255
|
||||
),
|
||||
oeps_region_nummer VARCHAR
|
||||
(
|
||||
10
|
||||
),
|
||||
ist_veranstalter BOOLEAN NOT NULL DEFAULT false,
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
bemerkungen TEXT,
|
||||
daten_quelle VARCHAR
|
||||
(
|
||||
50
|
||||
) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS funktionaer
|
||||
(
|
||||
funktionaer_id
|
||||
UUID
|
||||
PRIMARY
|
||||
KEY,
|
||||
richter_nummer
|
||||
VARCHAR
|
||||
(
|
||||
10
|
||||
) UNIQUE,
|
||||
vorname VARCHAR
|
||||
(
|
||||
100
|
||||
) NOT NULL,
|
||||
nachname VARCHAR
|
||||
(
|
||||
100
|
||||
) NOT NULL,
|
||||
geburtsdatum DATE,
|
||||
email VARCHAR
|
||||
(
|
||||
200
|
||||
),
|
||||
telefon VARCHAR
|
||||
(
|
||||
50
|
||||
),
|
||||
vereins_nummer VARCHAR
|
||||
(
|
||||
10
|
||||
),
|
||||
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
|
||||
bemerkungen TEXT,
|
||||
daten_quelle VARCHAR
|
||||
(
|
||||
50
|
||||
) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
Reference in New Issue
Block a user