feat: integrate new desktop shell and extend backend & ADRs

- Added `meldestelle-desktop` module using JVM/Compose Desktop, registered in `settings.gradle.kts`.
- Integrated new screens and desktop navigation into core: `Veranstaltungen`, `TurnierDetail`, etc.
- Expanded backend with `ExposedFunktionaerRepository` in `officials-infrastructure`.
- Completed ADRs for bounded context mapping (`ADR-0014`) and context map (`ADR-0015`).
- Updated and extended project documentation with session logs and architecture decisions.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-03-24 18:22:15 +01:00
parent c624df8744
commit 354bd49de6
75 changed files with 7616 additions and 48 deletions
@@ -0,0 +1,95 @@
-- Migration V001: Create Vereine (Clubs) table
-- Speichert alle Vereins-Daten inkl. Adresse, Kontakt und OEPS-Regionsnummer.
CREATE TABLE IF NOT EXISTS vereine
(
id
UUID
PRIMARY
KEY
DEFAULT
gen_random_uuid
(
),
vereins_nummer VARCHAR
(
20
) NOT NULL,
name VARCHAR
(
200
) NOT NULL,
kurzname VARCHAR
(
50
),
strasse VARCHAR
(
200
),
plz VARCHAR
(
10
),
ort VARCHAR
(
100
),
bundesland VARCHAR
(
50
),
land VARCHAR
(
50
) DEFAULT 'AT',
email VARCHAR
(
255
),
telefon VARCHAR
(
50
),
webseite VARCHAR
(
255
),
oeps_regions_nummer VARCHAR
(
10
),
ist_aktiv BOOLEAN NOT NULL DEFAULT true,
ist_veranstalter BOOLEAN NOT NULL DEFAULT false,
bemerkungen TEXT,
daten_quelle VARCHAR
(
50
) NOT NULL DEFAULT 'MANUELL',
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-- Unique index für Vereinsnummer
CREATE UNIQUE INDEX IF NOT EXISTS uk_vereine_vereins_nummer ON vereine(vereins_nummer);
-- Performance-Indizes
CREATE INDEX IF NOT EXISTS idx_vereine_name ON vereine(name);
CREATE INDEX IF NOT EXISTS idx_vereine_bundesland ON vereine(bundesland);
CREATE INDEX IF NOT EXISTS idx_vereine_ist_aktiv ON vereine(ist_aktiv);
CREATE INDEX IF NOT EXISTS idx_vereine_ist_veranstalter ON vereine(ist_veranstalter);
CREATE INDEX IF NOT EXISTS idx_vereine_oeps_region ON vereine(oeps_regions_nummer);
-- Dokumentation
COMMENT
ON TABLE vereine IS 'Reitsportvereine gemäß OEPS-Vereinsregister';
COMMENT
ON COLUMN vereine.id IS 'Eindeutige interne ID (UUID)';
COMMENT
ON COLUMN vereine.vereins_nummer IS 'Offizielle OEPS-Vereinsnummer (eindeutig)';
COMMENT
ON COLUMN vereine.oeps_regions_nummer IS 'OEPS-Regionsnummer des Landesverbands';
COMMENT
ON COLUMN vereine.ist_veranstalter IS 'Gibt an ob der Verein als Veranstalter von Turnieren zugelassen ist';
COMMENT
ON COLUMN vereine.daten_quelle IS 'Datenherkunft: MANUELL, IMPORT_ZNS, IMPORT_FEI';