feat(masterdata): add ÖTO seed data, regulation validation tests, and profile module integration

- Introduced ÖTO 2026-compliant seed data (`V008__Seed_OETO_2026_Data.sql`) for tournament classes, license matrix, and age groups.
- Added `RegulationSeedVerificationTest` to validate repository queries and domain eligibility logic.
- Implemented a new `profile-feature` module covering user profile management and ZNS linking.
- Integrated the `profile-feature` into the desktop shell and frontend with Koin DI configuration.
- Extended CHANGELOG, ROADMAP, and architecture documentation to reflect related changes.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-03-30 16:14:08 +02:00
parent 2262826603
commit c5c1e96d25
13 changed files with 682 additions and 10 deletions
@@ -0,0 +1,46 @@
-- V008: Seed OETO 2026 Data (Turnierklassen, Lizenz-Matrix, Altersklassen)
-- Basierend auf ÖTO 2026
-- 1. Turnierklassen (Springen & Dressur)
INSERT INTO turnierklasse (turnierklasse_id, sparte, code, bezeichnung, max_hoehe, aufgaben_niveau)
VALUES
-- Springen
(gen_random_uuid(), 'SPRINGEN', 'E', 'Einsteiger', 95, NULL),
(gen_random_uuid(), 'SPRINGEN', 'A', 'Anfänger', 105, NULL),
(gen_random_uuid(), 'SPRINGEN', 'L', 'Leicht', 115, NULL),
(gen_random_uuid(), 'SPRINGEN', 'LM', 'Leicht-Mittel', 125, NULL),
(gen_random_uuid(), 'SPRINGEN', 'M', 'Mittelschwer', 135, NULL),
(gen_random_uuid(), 'SPRINGEN', 'S', 'Schwer', 150, NULL),
-- Dressur
(gen_random_uuid(), 'DRESSUR', 'E', 'Einsteiger', NULL, 'Aufgabengruppe E'),
(gen_random_uuid(), 'DRESSUR', 'A', 'Anfänger', NULL, 'Aufgabengruppe A'),
(gen_random_uuid(), 'DRESSUR', 'L', 'Leicht', NULL, 'Aufgabengruppe L'),
(gen_random_uuid(), 'DRESSUR', 'LM', 'Leicht-Mittel', NULL, 'Aufgabengruppe LM'),
(gen_random_uuid(), 'DRESSUR', 'LP', 'Leicht-Profi', NULL, 'Aufgabengruppe LP'),
(gen_random_uuid(), 'DRESSUR', 'M', 'Mittelschwer', NULL, 'Aufgabengruppe M'),
(gen_random_uuid(), 'DRESSUR', 'S', 'Schwer', NULL, 'Aufgabengruppe S');
-- 2. Lizenz-Matrix (Springen)
INSERT INTO license_matrix (license_id, sparte, lizenz_klasse, max_turnierklasse_code)
VALUES ('00000000-0000-0000-0001-000000000001', 'SPRINGEN', 'LIZENZFREI', 'E'),
('00000000-0000-0000-0001-000000000002', 'SPRINGEN', 'R1', 'L'),
('00000000-0000-0000-0001-000000000003', 'SPRINGEN', 'R2', 'M'),
('00000000-0000-0000-0001-000000000004', 'SPRINGEN', 'R3', 'S'),
('00000000-0000-0000-0001-000000000005', 'SPRINGEN', 'R4', 'S');
-- 2.1 Lizenz-Matrix (Dressur)
INSERT INTO license_matrix (license_id, sparte, lizenz_klasse, max_turnierklasse_code)
VALUES ('00000000-0000-0000-0002-000000000001', 'DRESSUR', 'LIZENZFREI', 'E'),
('00000000-0000-0000-0002-000000000002', 'DRESSUR', 'RD1', 'L'),
('00000000-0000-0000-0002-000000000003', 'DRESSUR', 'RD2', 'M'),
('00000000-0000-0000-0002-000000000004', 'DRESSUR', 'RD3', 'S'),
('00000000-0000-0000-0002-000000000005', 'DRESSUR', 'RD4', 'S');
-- 3. Altersklassen (Standard ÖTO)
INSERT INTO altersklasse (id, altersklasse_code, bezeichnung, min_alter, max_alter)
VALUES (gen_random_uuid(), 'KINDER', 'Kinder', NULL, 12),
(gen_random_uuid(), 'JGD_U16', 'Jugend U16', 13, 16),
(gen_random_uuid(), 'JUN_U18', 'Junioren U18', 17, 18),
(gen_random_uuid(), 'YR_U21', 'Junge Reiter U21', 19, 21),
(gen_random_uuid(), 'AK', 'Allgemeine Klasse', 22, 39),
(gen_random_uuid(), 'SEN_U45', 'Senioren Ü45', 45, NULL);