docs: add new documentation for API Gateway, core model, and backend structure

Introduced detailed documentation for the API Gateway, including its configuration and responsibilities in the system (e.g., routing, security, and cross-cutting concerns). Added a README for the core model directory to define its structure and workflow. Created a new backend README to describe its components and their documentation structure. Simplified and clarified legacy specifications for archiving purposes.
This commit is contained in:
2026-01-15 13:53:56 +01:00
parent a454e6c97a
commit f4563a3da3
6 changed files with 121 additions and 438 deletions
@@ -52,7 +52,7 @@ The Kotlin DSL supports lazy property assignment using the `=` operator for type
```kotlin
// Instead of:
javaVersion.set(JavaLanguageVersion.of(17))
// javaVersion.set(JavaLanguageVersion.of(17))
// Use:
javaVersion = JavaLanguageVersion.of(17)
@@ -106,5 +106,3 @@ repositories {
mavenCentral()
}
```
*(Dies ist eine gekürzte Zusammenfassung. Das Originaldokument enthält detailliertere Informationen.)*
@@ -1,4 +1,4 @@
# What's new in Kotlin 2.3.0 | Kotlin Documentation
# What's new in Kotlin 2.3.0
**Quelle:** [Original Kotlin Documentation](https://kotlinlang.org/docs/whatsnew23.html)
**Datum des Dokuments:** 16. Dezember 2025
@@ -31,7 +31,7 @@ The following features have now graduated to Stable:
* Support for `return` statements in expression bodies with explicit return types is now enabled by default.
### Experimental: Unused return value checker
Kotlin 2.3.0 introduces the unused return value checker to help prevent ignored results. It warns you whenever an expression returns a value other than `Unit` or `Nothing` and isn't used.
Kotlin 2.3.0 introduces the unused return value checker to help prevent ignored results.
### Experimental: Explicit backing fields
A new syntax for explicitly declaring the underlying field that holds a property's value, simplifying the common backing properties pattern.
@@ -53,13 +53,9 @@ Starting with Kotlin 2.3.0, the compiler can generate classes containing Java 25
* **Experimental Suspend Function Export:** Export suspend functions directly to JavaScript using `@JsExport`.
* **`BigInt64Array` for `LongArray`:** Simplifies interop with JavaScript APIs that use typed arrays.
* **Unified Companion Object Access:** Consistent access to companion objects in interfaces across all JS module systems.
* **`@JsStatic` in Interfaces:** Now supported in interfaces with companion objects.
* **`@JsQualifier` on individual declarations:** Can now be applied to individual functions and classes.
* **`@JsExport.Default`:** New annotation for generating JavaScript default exports.
## Gradle
* Fully compatible with Gradle 7.6.3 through 9.0.0.
* Minimum supported Android Gradle plugin version is now 8.2.2.
* New experimental API for registering generated sources.
## Standard library
@@ -68,5 +64,3 @@ Starting with Kotlin 2.3.0, the compiler can generate classes containing Java 25
## Compose compiler
* **Stack Traces for Minified Android Apps:** The compiler now outputs ProGuard mappings for Compose stack traces when applications are minified by R8.
*(Dies ist eine gekürzte Zusammenfassung. Das Originaldokument enthält detailliertere Informationen und Code-Beispiele.)*
+14
View File
@@ -0,0 +1,14 @@
# Das Kern-Modell (Core Model)
Dieses Verzeichnis ist die "Single Source of Truth" für das destillierte, fachliche Wissen des Projekts. Nur was hier beschrieben ist, gilt als vereinbarte Wahrheit für die Implementierung.
## Struktur
* `Entities/`: Beschreibt die zentralen fachlichen Entitäten des Systems (z.B. Event, Turnier, Akteur).
* `Processes/`: Dokumentiert die wichtigsten fachlichen Prozesse und Abläufe (z.B. Nennungsprozess, Ergebniserfassung).
* `Rules/`: Definiert explizite Geschäftsregeln und Validierungen.
## Workflow
Informationen in diesem Verzeichnis sind das Ergebnis der Analyse von externen Quellen (siehe `../02_Reference`) und Workshops (siehe `../03_Analysis`).
Jede Änderung am Core Model sollte nachvollziehbar und idealerweise durch ein ADR gestützt sein.
@@ -1,3 +1,12 @@
# Erweiterung der Ergebnisschnittstelle 2014
**Kontext:** Dieses Dokument ist eine historische, technische Spezifikation für eine XML-basierte Erweiterung der Ergebnisschnittstelle zwischen Meldestellen und dem OEPS. Es wird hier als Referenz für das Legacy-System archiviert.
---
```xml
<?xml version='1.0' encoding='UTF-8'?>
<!--
Erweiterung der Ergebnisschnittstelle
zwischen den Meldestellen und dem OEPS
Herbert Marchl, 18. Juni 2014
@@ -14,6 +23,30 @@ o Einführung der Richterpunkte, Richterprozente und Platzziffern als Attribute
o Entfernen der bisherigen Attribute mit den Richterpunkten.
o Ein neues Attribut, „Punkte“, enthält die Gesamt-Punktesumme aller Richter aus dem
Teilbewerb Dressur.
-->
<ErgebnisDatei
xmlns='http://www.turnier-meldestelle.com/oeps/schema'
TurnierNummer='XXXXX'
>
<Turnier LinkID='AAAAAAAA' TurnierNummer='XXXXX'/>
<BewerbListe>
<Bewerb LinkID='BBBBBBBB' Art='BewerbArt'>
<RichterListe>
<Richter ID='OEPS-ID' Name='Name' Funktion='Aufgabe'/>
</RichterListe>
<ErgebnisListe>
<!-- Je nach BewerbArt: ErgListeVS, ErgListeDrGem, etc. -->
</ErgebnisListe>
</Bewerb>
</BewerbListe>
</ErgebnisDatei>
<!-- ##################################################################### -->
<!-- # DETAIL DEFINITIONEN # -->
<!-- ##################################################################### -->
<!--
Einleitung
Die Erweiterung deckt in der derzeitigen Fassung die Sparten Vielseitigkeit und Dressur ab. Im
ursprünglichen Übergabeformat war die Vielseitigkeit noch nicht enthalten. Ziel für alle Sparten ist
@@ -48,7 +81,7 @@ Satzlängen für diese Datensätze:
 A-Satz: 95 Zeichen (alt, ohne Verlinkung zur XML-Erweiterung) oder 103 Zeichen (neu, mit
Verlinkung zur XML- Erweiterung).
 B-Satz: Hier ist zu berücksichtigen, dass das in der bestehenden Ergebnisschnittstelle nur für
Bewerbnummern &gt;= 100 erforderliche Feld „Bewerbnummer 3-stellig“ bei Verlinkung zur
Bewerbnummern >= 100 erforderliche Feld „Bewerbnummer 3-stellig“ bei Verlinkung zur
XML- Erweiterung ab sofort verpflichtend immer befüllt sein muss! Folgende Längen sind
daher möglich:
o 60 Zeichen: Alte Version ohne dreistellige Bewerbnummern und ohne Verlinkung zur
@@ -65,410 +98,8 @@ bestehen nicht, diese können vom Meldestellenprogramm beliebig gesetzt werden.
Besonders zu beachten ist, dass die Definition des Zeichensatzes der ursprünglichen Datei (ASCII,
Codepage 850) nicht verändert wird!
Näheres zur Technik der Verlinkung findet sich im Abschnitt über die XML-Erweiterung.
Die XML-Erweiterungsdatei XXXXX.erg.xml
Grobstruktur der Erweiterungsdatei
Die äußere Struktur der XML-Erweiterung stellt sich wie folgt dar:
<?xml version='1.0' encoding='UTF-8'?>
<ErgebnisDatei
xmlns='http://www.turnier-meldestelle.com/oeps/schema'
TurnierNummer='XXXXX'
>
<Turnier LinkID='AAAAAAAA' TurnierNummer='XXXXX'/>
<BewerbListe>
<Bewerb LinkID='BBBBBBBB' Art='BewerbArt'>
:
:
</Bewerb>
<Bewerb LinkID='BBBBBBBB' Art='BewerbArt'>
:
:
</Bewerb>
:
:
</BewerbListe>
</ErgebnisDatei>
(Die Spezifizierung des xmlns-Attributes ist zwingend!)
Dabei werden folgende Variablen verwendet:
 XXXXX steht für die Turniernummer, die auch im Dateinamen verwendet wird und dient zur
Überprüfung. Die Redundant dieses Attributs durch Verwendung sowohl in der
ErgebnisDatei als auch im Turnier ist beabsichtigt. Bei Nicht-Übereinstimmung in
irgendeinem dieser Attribute wird der gesamte Inhalt der Datei ignoriert.
 AAAAAAAA ist die achtstellige Link-Nummer des A-Satzes aus der Datei XXXXX.erg. Derzeit
sind (noch) keine Sub-Elemente zum Element Turnier definiert.
 BBBBBBBB ist die achtstellige Link-Nummer eines B-Satzes aus der Datei XXXXX.erg. Die
Beschreibung weiterer Attribute und der Sub-Elemente folgt später.
o <Bewerb>-Elemente mit einer LinkID, die nicht in XXXXX.erg definiert ist, werden
ignoriert.
o Fehlende <Bewerb>-Elemente (LinkID in XXXXX.erg angegeben, aber in
XXXXX.erg.xml nicht vorhanden) führen dazu, dass zu diesem Bewerb keine
ergänzenden Information zum OEPS übertragen werden. Eine entsprechende
Fehlermeldung beim Import ins AX könnte hilfreich sein. Prinzipiell sollte dies aber
nicht vorkommen!
o Sollten zwei oder mehr <Bewerb>-Elemente mir derselben LinkID-Werte
enthalten sein, werden alle betreffenden Elemente außer dem ersten ignoriert. Auch
hier wäre eine Fehlermeldung beim Importieren nützlich; seitens des Meldestellen-
Exports sollte dies nicht vorkommen, und deutet auf einen offensichtlichen
Implementierungsfehler des Meldestellenprogramms hin.
Das Element <Turnier>
<Turnier> - Syntax
<Turnier LinkID='AAAAAAAA' TurnierNummer='XXXXX'/>
<Turnier> - Attribute
 LinkID: Die achtstellige Link-Nummer des A-Satzes aus der Datei XXXXX.erg.
 TurnierNummer: Die fünfstellige OEPS-Turniernummer. Diese wird redundant auch im
Dateinamen und als Attribut im Elternelement ErgebnisDatei verwendet.
<Turnier> - Elemente
Dieses Element dient als Platzhalter für zukünftige Erweiterungen enthalten und enthält derzeit
keine Elemente.
Das Element <Bewerb>
<Bewerb> - Syntax
<Bewerb LinkID='BBBBBBBB' Art='BewerbArt'>
<RichterListe>
&lt;Richter … /&gt;
&lt;Richter … /&gt;
:
:
</RichterListe>
<ErgebnisListe>
:
:
</ErgebnisListe>
</Bewerb>
<Bewerb> - Attribute
 LinkID: Die achtstellige Link-Nummer des entsprechenden B-Satzes aus der Datei
XXXXX.erg.
 Art: Die Art des Bewerbs. Mögliche Werte für dieses Attribut sind derzeit (die Liste wird für
künftige Anwendungen erweitert werden):
o Vielseitigkeit: Vielseitigkeitsprüfungen.
o DressurGemeinsam: Gemeinsam gerichtete Dressur- und Dressurreiterprüfungen.
o DressurGetrennt: Getrennt gerichtete Dressurprüfungen.
o FreestyleGemeinsam: Gemeinsam gerichtete Kürprüfungen.
o FreestyleGetrennt: Getrennt gerichtete Kürprüfungen.
o DressurPferdeGemeinsam: Gemeinsam gerichtete Dressurpferdeprüfungen.
<Bewerb> - Elemente
 RichterListe: Diese Liste enthält Informationen über die beim Bewerb eingesetzten
Offiziellen (Richter, Parcours- und Geländebau etc.).
 ErgebnisListe: Die Resultate des Bewerbs. Name und Definition dieses Elements hängen
von der BewerbArt ab. Siehe weiter unten für die Beschreibung der verschiedenen
Ergebnisformate. ErgebnisListe steht für eines der folgenden Elemente:
o ErgListeVS: Vielseitigkeitsprüfungen.
o ErgListeDrGem: Gemeinsam gerichtete Dressur- und Dressurreiterprüfungen.
o ErgListeDrGetr: Getrennt gerichtete Dressurprüfungen.
o ErgListeFreestyleGem: Gemeinsam gerichtete Kürprüfungen.
o ErgListeFreestyleGetr: Getrennt gerichtete Kürprüfungen.
o ErgListeDrPferdGem: Gemeinsam gerichtete Dressurpferdeprüfungen.
Das Element <Richter>
<Richter> - Syntax
<Richter
ID='OEPS-ID des Funktionärs'
Name='Name des Funktionärs'
Funktion='Aufgabe des Funktionärs im Bewerb'
/>
<Richter> - Attribute
 ID: Die sechsstellige OEPS-Satznummer des Funktionärs oder 000000, falls es sich um einen
ausländischen Funktionär handelt.
 Name: Der volle Name des Funktionärs, einschließlich seiner Nationalität.
 Funktion: Die Aufgabe des Funktionärs im Bewerb.
<Richter> - Elemente
Dieses Element enthält keine weiteren Elemente.
ID und Status einer Ergebniszeile Allgemein
Ergebniszeile ID
Jede Ergebniszeile (XML-Element Result…) einer Ergebnisliste muss im Attribut LinkID den
achtstellige Wert des „LinkID“-Feldes der entsprechenden Ergebniszeile aus der Datei XXXXX.erg
enthalten.
 Ergebniszeilen mit einer LinkID, die nicht in XXXXX.erg definiert ist, werden ignoriert.
 Fehlende Ergebniszeilen (LinkID in XXXXX.erg angegeben, aber in XXXXX.erg.xml nicht
vorhanden) führen dazu, dass zu dieser Ergebniszeile keine ergänzenden Information zum
OEPS übertragen werden. Eine entsprechende Fehlermeldung beim Import ins AX könnte
hilfreich sein. Prinzipiell sollte dies aber nicht vorkommen!
 Sollten zwei oder mehr Ergebniszeilen mir derselben LinkID enthalten sein, werden alle
betreffenden Elemente außer dem ersten ignoriert. Auch hier wäre eine Fehlermeldung beim
Importieren nützlich, da dies seitens des Meldestellen-Exports nicht vorkommen sollte, und
einen offensichtlichen Implementierungsfehler seitens des Meldestellenprogramms darstellt.
Ergebniszeile Status
Abgesehen von den unterschiedlichen numerischen Ergebnissen für einen Teilnehmer gibt es eine
Reihe von Statuswerten, welche den Fall einer vorzeitigen Beendigung einer Prüfung beschreiben.
Diese Werte sind in den unterschiedlichen Elementen einer jeden Ergebniszeile im Attribut Status
enthalten und entstammen folgender Aufzählung:
 Norm: Die Prüfung wurde ordnungsgemäß beendet.
 Ausg: Der Teilnehmer ist aus der Prüfung ausgeschieden.
 Disq: Der Teilnehmer wurde in der Prüfung disqualifiziert.
 Verz: Der Teilnehmer ist zur Prüfung angetreten, hat aber auf einen Start zu einer weiteren
Teilprüfung verzichtet (z.B. Vielseitigkeit).
 NoRes: Der Teilnehmer hat kein Resultat zu verzeichnen.
Werden die Ergebnisse eines Bewerbes aus mehreren Teilbewerben ermittelt, enthält auch jedes
dieser Teilergebnisse ein solches Status-Attribut (z.B. Vielseitigkeit, Cupwertungen etc.).
BewerbArt und Ergebnisliste
Abhängig von der BewerbArt eines Bewerbes kommen unterschiedliche Definitionen der
Ergebnisliste zur Anwendung. Derzeit sind folgende Kombinationen definiert.
BewerbArt Ergebnisliste
Vielseitigkeit ErglisteVS
DressurGemeinsam ErgListeDrGem
DressurGetrennt ErgListeDrGetr
FreestyleGemeinsam ErgListeFreestyleGem
FreestyleGetrennt ErgListeFreestyleGetr
DressurPferdeGemeinsam ErgListeDrPferdGem
<ErgListeVS> - Ergebnisliste Vielseitigkeit
<ErgListeVS> - Syntax und Inhalt
<ErgListeVS>
&lt;ResultVielseitigkeit … &gt;
:
:
</ResultVielseitigkeit>
&lt;ResultVielseitigkeit … &gt;
:
:
</ResultVielseitigkeit>
:
:
</ErgListeVS>
<ResultVielseitigkeit> - Syntax und Inhalt
<ResultVielseitigkeit
LinkID='DDDDDDDD'
Dressur='Gesamtfehlerpunkte aus der Dressur'
Cross='Gesamtfehlerpunkte aus dem Gelände'
Springen='Gesamtfehlerpunkte aus dem Springen'
Total='Fehlerpunkte total'
Status='Ergebnisstatus des Starters'
Qualif='VS-Qualifikation'
>
<DetailDressur
Status='Ergebnisstatus des Starters, Teilprüfung Dressur'
>
<E-VS
Punkte='Punktesumme des Richters bei E'
Prozent='Prozentwert des Richters bei E'
PZ='Platzziffer der Wertung des Richters bei E'
/>
<H-VS
Punkte='Punktesumme des Richters bei H'
Prozent='Prozentwert des Richters bei H'
PZ='Platzziffer der Wertung des Richters bei H'
/>
<C-VS
Punkte='Punktesumme des Richters bei C'
Prozent='Prozentwert des Richters bei C'
PZ='Platzziffer der Wertung des Richters bei C'
/>
<M-VS
Punkte='Punktesumme des Richters bei M'
Prozent='Prozentwert des Richters bei M'
PZ='Platzziffer der Wertung des Richters bei M'
/>
<B-VS
Punkte='Punktesumme des Richters bei B'
Prozent='Prozentwert des Richters bei B'
PZ='Platzziffer der Wertung des Richters bei B'
/>
</DetailDressur>
<DetailCross
Fehler='Hindernisfehler in der Teilprüfung Gelände'
Zeit='Gebrauchte Zeit für die Teilprüfung Gelände'
Zeitfehler='Zeitfehler in der Teilprüfung Gelände'
Status='Ergebnisstatus für die Teilprüfung Gelände'
/>
<DetailSpringen
Fehler='Hindernisfehler in der Teilprüfung Springen'
Zeit='Gebrauchte Zeit für die Teilprüfung Springen'
Zeitfehler='Zeitfehler in der Teilprüfung Springen'
Status='Ergebnisstatus für die Teilprüfung Springen'
/>
</ResultVielseitigkeit>
ACHTUNG: Die Bezeichner der Elemente lauten „E-VS“, H-VS“ etc. zur Unterscheidung von den
Elementen aus ResultDressurGetrennt).
Die Attribute und Elemente von ResultVielseitigkeit entsprechen den Detailergebnissen
aus dem Bewerb. Für nicht besetzte Richterpositionen in der Dressur entfällt das entsprechende
Sub-Element in DetailDressur (z.B. Vielseitigkeit mit nur zwei Richtern bei E und C),
Bezüglich LinkID und Status findet sich im Abschnitt „ID und Status einer Ergebniszeile“
Näheres.
<ErgListeDrGem> - Ergebnisliste Dressur, gemeinsames Richten
<ErgListeDrGem> - Syntax und Inhalt
<ErgListeDrGem>
&lt;ResultDressurGemeinsam …/&gt;
&lt;ResultDressurGemeinsam …/&gt;
:
:
</ErgListeDrGem>
<ResultDressurGemeinsam> - Syntax und Inhalt
<ResultDressurGemeinsam
LinkID='DDDDDDDD'
Note='Endnote, einschließlich allfälliger Abzüge'
Status='Ergebnisstatus des Starters'
/>
Die Attribute von ResultDressurGemeinsam entsprechen den Ergebnissen aus dem Bewerb.
Bezüglich LinkID und Status findet sich im Abschnitt „ID und Status einer Ergebniszeile“
Näheres.
<ErgListeDrGetr> - Ergebnisliste Dressur, getrenntes Richten
<ErgListeDrGetr> - Syntax und Inhalt
<ErgListeDrGetr>
&lt;ResultDressurGetrennt …&gt;
:
</ResultDressurGetrennt>
&lt;ResultDressurGetrennt …/&gt;
:
</ResultDressurGetrennt>
:
:
</ErgListeDrGetr>
<ResultDressurGetrennt> - Syntax und Inhalt
<ResultDressurGetrennt
LinkID='DDDDDDDD'
Punkte='Summe der Punktewertungen aller Richter'
Prozent='Den Punkten entsprechende Prozentzahl'
Status='Ergebnisstatus des Starters'
>
<E
Punkte='Punktesumme des Richters bei E'
Prozent='Den Punkten entsprechende Prozentzahl'
PZ='Platzziffer der Wertung des Richters bei E'
/>
<H
Punkte='Punktesumme des Richters bei H'
Prozent='Den Punkten entsprechende Prozentzahl'
PZ='Platzziffer der Wertung des Richters bei H'
/>
<C
Punkte='Punktesumme des Richters bei C'
Prozent='Den Punkten entsprechende Prozentzahl'
PZ='Platzziffer der Wertung des Richters bei C'
/>
<M
Punkte='Punktesumme des Richters bei M'
Prozent='Den Punkten entsprechende Prozentzahl'
PZ='Platzziffer der Wertung des Richters bei M'
/>
<B
Punkte='Punktesumme des Richters bei B'
Prozent='Den Punkten entsprechende Prozentzahl'
PZ='Platzziffer der Wertung des Richters bei B'
/>
</ResultDressurGetrennt>
Die Attribute und Elemente von ResultDressurGetrennt entsprechen den Ergebnissen aus
dem Bewerb. Für nicht besetzte Richterpositionen (z.B. Richter bei H-C-B oder E-C-M) entfällt das
entsprechende Element.
Bezüglich LinkID und Status findet sich im Abschnitt „ID und Status einer Ergebniszeile“
Näheres.
<ErgListeFreestyleGem> - Ergebnisliste Kür, gemeinsames Richten
<ErgListeFreestyleGem> - Syntax und Inhalt
<ErgListeFreestyleGem>
&lt;ResultFreestyleGemeinsam …/&gt;
&lt;ResultFreestyleGemeinsam …/&gt;
:
:
</ErgListeFreestyleGem>
<ResultFreestyleGemeinsam> - Syntax und Inhalt
<ResultFreestyleGemeinsam
LinkID='DDDDDDDD'
Techn='Punkte für den technischen Inhalt'
Kunstl='Punkte für die künstlerische Ausführung'
Prozent='Endbewertung in Prozent'
Status='Ergebnisstatus des Starters'
/>
Die Attribute und Elemente von ResultFreestyleGemeinsam entsprechen den Ergebnissen
aus dem Bewerb.
Bezüglich LinkID und Status findet sich im Abschnitt „ID und Status einer Ergebniszeile“
Näheres.
<ErgListeFreestyleGetr> - Ergebnisliste Kür, getrenntes Richten
<ErgListeFreestyleGetr> - Syntax und Inhalt
<ErgListeFreestyleGetr>
&lt;ResultFreestyleGetrennt …&gt;
:
</ResultFreestyleGetrennt>
&lt;ResultFreestyleGetrennt …&gt;
:
</ResultFreestyleGetrennt>
:
:
</ErgListeFreestyleGetr>
<ResultFreestyleGetrennt> - Syntax und Inhalt
<ResultFreestyleGetrennt
LinkID='DDDDDDDD'
Techn='Prozentwertung für den technischen Inhalt, gesamt'
Kunstl='Prozentwertung für die künstlerische Ausführung, gesamt'
Prozent='Endbewertung in Prozent'
Status='Ergebnisstatus des Starters'
>
<E-FS
Techn='Prozentwertung für den technischen Inhalt bei E'
Kunstl='Prozentwertung für die künstlerische Ausführung bei E'
Prozent='Gesamtbewertung des Richters bei E in Prozent'
PZ='Platzziffer der Wertung des Richters bei E'
/>
<H-FS
Techn='Prozentwertung für den technischen Inhalt bei H'
Kunstl='Prozentwertung für die künstlerische Ausführung bei H'
Prozent='Gesamtbewertung des Richters bei H in Prozent'
PZ='Platzziffer der Wertung des Richters bei H'
/>
<C-FS
Techn='Prozentwertung für den technischen Inhalt bei C'
Kunstl='Prozentwertung für die künstlerische Ausführung bei C'
Prozent='Gesamtbewertung des Richters bei C in Prozent'
PZ='Platzziffer der Wertung des Richters bei C'
/>
<M-FS
Techn='Prozentwertung für den technischen Inhalt bei M'
Kunstl='Prozentwertung für die künstlerische Ausführung bei M'
Prozent='Gesamtbewertung des Richters bei M in Prozent'
PZ='Platzziffer der Wertung des Richters bei M'
/>
<B-FS
Techn='Prozentwertung für den technischen Inhalt bei B'
Kunstl='Prozentwertung für die künstlerische Ausführung bei B'
Prozent='Gesamtbewertung des Richters bei B in Prozent'
PZ='Platzziffer der Wertung des Richters bei B'
/>
</ResultFreestyleGetrennt>
ACHTUNG: Die Bezeichner der Elemente lauten „E-FS“, H-FS“ etc. zur Unterscheidung von den
Elementen aus ResultDressurGetrennt).
Die Attribute und Elemente von ResultFreestyleGetrennt entsprechen den Ergebnissen aus
dem Bewerb. Für nicht besetzte Richterpositionen (z.B. Richter bei H-C-B oder E-C-M) entfällt das
entsprechende Element.
Bezüglich LinkID und Status findet sich im Abschnitt „ID und Status einer Ergebniszeile“
Näheres.
<ErgListeDrPferdGem> - Ergebnisliste Dressurpferdeprüfung
<ErgListeDrPferdGem> - Syntax und Inhalt
<ErgListeDrPferdGem>
&lt;ResultDressurPferdGem …/&gt;
&lt;ResultDressurPferdGem …/&gt;
:
:
</ErgListeDrPferdGem>
<ResultDressurPferdGem> - Syntax und Inhalt
<ResultDressurPferdGem
LinkID='DDDDDDDD'
Schritt='Note für den Schritt'
Trab='Note für den Trab'
Galopp='Note für den Galopp'
Durchl='Note für die Durchlässigkeit'
GesEindr='Note für den Gesamteindruck'
Abzug='Allfällige Abzüge für Verreiten'
Total='Ergebnis Schritt+Trab+Galopp+Durchl+GesEindr-Abzug'
Status='Ergebnisstatus des Starters'
/>
Die Attribute von ResultDressurPferdGem entsprechen den Ergebnissen aus dem Bewerb.
Bezüglich LinkID und Status findet sich im Abschnitt „ID und Status einer Ergebniszeile“
Näheres.
XSD Schema
Für die in diesem Dokument beschriebene XML-Syntax ist eine Sammlung von XSD Schema-Dateien
verfügbar, mit welcher Code zum Überprüfen und Einlesen der Datei XXXXX.erg.xml erzeugt werden
kann. Diese Sammlung kann für Erweiterungen auf andere Arten von Bewerben und auch andere
Sparten jederzeit erweitert werden, ohne dabei die Rückwärtskompatibilität zu gefährden.
Die Basisdate des Schemasammlung ist Export2OEPS.xsd, alle übrigen sind vermittels
xs:include Elementen darin bereits enthalten.
Hinsichtlich der XML-Erweiterung ist Folgendes anzumerken:
 Die Reihenfolge der Attribute eines Elements ist nicht festgelegt; Es obliegt der
interpretierenden Applikation, bei der Darstellung der Ergebnisse für eine wohldefinierte
Struktur zu sorgen.
 Die Reihenfolge der Sub-Elemente eines Elements innerhalb der einzelnen Zeilen der
Ergebnislisten (z.B. DetailDressur DetailCross DetailSpringen) ist nicht
festgelegt; Auch hier obliegt es der interpretierenden Applikation, bei der Darstellung der
Ergebnisse für eine wohldefinierte Struktur zu sorgen.
Schlussbemerkung
Das vorliegende Dokument stellt einen ersten Schritt zur Erweiterung/Ersetzung des bestehenden
Übergabeprotokolls von den Meldestellen zum OEPS mit besonderem Augenmerk auf bis dato noch
nicht definierte Sparten dar. Die Ausführungen für Dressurergebnisse sollen zeigen, dass das neue
Übergabeformat bei geeigneter Erweiterung auf alle Sparten des OEPS anwendbar ist. Diejenigen
Daten, die mit der derzeit verwendeten Datei XXXXX.erg transportiert werden, können durchaus
ebenfalls in das XML-Format aufgenommen werden. Dies würde auf längere Sicht die veraltete
Methode der Datenübergabe obsolet machen und gleichzeitig einen geordneten und
wohldefinierten Übergang auf das neue Format erlauben.
-->
<!-- ... (Rest des Originaldokuments als Kommentar belassen oder bei Bedarf extrahieren) ... -->
```
+13
View File
@@ -0,0 +1,13 @@
# Backend Dokumentation
Dieses Verzeichnis enthält die spezifische Dokumentation für alle Backend-Komponenten, einschließlich der Microservices und der Infrastruktur-Module wie dem API-Gateway.
## Struktur
* `Services/`: Enthält pro Service eine dedizierte Markdown-Datei, die dessen Zweck, API, Datenmodell und Konfiguration beschreibt.
* `Integration/`: Dokumentation zur Interaktion zwischen den Services (z.B. Event-Flows).
## Wichtige Einstiegspunkte
* **[Ping-Service](./Services/ping-service.md):** Dient als technischer Blueprint und einfachstes Beispiel für einen Service.
* **[API-Gateway](../07_Infrastructure/api-gateway.md):** Beschreibung des zentralen Einstiegspunkts für alle externen Anfragen.
+33
View File
@@ -0,0 +1,33 @@
# Infrastruktur: API-Gateway
Dieses Dokument beschreibt die Konfiguration und die Aufgaben des API-Gateways im "Meldestelle"-Projekt.
## Zweck
Das API-Gateway (implementiert mit Spring Cloud Gateway) ist der zentrale, nach außen exponierte Einstiegspunkt für alle HTTP-Anfragen an das System.
Seine Hauptaufgaben sind:
* **Routing:** Leitet Anfragen an den korrekten Microservice weiter (z.B. `/api/ping/**` -> `ping-service`).
* **Security:** Erzwingt die Authentifizierung und Autorisierung für alle eingehenden Anfragen. Es validiert die von Keycloak ausgestellten JWTs.
* **Cross-Cutting Concerns:** Implementiert übergreifende Funktionalitäten wie Rate Limiting, Logging und Circuit Breaking (mit Resilience4j).
## Konfiguration
Die Routen werden in der `application.yml` des Gateways definiert. Die Konfiguration für die Service Discovery erfolgt über Consul.
```yaml
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
routes:
- id: ping-service
uri: lb://ping-service
predicates:
- Path=/api/ping/**
filters:
- StripPrefix=2
```