Signed-off-by: StefanMoCoAt <stefan.mo.co@gmail.com>
28 KiB
Changelog — Meldestelle
Alle wesentlichen Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
Format basiert auf Keep a Changelog. Versionierung folgt Semantic Versioning.
Versionsschema:
MAJOR.MINOR.PATCH[-QUALIFIER]
MAJOR— Breaking Changes / inkompatible API-ÄnderungenMINOR— Neue Features (abwärtskompatibel)PATCH— Bugfixes (abwärtskompatibel)QUALIFIER—SNAPSHOT(Entwicklung),beta.N(Vorversion), leer = Release
Unreleased
Hinzugefügt
- Onboarding & Desktop-UX - 15.04.2026:
- Desktop-App: Dynamisierung der Statusanzeigen im App-Footer ("Cloud synchronisiert" & "Verbunden").
- Connectivity-Tracking: Implementierung des
ConnectivityTracker(KMP) zur Echtzeit-Überwachung der API-Gateway Erreichbarkeit. - LAN-Erkennung: Integration des
NetworkDiscoveryService(mDNS) im Footer zur Anzeige aktiver Instanzen im lokalen Netzwerk. - Onboarding: Datenfluss vom
SettingsManagerbis in den Footer finalisiert (Anzeige des echten Gerätenamens).
- Online-Nennung & Integration - 15.04.2026:
- Backend (Mail-Service): Finalisierung des
MailControllerfür Web-Nennungen inkl. SMTP-Versand via World4You. - Frontend (Desktop):
NennungsEingangScreenan Live-Daten vommail-serviceangebunden. - Repository:
NennungRemoteRepository(KMP) umholeNennungen()erweitert.
- Backend (Mail-Service): Finalisierung des
- Billing & ÖTO - 15.04.2026:
- Sportförderbeitrag: Automatische Buchung von 1,00 EUR (§16 ÖTO) bei jeder Nennung im
entries-serviceimplementiert.
- Sportförderbeitrag: Automatische Buchung von 1,00 EUR (§16 ÖTO) bei jeder Nennung im
Behoben
- Identity-Modul: Umstellung auf
kotlin.time.Instantzur Vermeidung von Deprecation-Warnungen und Behebung von Persistenz-Konflikten imExposedDeviceRepository. - Koin DI: Korrektur von Typ-Inferenz-Fehlern beim
HttpClientimnennung-featuredurch explizite Qualifier. - Turnier-Feature: Behebung eines unsicheren Casts (
Any!zuList<String>) inTurnierStammdatenTab.kt. - Konfiguration: Harmonisierung der Ports (Mail-Service auf 8083) in
.env,dc-backend.yamlundPlatformConfig.jvm.kt.
Hinzugefügt
- Phase 12 (Abrechnung & Infrastruktur) - 12.04.2026:
- Infrastruktur: Docker-Integration für
billing-service(Port 8087) und API-Gateway Routing vervollständigt. - Service Discovery: Alle relevanten Microservices (
masterdata,events,results,series,billing) sind nun bei Consul registriert. - Frontend Billing:
BillingRepositoryundBillingViewModelauf reale API-Anbindung (Ktor) umgestellt;BillingScreenfunktionalisiert. - Backend (Series): JPA-Entitäten
SerieundSeriePunktimseries-servicestabilisiert und Flyway-Migrationen für das Datenbankschema erstellt. - Fix: Behebung von IDE-Mapping-Warnungen durch explizite
@ColumnNamen in den JPA-Entitäten.
- Infrastruktur: Docker-Integration für
- Backend Fixes - 12.04.2026:
- Infrastruktur: Behebung von Startfehlern im
events-service(DataSource) undmasterdata-service(Consul). - Build: Integration von
results-serviceundseries-serviceinsettings.gradle.kts. - Domain:
SerieundSeriePunktzudata classkonvertiert (copy() Unterstützung).
- Infrastruktur: Behebung von Startfehlern im
- Phase 11 (Ergebniserfassung & Platzierung) - 12.04.2026:
- Backend (Results):
results-serviceum JPA-Entitäten, Repositories und Business-Logik für Platzierungsberechnungen (Wertnote, Zeit, Fehler) ergänzt. - Infrastructure:
dc-backend.yamlundGatewayConfig.ktum den Serviceresults(Port 8088) erweitert. - Frontend Domain:
ErgebnisRepositoryundErgebnis-Modell für Wertnoten, Zeiten und Status erstellt. - Frontend UI:
ErgebnisEditDialogzur schnellen Ergebniserfassung hinzugefügt;TurnierStartlistenTabermöglicht nun Erfassung per Zeilen-Klick. - Frontend UI:
TurnierErgebnislistenTabvervollständigt: Buttons für "Platzierung berechnen" und "Drucken" (PDF) funktionalisiert. - Fix: Kompilierungsprobleme im
TurnierFeatureModuleundScreenPreviews.ktbehoben (fehlendeergebnisRepoParameter).
- Backend (Results):
Hinzugefügt
- Phase 10.4 (Series-Context Vertiefung) - 12.04.2026:
- Backend (Series):
series-serviceum Logik für Streichresultate (ReglementTyp) und Bindungsarten (Reiter-zentriert, Pferde-zentriert, Paar-Bindung) erweitert. - Infrastructure:
dc-backend.yamlundGatewayConfig.ktum den Serviceseries(Port 8089) erweitert. - Frontend Domain:
SeriesRepositoryund Modelle an das neue Ranking-Format (SerieStandEntry) angepasst. - UI:
SeriesScreen.ktüberarbeitet: Zeigt nun Reiter- und Pferde-IDs sowie Fortschritt pro Teilnehmer an. - Dokumentation:
MASTER_ROADMAP.mdaktualisiert (Phase 10 & 11 auf 'Completed' gesetzt).
- Backend (Series):
Hinzugefügt
- Phase 10.3 (Echter Datenverkehr & Infrastruktur) - 12.04.2026:
- Infrastructure: Docker-Services für
masterdata,eventsundzns-importindc-backend.yamlergänzt. - Gateway: API-Gateway Routing für Masterdata (
/api/v1/masterdata) und Events (/api/v1/events) konfiguriert. - Frontend (Vereine):
VereinRepository(Ktor) undVereinViewModelimplementiert für echtes Anlegen von Veranstaltern. - Frontend (Events):
TurnierViewModelan das realeTurnierRepositoryangebunden. - Fix:
verein-featureAbhängigkeiten korrigiert (Network/Ktor). - Fix: Polling-Endpoints im
ZnsImportViewModelan das neue Gateway-Routing angepasst.
- Infrastructure: Docker-Services für
Hinzugefügt
- Phase 10.2 (Masterdata-Editoren & Organisation) - 12.04.2026:
- Frontend:
MasterdataEditDialogs.ktfür die Bearbeitung von Reiter- und Pferdedaten direkt im Turnier-Kontext. - Frontend: Erweiterung des
MasterdataRepositoryum Schreibzugriffe (saveReiter,savePferd). - Frontend: Funktionale Suche für Turnierleiter im
Organisation-Tab viaNennungViewModelund Masterdata-API. - Frontend: State-Management für Stammdaten-Editoren im
NennungViewModel. - Fix: Kompilierungsfehler in
ScreenPreviews.ktbehoben (fehlende Interface-Methoden in Mocks). - Fix (Desktop Shell): Fehlendes
turnierFeatureModuleinmain.ktregistriert und Login-Gate inDesktopApp.ktoptimiert.
- Frontend:
Hinzugefügt
- Phase 10 (Series-Context & Stammdaten) - 11.04.2026:
- Frontend: Stammdaten-Infrastruktur im
turnier-feature(Repositories, DTOs, Domänenmodelle) für Reiter, Pferde, Funktionäre und Vereine. - Frontend:
NennungViewModelzur Steuerung der Suche und Status-Verwaltung von Nennungen. - Frontend: Funktionalisierung des
Nennungen-Tabs (Suche, Echt-Datenanbindung) und Vorbereitung desOrganisation-Tabs. - Frontend:
DefaultMasterdataRepositoryzur Suche in Reitern, Pferden und Funktionären via Backend-API. - Netzwerk: Erweiterung der
ApiRoutesum Endpunkte für Masterdata und Nennungen. - Phase 10 (Series-Context) Vorbereitung:
- Frontend: Neuer
SeriesScreen.ktfür die Verwaltung von Cups und Meisterschaften (konfigurierbare Reglements). - Frontend: Erweiterung des
AdminUebersichtScreen(Cockpit) um KPI-Kacheln mit Direkt-Links zu Cups und Meisterschaften. - Frontend: Integration der Series-Navigation in die Breadcrumbs und das globale Routing (
Meisterschaften,Cups).
- Frontend: Neuer
- Frontend: Stammdaten-Infrastruktur im
- Turnier-Feature Hardening:
- Frontend:
STARTLISTENundERGEBNISLISTENTabs vollständig an dasBewerbViewModelangebunden (Bewerbs-Auswahl mit echten Daten). - Frontend: Implementierung der Starter-Anzeige in der Startliste (LazyColumn).
- Frontend:
Geändert
- Turnier-Feature: Sichtbarkeit von
BewerbViewModel.generateStartliste()aufpublicgeändert, um den Aufruf aus dem Tab zu ermöglichen. - Frontend (Desktop):
ScreenPreviews.ktaktualisiert zur Berücksichtigung der neuen ViewModel-Abhängigkeiten (NennungViewModel,MasterdataRepository).
[Phase 9] - 11.04.2026
- Frontend: Interaktiver Drag & Drop Zeitplan mit automatischem 5-Minuten-Snapping und Konflikt-Visualisierung.
- Frontend: "B-Satz Export (ZNS)" Toolbar-Aktion mit integriertem Vorschau-Dialog.
- Frontend: "Änderungs-Historie" (Audit-Log) Sektion zur Nachverfolgung von Zeitplan-Anpassungen.
- Backend:
audit_logPersistenz und Abfrage-API für manuelle Eingriffe in Bewerbe. - Backend: ZNS B-Satz Export Endpunkt (
/export/zns/b-satz) zur Generierung vonBBEWERBEDatensätzen. - Core:
FixedWidthLineBuilderzur präzisen Generierung von ZNS-konformen Festbreiten-Formaten.
Behoben
- Infrastruktur: Veraltete
newSuspendedTransactioninDatabaseFactory.ktdurch modernesuspendTransaction(Exposed v1) ersetzt. - Frontend (Desktop): Kompilierfehler in
ScreenPreviews.ktbehoben, indem fehlende Interface-Methoden im Mock-Repository implementiert wurden. - Backend (Tests):
JdbcSQLSyntaxErrorExceptionimBewerbeZeitplanIntegrationTestdurch Korrektur des Schema-Setups (Audit-Log Tabelle) gelöst.
Hinzugefügt
- Bugfix: Behebung von Build-Fehlern im
veranstalter-featurenach der Paket-Konsolidierung. - Frontend:
FakeVeranstalterRepositoryincommonMainimplementiert, um saubere KMP-DI zu ermöglichen. - Frontend: Veraltete Imports und Referenzen im
meldestelle-desktopShell und Previews korrigiert. - Architektur: Fachliches Konzept für Zeitplan-Optimierung (Drag & Drop) erstellt (
konzept-zeitplan-optimierung-de.md). - Architektur: Spezifikation des Status-Automaten für Nennungen und Synchronisations-Logik (
status-automat-nennungen-de.md). - Rulebook: Überprüfung und Spezifikation der Parcoursbesichtigung zu Pferd (§43 ÖTO) inkl. 5-Minuten-Puffer-Regel.
- Backend (Entries): Erweiterung der Domain-Modelle
BewerbundAbteilungum Besichtigungs- und Pausen-Konfigurationen. - Backend (Entries): Neues Datenmodell
BesichtigungsBlockfür wettbewerbsübergreifende Parcoursbesichtigungen. - Backend (Entries): API-Endpunkt
PATCH /bewerbe/{id}/zeitplanfür schnelle Zeitplan-Updates implementiert. - Backend (Entries):
StartlistenServiceum ÖTO-konforme Zeitberechnung (Besichtigungs-Puffer, Pausen-Intervalle) erweitert.
Geändert
- Masterdata/Domain: Umbenennungen zur Vereinheitlichung der Terminologie (DE):
MasterdataLicenseRepository→LizenzRepositoryLicenseMatrixService→LizenzMatrixServiceLicenseMatrixServiceImpl→LizenzMatrixServiceImpl- Test:
LicenseMatrixServiceTest→LiznezMatrixServiceTest(exakt nach Vorgabe) - Infrastructure (Exposed):
LicenseTable→LizenzTable
- Docs: Begriff „reit_lizenzen“ → „reiterlizenzen“ in Glossar/UL konsolidiert.
Hinzugefügt
-
Events-Service Bundle: Vollständige Stabilisierung der
eventsServices (Domain, Infrastructure, API, Service).- Domain: Umstellung auf
kotlin.time.Instantzur Vermeidung von Deprecation-Warnungen (Kotlin 2.1.20+) und Harmonisierung mit dem Rulebook-Expert. - Infrastructure: Anpassung an den
org.jetbrains.exposed.v1Namespace und Implementierung von UUID-Konvertierungen zwischenkotlin.uuid.Uuid(Domain) undjava.util.UUID(DB). - API: Refactoring des
VeranstaltungControllerzur direkten Repository-Nutzung (Alignment mitentriesService). - Service-Config: Umstellung auf Flyway-basiertes Tenant-Schema-Management in
EventsDatabaseConfiguration. - Build: Behebung des
shadowJarFehlers inevents-infrastructuredurch Entfernen des unnötigenktorPlugins in der Library-Schicht.
- Domain: Umstellung auf
-
Masterdata: Automatisches Seeding aller Reiterlizenzen (license_matrix) beim Start des
masterdata-serviceviaReiterlizenzenSeeder(idempotent; SPRINGEN: LIZENZFREI,R1–R4; DRESSUR: LIZENZFREI,RD1–RD3). -
ZNS-Import (LIZENZ01.dat): Robuster Lizenz-Tokenizer und Normalizer implementiert.
- Erkennung:
RD1..RD4,R1..R4,S1..S4,D2..D4, KombisR{n}D{m},R{n}S{k},RDS4(rechts-/letztes Vorkommen gewinnt). - Normalisierung:
S*→R*,D*→RD*,RD4→RD3(bis Enum verfügbar),R{n}S{k}→Rmax(n,k),R{n}D{m}→R{n}+RD{m}. - Integration:
ZnsReiterParserfülltlizenzen-Liste (1:n) entsprechend und leitetlizenzKlassebei fehlendem 4‑Spalten‑Code aus Token ab. - QA: Neue Unit-Tests (Tokenizer) für Beispiele
R2S3,R2D4,RD2u. a.; alle Parser-Tests grün.
- Erkennung:
-
Core: Modularisierte ZNS-Parser eingeführt (
ZnsVereinParser,ZnsReiterParser,ZnsPferdParser,ZnsFunktionaerParser) zur Verbesserung der Wartbarkeit und Unterstützung von Einzelimporten. -
Fix: SQL-Migrationsfehler in
V010behoben, indem die Umbenennung der Spaltenameinverein_namedurch einen idempotentenDO-Block abgesichert wurde (behebt "Unable to resolve column 'name'"). -
Infrastructure: Datenbank-Migration
V010hinzugefügt, um das Schema final mit denExposed-Modellen zu synchronisieren. -
Infrastructure: Datei-Archivierung für hochgeladene ZNS-ZIP-Dateien im
ZnsImportOrchestratorimplementiert. -
Infrastructure:
ZnsImportServicevollständig auf die neuen spezialisierten Parser umgestellt und als Spring-Bean im Backend registriert. -
QA: Umfassende Test-Suite
ZnsParserTest.ktmit realen ZNS-Daten (Hämmerle, Neuwirth, etc.) erstellt; Korrektur der Extraktions-Logik für Mitgliedsnummern (Position 147) und Funktionär-Daten (RICHT01). -
QA: Neue Betriebsanleitung für ZNS-Importer Tests erstellt:
docs/07_Infrastructure/runbooks/ZNS_Importer_Test_Manual.md. -
Infrastructure:
MasterdataDatabaseConfigurationkorrigiert: Expliziter Aufruf vonDatabase.connect()hinzugefügt, um Abstürze beim Anwendungsstart ("No database specified") zu beheben. -
Infrastructure:
application.ymlimmasterdata-servicevervollständigt (DataSource-Konfiguration mitpg-user/pg-passwordund Flyway-Aktivierung). -
Domain: Legacy-Spezifikationen für ZNS-Schnittstellen (Import/Export) formalisiert:
docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Pflichtenheft_V2.4.md(Basis-Satzarten A-N)docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md(XML-Erweiterung, LinkID-Logik)
-
QA B-2:
OnboardingValidator-Objekt extrahiert;OnboardingValidatorTest.kt(17 Unit-Tests: Pflichtfeld-Guard, Doppelklick-Schutz, Abbrechen-Reset, rememberSaveable-Regression) -
QA B-3:
AbteilungsRegelServiceTest.ktum 14 Tests erweitert: CSN-C-NEU ≤95 cm / ≥100 cm Pflicht-Teilung, ORGANISATORISCH, SEPARATE_SIEGEREHRUNG, Caprilli-Regression, Grenzfälle 90/110 cm -
Domain:
AbteilungsTeilungsTypEumORGANISATORISCHundSEPARATE_SIEGEREHRUNGerweitert
Behoben
-
Masterdata/Infrastructure: Kompilierfehler in
AltersklasseRepositoryImpldurch Vereinheitlichung der Exposed-Tabellendefinition behoben:AltersklassenTable→AltersklasseTable- Spalte
altersklassen_code→altersklasse_code - Tabellenname
altersklassen→altersklasse
-
Masterdata/API: Fehlendes Interface-Mapping ergänzt:
RegulationRepositoryenthält nunfindAllTurnierklassen();ExposedRegulationRepositoryimplementiert die Methode undRegulationControllerkompiliert wieder. -
ZNS-Import:
AltersklassenExposedRepositorykorrigiert (richtiger Domain-TypAltersklasseDefinition, Mapping vonSparteEund Zeitstempeln). -
Migration V013: Idempotent und robust gemacht. Alle
ALTER TABLE ... RENAME-Operationen laufen nun nur, wenn die Quell-Tabelle existiert (Fix für "Unable to resolve table 'bundesland'/'turnierklasse'"). -
Lizenz-Validierung:
LicenseMatrixServiceImplum Cross-Discipline-Mapping R↔RD (ÖTO-Äquivalenzen) erweitert. Damit funktionieren Fälle wie Dressur-Starts mit Spring-Lizenz (R1→RD1, R2→RD2, R3/R4→RD3) bzw. umgekehrt konsistent. -
Domain: Striktere Spartenlizenz-Prüfung in
Reiter.hasLizenzForSparteimplementiert (RD1..RD3 nur DRESSUR; R1..R4 nur SPRINGEN). Behebt Testfehler „isEligible verweigert Start ohne passende Spartenlizenz“ imLicenseMatrixServiceTest.
Behoben
- Backend (Entries): Fehlschlagenden Unit-Test
berechneStartzeiten sollte Zeiten korrekt aufsummierenkorrigiert; der Test berücksichtigt nun den neuen 5-minütigen ÖTO-konformen Puffer nach der Parcoursbesichtigung (§43). - Frontend (Desktop): Build-Fehler ("No matching variant") beim
funktionaer-featurebehoben; fehlendesbuild.gradle.ktsmit JVM-Target und Compose/Koin-Abhängigkeiten ergänzt. - Frontend (Desktop): Massive Inkonsistenzen in der Paketstruktur des
veranstalter-featurebereinigt; alle Komponenten (ViewModel, Screens, Mocks) auf das Standardpaketat.mocode.frontend.features.veranstalterkonsolidiert, um Redeklarationen und Import-Fehler zu beheben. - Frontend (Desktop): Kompilierfehler im
VeranstalterDetailScreendurch korrekte Paket-Referenzierung desFakeVeranstaltungStoregelöst.
Dokumentation
- Masterdata/Docs:
REITER_LIZENZEN.mdüberarbeitet:- Strikte Sparten-Trennung dokumentiert (RD1..RD3 nur Dressur; R1..R4 nur Springen).
- Dressur-Tabelle korrigiert (R-Lizenzen entfernen; RD-Pflicht je Klasse).
- Validierungslogik ergänzt (2-stufig: Spartenlizenz → Max-Turnierklasse; R↔RD Mapping nur zur Kappung, nicht zur Eligibility).
- Vielseitigkeit (CCN/CCI) ergänzt: kumulative Anforderungen (Dressur RD* UND Springen R* je Klasse); Startkartenregel für Einsteiger.
- Fahren (CAN/CAI) ergänzt: aktueller Systemzustand ohne
F*‑Lizenzen dokumentiert; Teilnahme über Startkarte/Ausschreibung, geplante Enum‑Erweiterung vermerkt. - §15‑Tabelle (kompakt) integriert und auf ÖTO‑Referenz verlinkt; Bedeutungen „B,C“ und „LP“ erläutert. Hinweis aufgenommen, dass
RD4derzeit nicht als Enum vorhanden ist und wieRD3behandelt wird. - Kombinationsreihen gemäß §15 ergänzt:
R1S2,R1S3,R1S4,R2S3,R2S4,R3S4(neuer Unterabschnitt 2.6 mit Tabelle, identische Spalten wie 2.5).
Behoben
-
Masterdata: Qualifikations-Management für Funktionäre (Richter/Parcoursbauer) professionalisiert: Umstellung von unstrukturiertem Text auf offizielle ÖTO/FEI Master-Daten Referenzen (
QualifikationMasterTable). -
Masterdata: Fehlende Tabelle
funktionaer_qualifikationin der Initialisierung beider Services (masterdataundzns-import) ergänzt, umPSQLExceptionwährend des ZNS-Imports zu beheben. -
Infrastructure: Start-Probleme des
masterdata-serviceendgültig behoben: Port-Konflikt zwischen Spring Boot (Management/Actuator) und dem Gateway (8081) durch Umzug auf Port 8086 (gemäß Infrastruktur-Vorgaben) gelöst. -
Infrastructure: Port-Konflikt im
masterdata-servicedurch Trennung der Bind-Adressen (Spring: 127.0.0.1, Ktor: 0.0.0.0) und Bereinigung verwaister Prozesse stabilisiert. -
Core: Veraltete
ZnsLegacyParsersTest.ktentfernt; alle Tests sind nun inZnsParserTest.ktkonsolidiert. -
Domain: Fehlschlagenden
LicenseMatrixServiceTestbehoben; fehlendereiterLizenz-Daten in Test-Reitern ergänzt und Fallback-Logik inLicenseMatrixServiceImplfür spartenübergreifende Lizenzen (z.B. Springlizenz für Dressur-Basis) stabilisiert. -
Infrastructure: Fehlschlagenden
RegulationSeedVerificationTestbehoben; Testdaten an das neue Modell (reiterLizenzFeld) angepasst. -
Infrastructure: Kompilierfehler 'Unresolved reference lizenzKlasse' in
ReiterExposedRepositorybehoben; fehlendes FeldlizenzKlassezuReiterTableund Datenbank-MigrationV010hinzugefügt. -
Onboarding:
remember→rememberSaveablefürgeraetName,sharedKey,znsStatusinOnboardingScreen.kt( Felder gingen bei Zurück-Navigation verloren) -
AbteilungsRegelService: CSN-C-NEU Pflicht-Teilungslogik implementiert (≤95 cm: ohne/mit Lizenz; ≥100 cm: R1/R2+);
SparteE-Import ergänzt -
Desktop-Packaging konfiguriert:
.deb(Linux),.msi(Windows),.dmg(macOS) -
Zentrale Versionsdatei
version.properties(Single Source of Truth für SemVer) -
Automatisches Git-Tagging via CI/CD (
release.ymlGitea Actions Workflow) -
CHANGELOG.mdeingeführt (dieses Dokument)
[1.0.6-SNAPSHOT] — 2026-04-10
Hinzugefügt
- Entries-Domain: Strukturiertes Abteilungs-Warnungssystem gemäß ÖTO § 39 implementiert.
- Neues Value Object
AbteilungsWarnungund EnumAbteilungsWarnungCodeEfür präzise Fehlermeldungen und ÖTO-Referenzen. - Erweiterung von
Bewerbum die MethodevalidateStrukturellesTeilungzur Prüfung vorgeschriebener Abteilungsstrukturen (z.B. Lizenz-Trennung bei CSN-C-NEU, Stilspringen, Caprilli). - Umstellung des
CompetitionWarningServiceundAbteilungsRegelServiceauf das neue strukturierte Warnungsmodell.
- Neues Value Object
- Entries-Service: Erweiterung der REST-API (
BewerbeController) um die Auslieferung von Warnungen in den DTOs (BewerbResponse). - Frontend (Turnier-Feature): Visuelle Integration der Abteilungs-Warnungen in der Bewerbe-Liste.
- Anzeige eines Warn-Icons (gelb) bei Regelverstößen.
- Tooltip-Funktionalität zur Anzeige der detaillierten Warnungstexte und ÖTO-Paragraphen.
- Erweiterung des
BewerbUiModelund Repositories zur Unterstützung der Warnungs-Metadaten.
Geändert
- QA:
AbteilungsRegelServiceTestundBewerbTestauf das neue Warnungssystem aktualisiert und um Tests für strukturelle Teilungen (CSN Stilspringen, Caprilli) erweitert. - KMP: Korrektur von veralteten
Instant-Deprecations in Testklassen (kotlin.time.Instant).
[1.0.5-SNAPSHOT] — 2026-04-06
Geändert
- Masterdata: Bereinigung und Standardisierung von Masterdaten-Tabellen (Mehrzahl-Konvention):
bundesland->bundeslaenderqualifikation_master->funktionaers_qualifikationenreiter_lizenz->reit_lizenzenturnierklasse->turnier_klassen
- Seeding: Umfassende Erweiterung der Seeder für Funktionärs-Qualifikationen, Turnierklassen und Turnier-Sparten gemäß ÖTO.
- Data Modeling: Einführung der Tabelle
turnier_spartenund Entfernung der redundantenreiter_sparte. - Infrastructure: Datenbank-Migration
V013implementiert alle Schema-Änderungen und Umbenennungen.
[1.0.4-SNAPSHOT] — 2026-04-06
Hinzugefügt
- Reiter-Lizenzen: Strukturierte Speicherung von Lizenzen (STARTKARTE, REITERLIZENZ, FAHRLIZENZ) in einer 1:n Relation (
ReiterLizenzTable). - Altersklassen: Einführung von Enums (
ReiterAltersKlasseE) für präzise Filterung und Validierung im Domain-Modell und Parser. - Mitgliedsnummer: Validierungs-Logik gemäß ÖTO-Spezifikation (Bundesland-Präfix 1-9) in
Reiter.ktimplementiert. - ZNS-Import:
ZnsReiterParsererweitert, um Lizenzen und Altersklassen-Enums direkt aus LIZENZ01.DAT zu extrahieren. - Persistenz:
ReiterExposedRepositoryunterstützt nun das transaktionale Speichern und Laden der 1:n Lizenzen.
[1.0.3-SNAPSHOT] — 2026-04-06
Hinzugefügt
- Masterdata: Refactoring der Reiter-Stammdaten (LIZENZ01.DAT). Bundesland, Verein und Nation werden nun über Master-Tabellen referenziert.
- Domain: Validierungslogik für die 8-stellige OEPS-Mitgliedsnummer im
Reiter-Modell implementiert. - Infrastructure: Neue Tabellen
reiter_lizenz(1:n Beziehung) und MigrationV012zur Schemaanpassung und Datenbereinigung eingeführt. - ZNS-Import: Automatisches Auflösen von Relationen (Verein nach Name, Bundesland nach Nummer, Nation nach ISO-Code) während des Reiter-Imports.
Behoben
- Infrastruktur: Consul Health-Check für
masterdata-servicekorrigiert (Port 8086 für Actuator). - Masterdaten:
MasterdataSeederfür Nationen und Bundesländer hinzugefügt, um Datenvollständigkeit nach Volume-Cleanup sicherzustellen. - Datenintegrität: Heilungs-Logik (
fixReiterForeignKeys) implementiert, die Reiter-Datensätze nachträglich mit Masterdaten verknüpft. - Code-Qualität: Redundante
BundeslandTableDefinition inReiterTable.ktentfernt. - Infrastruktur:
BeanDefinitionOverrideExceptionimzns-import-servicedurch Konsolidierung der Repositories inRepositoryConfigurationbehoben. - Service-Discovery: Fehlende Consul-Registrierung des
masterdata-servicedurch Hinzufügen der Discovery-Dependency und Konfiguration behoben. - Build: Kompilierfehler in
BundeslandExposedRepository.ktbehoben (inkonsistente Rückgabetypen imBundeslandRepository-Interface). - Infrastruktur: Fehlendes Autowiring im
zns-import-servicedurch explizite Bean-Definitionen für alle Repositories inZnsImportServiceApplication.ktbehoben. - Domain: Kompilierfehler in
Bundesland.ktbehoben (uninitialisierte EigenschaftbundeslandIdentfernt). - Migration: SQL-Syntaxfehler in
V012behoben (korrekter Fremdschlüssel-Constraint fürreiter_lizenzund Wiederherstellung desDO $$-Blocks).
[1.0.2-SNAPSHOT] — 2026-04-06
Geändert
- ZNS-Import:
ZnsImportServicestabilisiert (ZipInputStream-Management korrigiert), um sequentielle Imports in Tests zu ermöglichen. - Test-Vollständigkeit:
ZnsImportServiceTestkorrigiert (Mocking für Reiter-Suche ergänzt, Testdaten für Funktionäre an Int-Parser angepasst). Alle 9 Tests nun grün. - Data Modeling: Redundante Kontakt- und Adressdaten aus
FunktionaerTableentfernt; stattdessen Verknüpfung zuReiterTableviareiter_idhinzugefügt. (Bereinigung der Felder erfolgte inV010). - Import: ZNS-Importer verknüpft nun Funktionäre automatisch mit vorhandenen Reitern anhand des Namens (Nachname, Vorname).
- Infrastructure:
findByNameinReiterRepositoryimplementiert für effiziente Suche während des Imports. - Datenbank: Migration
V011hinzugefügt, um die Fremdschlüsselbeziehung zu etablieren.
[1.0.1-SNAPSHOT] — 2026-04-05
Geändert
- Masterdata: Funktionär-Datenmodell und API bereinigt und vollständig dokumentiert. Konsistente Verwendung von
satzId(stattsatzID) in allen Schichten (Domain, Infrastructure, API). - Refactoring:
DomVereinzuVerein,DomReiterzuReiter,DomPferdzuPferdundDomFunktionaerzuFunktionaerumbenannt (Domain, Infrastructure, API, Core). - Domain:
personIdist nun optional (nullable) beiVerein,Reiter,PferdundFunktionaer, um ZNS-Initialimporte zu unterstützen. - Infrastructure:
VereinTable,ReiterTable,HorseTableundFunktionaerTablesynchronisiert;personIdist nun optional. - API:
VereinController,ReiterController,HorseControllerundFunktionaerController(DTOs/Requests) an die neuen Modelle angepasst. - Doku:
Ubiquitous_Language.mdundMASTER_ROADMAP.mdan das neue Namensschema (Reiter,Pferd,Funktionaer) angepasst.
Behoben
- ZNS-Import: Kompatibilitätsprobleme in
ZnsLegacyParsersundZnsImportServicenach Domain-Refactorings behoben (UUID-Person-Referenzen und Enum-Synchronisation). - Domain: Felder
kurznameundoepsRegionNummerbeiVereinentfernt (nicht in VEREIN01.DAT vorhanden).
1.0.0-SNAPSHOT — 2026-04-03
Hinzugefügt
- Sprint A: Docker-Compose-Setup, Healthchecks für alle Services
- Sprint B: CI/CD Pipeline für Compose Desktop Tests (headless, Xvfb)
- Sprint B: Gradle-Build-Optimierungen (Cache, Parallel, Wrapper 9.4.0)
- Sprint B: Onboarding-Wizard (Veranstalter, Verein, Turnier, Bewerb, Abteilung)
- Sprint B:
BewerbRepository,AbteilungRepository,DefaultTurnierRepository - Sprint B:
ReiterProfilEditDialog,PferdProfilEditDialogmitMsValidationWrapper - Sprint B: ÖTO-Regelwerk als Regulation-as-Data (Lizenz-/Altersmatrix, V008/V009 Migrations)
- Sprint B: Tenant-Isolation Grundstruktur (Multi-Tenant Postgres-Schemas)
- Sprint B: Architektur-Tests (
:platform:architecture-tests)
Geändert
- Gradle Wrapper auf
9.3.1aktualisiert - JVM-Toolchain auf Java 25 angehoben