From f4563a3da33bf85a9d404e19038546804da28401 Mon Sep 17 00:00:00 2001 From: Stefan Mogeritsch Date: Thu, 15 Jan 2026 13:53:56 +0100 Subject: [PATCH] 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. --- .../Tech_Stack/Gradle_Kotlin_DSL_Primer.md | 4 +- .../Tech_Stack/Kotlin_2-3-0_ReleaseNotes.md | 10 +- docs/03_Domain/01_Core_Model/README.md | 14 + ...destelle_Erweiterung-Schnittstelle_2014.md | 485 +++--------------- docs/05_Backend/README.md | 13 + docs/07_Infrastructure/api-gateway.md | 33 ++ 6 files changed, 121 insertions(+), 438 deletions(-) create mode 100644 docs/03_Domain/01_Core_Model/README.md create mode 100644 docs/05_Backend/README.md create mode 100644 docs/07_Infrastructure/api-gateway.md diff --git a/docs/02_Reference/Tech_Stack/Gradle_Kotlin_DSL_Primer.md b/docs/02_Reference/Tech_Stack/Gradle_Kotlin_DSL_Primer.md index 59fd42c9..70f2fdbf 100644 --- a/docs/02_Reference/Tech_Stack/Gradle_Kotlin_DSL_Primer.md +++ b/docs/02_Reference/Tech_Stack/Gradle_Kotlin_DSL_Primer.md @@ -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.)* diff --git a/docs/02_Reference/Tech_Stack/Kotlin_2-3-0_ReleaseNotes.md b/docs/02_Reference/Tech_Stack/Kotlin_2-3-0_ReleaseNotes.md index 46135d92..47bda592 100644 --- a/docs/02_Reference/Tech_Stack/Kotlin_2-3-0_ReleaseNotes.md +++ b/docs/02_Reference/Tech_Stack/Kotlin_2-3-0_ReleaseNotes.md @@ -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.)* diff --git a/docs/03_Domain/01_Core_Model/README.md b/docs/03_Domain/01_Core_Model/README.md new file mode 100644 index 00000000..81488fa7 --- /dev/null +++ b/docs/03_Domain/01_Core_Model/README.md @@ -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. diff --git a/docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md b/docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md index 5f0eeb8a..d6474e9b 100644 --- a/docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md +++ b/docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md @@ -1,474 +1,105 @@ +# 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 + + + + + + + + + + + + + + + + + + + + + + + +``` diff --git a/docs/05_Backend/README.md b/docs/05_Backend/README.md new file mode 100644 index 00000000..7942ff40 --- /dev/null +++ b/docs/05_Backend/README.md @@ -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. diff --git a/docs/07_Infrastructure/api-gateway.md b/docs/07_Infrastructure/api-gateway.md new file mode 100644 index 00000000..273e1640 --- /dev/null +++ b/docs/07_Infrastructure/api-gateway.md @@ -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 +```