16 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
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.
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.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