Compare commits
153 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a74b0bb815 | |||
| 40cf1e5d22 | |||
| ce63303b2c | |||
| e4988b4397 | |||
| 8816e8d297 | |||
| 98d0bf0c7b | |||
| 0a90b57c2a | |||
| 0ab62a2752 | |||
| 6070709bf2 | |||
| 763c2a9157 | |||
| 4f715d10bb | |||
| 0b830eb675 | |||
| 4c37ecb952 | |||
| c25ef17a4a | |||
| e5e3b4cfec | |||
| 7d064853e5 | |||
| 387180c12c | |||
| 49393d3eac | |||
| e389fe9bce | |||
| 1a4753cd73 | |||
| ece3f8bf78 | |||
| 8d176ce955 | |||
| 280db663c7 | |||
| 74ef6424b7 | |||
| 3959168695 | |||
| 04a435df1d | |||
| 3aaf5cc59c | |||
| a2d94bbc7e | |||
| 95a130c72e | |||
| 223bf77776 | |||
| 99cbfeef11 | |||
| ed1cb507cf | |||
| f4fab93a6c | |||
| 9b9f60a071 | |||
| d219176609 | |||
| 7411038b3b | |||
| 77ee608094 | |||
| 9bee2f233e | |||
| c317147ca4 | |||
| 15222b5453 | |||
| 6f15ada447 | |||
| 8b294d947d | |||
| 66c8838379 | |||
| 022ffccccd | |||
| 8ab6ab1c2a | |||
| 46d993e47f | |||
| 62f9472695 | |||
| b94984043c | |||
| fd78404d72 | |||
| 884ccc0db5 | |||
| 8ecc9fbe52 | |||
| d0edfa2538 | |||
| e1bf4d8454 | |||
| 5a08361f83 | |||
| 5d6d9efd27 | |||
| d493734660 | |||
| 0aaa160b95 | |||
| 03184aa951 | |||
| 34bd42a009 | |||
| 897394e27e | |||
| 9ab914dbfb | |||
| 9659fe3f8a | |||
| 5cbf4fdfc0 | |||
| bd06efe05d | |||
| 23c3e40390 | |||
| 1201755077 | |||
| 162e2ef414 | |||
| 3f291c907c | |||
| 251647a6ab | |||
| 277254ebbd | |||
| f97bfeff47 | |||
| 02a778751a | |||
| af0ece8ded | |||
| 03fa74abba | |||
| 71aea3f41d | |||
| 16c8674eff | |||
| df5276abf2 | |||
| 636ecc9883 | |||
| 92950dbbe6 | |||
| 5c51664e6c | |||
| 3244efd5e0 | |||
| af02e14f2d | |||
| 8730ffa7db | |||
| f7d11ccf97 | |||
| 76e6cebd90 | |||
| dbbca96c69 | |||
| eea022b862 | |||
| 6de5b55810 | |||
| 07bd114df1 | |||
| 84d38f5eb5 | |||
| 9db85236ec | |||
| f2a6078421 | |||
| 568d9dbb32 | |||
| f620f46d15 | |||
| 46d3d7cf35 | |||
| cb22b1bb96 | |||
| 5544b04b07 | |||
| 49d8b205d7 | |||
| f296a076dc | |||
| 1caefe6603 | |||
| 6b690232ff | |||
| 309834d90c | |||
| 8b44edda90 | |||
| 255343145d | |||
| 5baa971b46 | |||
| e65384768f | |||
| beb20e0cf7 | |||
| 98c241fc64 | |||
| d4cc0eb77d | |||
| e0b1ce8836 | |||
| f18b002f4e | |||
| f8913f81b8 | |||
| 9195cdb14d | |||
| 3f4ba9eea9 | |||
| 92028d9e02 | |||
| bdb45eefe4 | |||
| 148b71db48 | |||
| c54ad3830d | |||
| d66bd63cc9 | |||
| 3b4e3db51d | |||
| 2d7046d0e3 | |||
| d9b5c6bfea | |||
| 91a8c38b25 | |||
| 19ba044ec0 | |||
| 9556e0ac67 | |||
| 4692bd186c | |||
| b11432df16 | |||
| 319cb52160 | |||
| a35dfa1434 | |||
| 237c71e5a0 | |||
| ec124e9acd | |||
| 0ab1807235 | |||
| 7cfdd06d1e | |||
| 544fbf792c | |||
| 18e619abfc | |||
| 5eeff24b3a | |||
| f13c2eb35b | |||
| 2662d4e82e | |||
| 574f8c470c | |||
| 9b4af2bb56 | |||
| 1a295c18c8 | |||
| 01bf440f21 | |||
| 7acd9ea4c2 | |||
| 30b53584f8 | |||
| c1327f3186 | |||
| 7a2c5700f9 | |||
| 5b8ef5ea2d | |||
| db58c24613 | |||
| edfe05cbe3 | |||
| 6feb139a46 | |||
| b94e0f2d9d | |||
| 8806d11e3c | |||
| a1bf93342e |
Vendored
+41
@@ -0,0 +1,41 @@
|
|||||||
|
## 🚀 Identität & Arbeitsmodus (Chamäleon-Modus)
|
||||||
|
Du bist ein hochqualifizierter KI-Assistent für das Softwareprojekt "Meldestelle" von Stefan.
|
||||||
|
Ich weise dir in meinen Prompts Aufgaben zu. Nimm sofort die entsprechende Rolle an, beginne deine Antwort zwingend mit dem passenden Badge und passe dein Vokabular an:
|
||||||
|
|
||||||
|
* 🏗️ **[Lead Architect]:** System-Design, Gradle-Build-Logik, Modulstruktur.
|
||||||
|
* 📜 **[Rulebook Expert]:** Validiert Business-Rules gegen das ÖTO/FEI Regelwerk.
|
||||||
|
* 👷 **[Backend Developer]:** Kotlin & Spring Boot Experte.
|
||||||
|
* 🎨 **[Frontend Expert]:** KMP & Compose Desktop Spezialist.
|
||||||
|
* 🐧 **[DevOps Engineer]:** Infrastruktur (Docker, CI/CD, Proxmox).
|
||||||
|
|
||||||
|
**Arbeitsanweisung:** Bearbeite pro Antwort immer nur EINE fachliche Aufgabe.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 🏗️ Projekt-Strategie (Reality-Reset)
|
||||||
|
1. **Desktop-First & Offline-First:** Das Primärziel ist eine autarke Compose Desktop App (KMP). Sie muss auf Turnieren ohne Internet funktionieren (lokale Persistenz).
|
||||||
|
2. **Optionales Backend:** Ein Spring Boot Stack (PostgreSQL, Valkey, Keycloak) wird nur für Multi-Tenant-Verwaltung, Registrierung und P2P-Sync genutzt.
|
||||||
|
3. **Domain-Driven Design (DDD):** Die absolute Business-Hierarchie lautet: Veranstaltung -> Turnier -> Bewerb/Abteilung.
|
||||||
|
4. **Der System-Akteur:** Der primäre "Actor" in allen Use-Cases ist *nicht* der Veranstalter, sondern zwingend die Person, die die Meldestelle betreut (Actor = Meldestelle).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 🛠️ Der verbindliche Tech-Stack
|
||||||
|
Generiere Code ausschließlich für diese exakten Versionen und Paradigmen:
|
||||||
|
* **Frontend (KMP):** Kotlin 2.3.21, Compose Multiplatform 1.10.3, Ktor Client 3.4.1, SQLDelight.
|
||||||
|
* **Backend:** Spring Boot 3.5.9 (JDK 25), Ktor Server (wo spezifiziert), Exposed 1.1.1.
|
||||||
|
* **Infrastruktur:** Gitea (CI/CD), Docker, Pangolin Tunnel. (KEIN GitHub, KEIN Cloudflare).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 👁️ Anti-Halluzinations-Protokoll
|
||||||
|
Du bist an strikte, evidenzbasierte Entwicklung gebunden:
|
||||||
|
1. **Kein "Erledigt" ohne Beweis:** Ein Task ist erst abgeschlossen, wenn Test-Logs oder ein Build vorliegen.
|
||||||
|
2. **Verifikation ausstehend:** Generierter, ungetesteter Code muss diesen Vermerk zwingend tragen.
|
||||||
|
3. **Fakten-Check:** Wenn du den Code nicht im Kontext hast (z.B. eine spezifische Gradle-Datei), fordere sie aktiv vom User an, anstatt blind zu raten.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ⚙️ Provider-Spezifika (Google Gemini / Web-Meta-Modus)
|
||||||
|
* Du agierst als "Gemini" über die Web-Oberfläche. Deine primäre Aufgabe ist die strategische Meta-Ebene, Architektur-Analyse, Review von CI/CD-Pipelines und das Sparring bei komplexen Refactoring-Plänen.
|
||||||
|
* **Antwort-Stil:** Antworte prägnant, strukturiert und nutze das bereitgestellte Formatierungstoolkit (Markdown, klare Hierarchien, Code-Blöcke). Vermeide unnötige Floskeln und komm direkt auf den technischen Punkt.
|
||||||
Vendored
+34
@@ -0,0 +1,34 @@
|
|||||||
|
## 🚀 Identität & Arbeitsmodus (Chamäleon-Modus)
|
||||||
|
Du bist ein hochqualifizierter KI-Assistent für das Softwareprojekt "Meldestelle" von Stefan.
|
||||||
|
Ich weise dir in meinen Prompts Aufgaben zu. Nimm sofort die entsprechende Rolle an, beginne deine Antwort zwingend mit dem passenden Badge und passe dein Vokabular an:
|
||||||
|
|
||||||
|
* 🏗️ **[Lead Architect]:** System-Design, Gradle-Build-Logik, Modulstruktur.
|
||||||
|
* 📜 **[Rulebook Expert]:** Validiert Business-Rules gegen das ÖTO/FEI Regelwerk.
|
||||||
|
* 👷 **[Backend Developer]:** Kotlin & Spring Boot Experte.
|
||||||
|
* 🎨 **[Frontend Expert]:** KMP & Compose Desktop Spezialist.
|
||||||
|
* 🐧 **[DevOps Engineer]:** Infrastruktur (Docker, CI/CD, Proxmox).
|
||||||
|
|
||||||
|
**Arbeitsanweisung:** Bearbeite pro Antwort immer nur EINE fachliche Aufgabe.
|
||||||
|
|
||||||
|
## 🏗️ Projekt-Strategie (Reality-Reset)
|
||||||
|
1. **Desktop-First & Offline-First:** Das Primärziel ist eine autarke Compose Desktop App (KMP). Sie muss auf Turnieren ohne Internet funktionieren (lokale Persistenz).
|
||||||
|
2. **Optionales Backend:** Ein Spring Boot Stack (PostgreSQL, Valkey, Keycloak) wird nur für Multi-Tenant-Verwaltung, Registrierung und P2P-Sync genutzt.
|
||||||
|
3. **Domain-Driven Design (DDD):** Die absolute Business-Hierarchie lautet: Veranstaltung -> Turnier -> Bewerb/Abteilung.
|
||||||
|
4. **Der System-Akteur:** Der primäre "Actor" in allen Use-Cases ist *nicht* der Veranstalter, sondern zwingend die Person, die die Meldestelle betreut (Actor = Meldestelle).
|
||||||
|
|
||||||
|
## 🛠️ Der verbindliche Tech-Stack
|
||||||
|
Generiere Code ausschließlich für diese exakten Versionen und Paradigmen:
|
||||||
|
* **Frontend (KMP):** Kotlin 2.3.21, Compose Multiplatform 1.10.3, Ktor Client 3.4.1, SQLDelight.
|
||||||
|
* **Backend:** Spring Boot 3.5.9 (JDK 25), Ktor Server (wo spezifiziert), Exposed 1.1.1.
|
||||||
|
* **Infrastruktur:** Gitea (CI/CD), Docker, Pangolin Tunnel. (KEIN GitHub, KEIN Cloudflare).
|
||||||
|
|
||||||
|
## 👁️ Anti-Halluzinations-Protokoll
|
||||||
|
Du bist an strikte, evidenzbasierte Entwicklung gebunden:
|
||||||
|
1. **Kein "Erledigt" ohne Beweis:** Ein Task ist erst abgeschlossen, wenn Test-Logs oder ein Build vorliegen.
|
||||||
|
2. **Verifikation ausstehend:** Generierter, ungetesteter Code muss diesen Vermerk zwingend tragen.
|
||||||
|
3. **Fakten-Check:** Wenn du den Code nicht im Kontext hast (z.B. eine spezifische Gradle-Datei), fordere sie aktiv vom User an, anstatt blind zu raten.
|
||||||
|
|
||||||
|
## ⚙️ Provider-Spezifika (JetBrains Junie / IDE-Modus)
|
||||||
|
* Dein Name ist "Junie". Du arbeitest als hochintegrierter KI-Assistent direkt innerhalb von IntelliJ IDEA.
|
||||||
|
* **Kontext-Fokus:** Nutze die lokalen Projektdateien, Indizes und das Git-Log intensiv. Wenn Refactorings oder Code-Generierungen anstehen, achte penibel darauf, dass bestehende Datei-Imports (Kotlin-Packages) nicht zerschossen werden.
|
||||||
|
* **Generierungs-Gate:** Halte dich strikt an die im Projekt hinterlegten Formatierungsregeln für Detekt und Ktlint.
|
||||||
@@ -20,6 +20,7 @@ DOCKER_GRADLE_VERSION=9.3.1
|
|||||||
DOCKER_JAVA_VERSION=25
|
DOCKER_JAVA_VERSION=25
|
||||||
DOCKER_NODE_VERSION=24.12.0
|
DOCKER_NODE_VERSION=24.12.0
|
||||||
DOCKER_NGINX_VERSION=1.28.0-alpine
|
DOCKER_NGINX_VERSION=1.28.0-alpine
|
||||||
|
DOCKER_CADDY_VERSION=2.11-alpine
|
||||||
|
|
||||||
# JVM Power Flags (Lokal leer lassen, da Intel/AMD Architektur)
|
# JVM Power Flags (Lokal leer lassen, da Intel/AMD Architektur)
|
||||||
JVM_OPTS_ARM64=
|
JVM_OPTS_ARM64=
|
||||||
@@ -96,6 +97,7 @@ CONSUL_IMAGE=hashicorp/consul:1.22.1
|
|||||||
CONSUL_PORT=8500:8500
|
CONSUL_PORT=8500:8500
|
||||||
CONSUL_UDP_PORT=8600:8600/udp
|
CONSUL_UDP_PORT=8600:8600/udp
|
||||||
CONSUL_HOST=consul
|
CONSUL_HOST=consul
|
||||||
|
CONSUL_HTTP_PORT=8500
|
||||||
SPRING_CLOUD_CONSUL_HOST=consul
|
SPRING_CLOUD_CONSUL_HOST=consul
|
||||||
SPRING_CLOUD_CONSUL_PORT=8500
|
SPRING_CLOUD_CONSUL_PORT=8500
|
||||||
SPRING_CLOUD_CONSUL_DISCOVERY_SERVICE_NAME=api-gateway
|
SPRING_CLOUD_CONSUL_DISCOVERY_SERVICE_NAME=api-gateway
|
||||||
@@ -159,6 +161,8 @@ PING_CONSUL_PREFER_IP=true
|
|||||||
MAIL_PORT=8083:8083
|
MAIL_PORT=8083:8083
|
||||||
MAIL_DEBUG_PORT=5014:5014
|
MAIL_DEBUG_PORT=5014:5014
|
||||||
MAIL_SERVER_PORT=8083
|
MAIL_SERVER_PORT=8083
|
||||||
|
MAIL_SERVICE_URL=http://10.0.0.50:8092
|
||||||
|
|
||||||
MAIL_SPRING_PROFILES_ACTIVE=docker
|
MAIL_SPRING_PROFILES_ACTIVE=docker
|
||||||
MAIL_DEBUG=true
|
MAIL_DEBUG=true
|
||||||
MAIL_SERVICE_NAME=mail-service
|
MAIL_SERVICE_NAME=mail-service
|
||||||
@@ -166,18 +170,31 @@ MAIL_CONSUL_PREFER_IP=true
|
|||||||
MAIL_SMTP_HOST=smtp.world4you.com
|
MAIL_SMTP_HOST=smtp.world4you.com
|
||||||
MAIL_SMTP_PORT=587
|
MAIL_SMTP_PORT=587
|
||||||
MAIL_SMTP_USER=online-nennen@mo-code.at
|
MAIL_SMTP_USER=online-nennen@mo-code.at
|
||||||
MAIL_SMTP_PASSWORD=secret
|
MAIL_SMTP_PASSWORD=Mogi#2reiten
|
||||||
MAIL_SMTP_AUTH=true
|
MAIL_SMTP_AUTH=true
|
||||||
MAIL_SMTP_STARTTLS=true
|
MAIL_SMTP_STARTTLS=true
|
||||||
|
|
||||||
|
SPRING_MAIL_HOST=smtp.world4you.com
|
||||||
|
SPRING_MAIL_PORT=587
|
||||||
|
SPRING_MAIL_USERNAME=online-nennen@mo-code.at
|
||||||
|
SPRING_MAIL_PASSWORD=Mogi#2reiten
|
||||||
|
SPRING_MAIL_PROPERTIES_MAIL_SMTP_AUTH=false
|
||||||
|
SPRING_MAIL_PROPERTIES_MAIL_SMTP_STARTTLS_ENABLE=false
|
||||||
|
SPRING_CLOUD_CONSUL_DISCOVERY_ENABLED=false
|
||||||
|
SPRING_CLOUD_CONSUL_ENABLED=false
|
||||||
|
MAIL_POLLING_ENABLED=false
|
||||||
|
|
||||||
|
|
||||||
# --- MASTERDATA-SERVICE ---
|
# --- MASTERDATA-SERVICE ---
|
||||||
MASTERDATA_PORT=8086:8086
|
MASTERDATA_PORT=8086:8086
|
||||||
MASTERDATA_DEBUG_PORT=5007:5007
|
MASTERDATA_DEBUG_PORT=5007:5007
|
||||||
MASTERDATA_SERVER_PORT=8086
|
MASTERDATA_SERVER_PORT=8086
|
||||||
|
MASTERDATA_KTOR_PORT=8091
|
||||||
MASTERDATA_SPRING_PROFILES_ACTIVE=docker
|
MASTERDATA_SPRING_PROFILES_ACTIVE=docker
|
||||||
MASTERDATA_DEBUG=true
|
MASTERDATA_DEBUG=true
|
||||||
MASTERDATA_SERVICE_NAME=masterdata-service
|
MASTERDATA_SERVICE_NAME=masterdata-service
|
||||||
MASTERDATA_CONSUL_PREFER_IP=true
|
MASTERDATA_CONSUL_PREFER_IP=true
|
||||||
|
MASTERDATA_SERVICE_HOSTNAME=masterdata-service
|
||||||
|
|
||||||
# --- EVENTS-SERVICE ---
|
# --- EVENTS-SERVICE ---
|
||||||
EVENTS_PORT=8085:8085
|
EVENTS_PORT=8085:8085
|
||||||
@@ -235,7 +252,7 @@ SERIES_CONSUL_PREFER_IP=true
|
|||||||
|
|
||||||
# --- WEB-APP ---
|
# --- WEB-APP ---
|
||||||
CADDY_VERSION=2.11-alpine
|
CADDY_VERSION=2.11-alpine
|
||||||
WEB_APP_PORT=4000:4000
|
WEB_APP_PORT=8080:80
|
||||||
WEB_BUILD_PROFILE=dev
|
WEB_BUILD_PROFILE=dev
|
||||||
# Lokal: http://localhost:8081 | Produktion: http://10.0.0.50:8081
|
# Lokal: http://localhost:8081 | Produktion: http://10.0.0.50:8081
|
||||||
WEB_APP_API_URL=http://localhost:8081
|
WEB_APP_API_URL=http://localhost:8081
|
||||||
|
|||||||
@@ -1,13 +1,24 @@
|
|||||||
name: Desktop CI — Headless Tests & Build
|
name: Desktop CI — Headless Tests & Build
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
# Nur ausführen, wenn explizit das Desktop-Shell-Modul geändert wurde
|
||||||
push:
|
push:
|
||||||
branches: [ main, master ]
|
branches: [ main, master ]
|
||||||
|
paths:
|
||||||
|
- 'frontend/shells/meldestelle-desktop/**'
|
||||||
|
- '.gitea/workflows/desktop-tests.yml'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ main, master ]
|
branches: [ main, master ]
|
||||||
|
paths:
|
||||||
|
- 'frontend/shells/meldestelle-desktop/**'
|
||||||
|
# Manuell startbar, falls benötigt
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
desktop-tests:
|
desktop-tests:
|
||||||
|
# Komplett deaktivierbar über Repo-Variable: Settings → Variables → DESKTOP_CI_ENABLED=true
|
||||||
|
# Zusätzlich: Für Plan‑B‑Builds überspringen, wenn Commit-Message [planb] enthält
|
||||||
|
if: ${{ vars.DESKTOP_CI_ENABLED == 'true' && !contains(github.event.head_commit.message, '[planb]') }}
|
||||||
name: Compose Desktop — Tests (headless) & Build
|
name: Compose Desktop — Tests (headless) & Build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
@@ -38,12 +49,12 @@ jobs:
|
|||||||
- name: Show Gradle version
|
- name: Show Gradle version
|
||||||
run: ./gradlew --version
|
run: ./gradlew --version
|
||||||
|
|
||||||
- name: Run Desktop tests headless (Xvfb)
|
- name: Run Desktop tests headless (xvfb)
|
||||||
env:
|
env:
|
||||||
_JAVA_OPTIONS: -Djava.awt.headless=true
|
_JAVA_OPTIONS: -Djava.awt.headless=true
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y Xvfb
|
sudo apt-get install -y xvfb xauth
|
||||||
xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" \
|
xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" \
|
||||||
./gradlew :frontend:shells:meldestelle-desktop:jvmTest --stacktrace --no-daemon
|
./gradlew :frontend:shells:meldestelle-desktop:jvmTest --stacktrace --no-daemon
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ run-name: Build & Publish by @${{ github.actor }}
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "main" ]
|
branches: [ "main" ]
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
paths:
|
paths:
|
||||||
- 'backend/**'
|
- 'backend/**'
|
||||||
- 'platform/**'
|
- 'platform/**'
|
||||||
@@ -33,18 +35,11 @@ jobs:
|
|||||||
max-parallel: 1
|
max-parallel: 1
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- service: keycloak
|
# Plan-B fokussiert: Nur Mail-Service + Web-App bauen/pushen (beschleunigt CI deutlich)
|
||||||
|
- service: mail-service
|
||||||
context: .
|
context: .
|
||||||
dockerfile: config/docker/keycloak/Dockerfile
|
dockerfile: backend/services/mail/Dockerfile
|
||||||
image: keycloak
|
image: mail-service
|
||||||
- service: api-gateway
|
|
||||||
context: .
|
|
||||||
dockerfile: backend/infrastructure/gateway/Dockerfile
|
|
||||||
image: api-gateway
|
|
||||||
- service: ping-service
|
|
||||||
context: .
|
|
||||||
dockerfile: backend/services/ping/Dockerfile
|
|
||||||
image: ping-service
|
|
||||||
- service: web-app
|
- service: web-app
|
||||||
context: .
|
context: .
|
||||||
dockerfile: config/docker/caddy/web-app/Dockerfile
|
dockerfile: config/docker/caddy/web-app/Dockerfile
|
||||||
@@ -61,43 +56,42 @@ jobs:
|
|||||||
distribution: "temurin"
|
distribution: "temurin"
|
||||||
cache: gradle
|
cache: gradle
|
||||||
|
|
||||||
- name: Setup Gradle Cache
|
# --- SCHRITT 1: Build mit radikalem Clean (gegen die März-Leichen) ---
|
||||||
uses: actions/cache@v4
|
- name: Build Frontend (Wasm JS)
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.gradle/caches
|
|
||||||
~/.gradle/wrapper
|
|
||||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-gradle-
|
|
||||||
|
|
||||||
# Verhindert mysteriöse Build-Fehler durch korrupte Node/Kotlin-Caches (nur web-app relevant)
|
|
||||||
- name: Cleanup stale build caches
|
|
||||||
if: matrix.service == 'web-app'
|
|
||||||
run: |
|
|
||||||
rm -rf frontend/shells/meldestelle-portal/build/js/node_modules/.cache || true
|
|
||||||
rm -rf frontend/shells/meldestelle-portal/build/js/.yarn/cache || true
|
|
||||||
rm -rf ~/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable || true
|
|
||||||
|
|
||||||
- name: Build Frontend (Kotlin JS)
|
|
||||||
if: matrix.service == 'web-app'
|
if: matrix.service == 'web-app'
|
||||||
run: |
|
run: |
|
||||||
chmod +x gradlew
|
chmod +x gradlew
|
||||||
./gradlew :frontend:shells:meldestelle-portal:jsBrowserDistribution \
|
# Löscht alte Build-Stände komplett
|
||||||
|
./gradlew :frontend:shells:meldestelle-web:clean
|
||||||
|
|
||||||
|
./gradlew :frontend:shells:meldestelle-web:wasmJsBrowserDistribution \
|
||||||
-Pproduction=true \
|
-Pproduction=true \
|
||||||
--max-workers=4 \
|
--max-workers=4 \
|
||||||
-Dkotlin.daemon.jvm.options="-Xmx4g"
|
-Dkotlin.daemon.jvm.options="-Xmx4g"
|
||||||
|
|
||||||
# Pangolin-Bypass: Credentials direkt in config.json schreiben.
|
# --- SCHRITT 2: Staging ohne rsync (Fix für dein Log-Fehler) ---
|
||||||
# Kein "docker login" → kein Daemon-Ping → kein HTTPS-Fehler.
|
- name: Stage Web Assets for Docker build
|
||||||
# BuildKit liest ~/.docker/config.json und verwendet diese Credentials beim Push.
|
if: matrix.service == 'web-app'
|
||||||
# - name: Registry-Credentials konfigurieren (kein Daemon-Kontakt)
|
run: |
|
||||||
# run: |
|
set -e
|
||||||
# mkdir -p ~/.docker
|
DIST_DIR="frontend/shells/meldestelle-web/build/dist/wasmJs/productionExecutable"
|
||||||
# AUTH=$(echo -n "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_TOKEN }}" | base64 -w 0)
|
TARGET_DIR="config/docker/caddy/web-app/_site"
|
||||||
# printf '{"auths":{"%s":{"auth":"%s"}}}\n' "${{ env.REGISTRY_INTERNAL }}" "${AUTH}" > ~/.docker/config.json
|
|
||||||
# echo "✓ Credentials für ${{ env.REGISTRY_INTERNAL }} gespeichert"
|
|
||||||
|
|
||||||
|
if [ ! -d "$DIST_DIR" ]; then
|
||||||
|
echo "❌ Fehler: Build-Verzeichnis nicht gefunden!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ersetzt rsync durch sicheres Löschen & Kopieren
|
||||||
|
rm -rf "$TARGET_DIR"
|
||||||
|
mkdir -p "$TARGET_DIR"
|
||||||
|
cp -r "$DIST_DIR"/. "$TARGET_DIR/"
|
||||||
|
# Kopiere Turnier-Ausschreibungen (PDFs) für Plan-B
|
||||||
|
cp docs/Neumarkt2026/*.pdf "$TARGET_DIR/" || true
|
||||||
|
|
||||||
|
echo "✓ Assets für Docker vorbereitet (Stand: $(date))"
|
||||||
|
|
||||||
|
# --- SCHRITT 3: Login & BuildX ---
|
||||||
# NEU (sauber, nach daemon.json-Fix):
|
# NEU (sauber, nach daemon.json-Fix):
|
||||||
- name: Login to Gitea Registry
|
- name: Login to Gitea Registry
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
@@ -122,8 +116,9 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
images: ${{ env.REGISTRY_INTERNAL }}/${{ env.IMAGE_PREFIX }}/${{ matrix.image }}
|
images: ${{ env.REGISTRY_INTERNAL }}/${{ env.IMAGE_PREFIX }}/${{ matrix.image }}
|
||||||
tags: |
|
tags: |
|
||||||
|
type=ref,event=tag
|
||||||
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
|
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
|
||||||
type=sha,format=long
|
type=sha,format=long,enable=${{ github.ref == 'refs/heads/main' }}
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
@@ -137,9 +132,5 @@ jobs:
|
|||||||
provenance: false
|
provenance: false
|
||||||
sbom: false
|
sbom: false
|
||||||
build-args: |
|
build-args: |
|
||||||
DOCKER_BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
BUILD_DATE=${{ github.event.head_commit.timestamp || 'unknown' }}
|
||||||
VERSION=${{ github.sha }}
|
VERSION=${{ github.sha }}
|
||||||
GRADLE_VERSION=${{ env.GRADLE_VERSION }}
|
|
||||||
JAVA_VERSION=${{ env.JAVA_VERSION }}
|
|
||||||
KEYCLOAK_IMAGE_TAG=${{ env.KEYCLOAK_IMAGE_TAG }}
|
|
||||||
JVM_OPTS_APPEND=${{ env.JVM_OPTS_ARM64 }}
|
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
name: Feature Build — Windows MSI (via Conveyor)
|
||||||
|
on:
|
||||||
|
workflow_dispatch: # Nur noch manueller Start möglich, da ARM64-Runner inkompatibel
|
||||||
|
# push:
|
||||||
|
# branches: [ "feature/*" ] # Deaktiviert wegen ARM64 Exec Format Error
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
package-windows:
|
||||||
|
name: 📦 Windows .msi Packaging
|
||||||
|
# Desktop-CI ist nun via Conveyor auf Linux möglich
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup JDK 21 (Temurin)
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '21'
|
||||||
|
cache: gradle
|
||||||
|
|
||||||
|
- name: Gradle Build (Uber-JAR)
|
||||||
|
run: |
|
||||||
|
./gradlew :frontend:shells:meldestelle-desktop:jvmJar --no-daemon
|
||||||
|
ls -lh frontend/shells/meldestelle-desktop/build/libs/
|
||||||
|
|
||||||
|
- name: Setup Conveyor
|
||||||
|
run: |
|
||||||
|
# Conveyor-Installation via Debian-Paket (stabiler in CI)
|
||||||
|
sudo apt-get update && sudo apt-get install -y curl
|
||||||
|
# Wir nutzen die offizielle Empfehlung für Debian-basierte Systeme
|
||||||
|
curl -L https://conveyor.hydraulic.dev/install.sh -o install-conveyor.sh
|
||||||
|
# Validierung: Wenn es kein Shell-Skript ist (sondern HTML), abbrechen
|
||||||
|
if grep -q "<!DOCTYPE HTML" install-conveyor.sh; then
|
||||||
|
echo "Fehler: Download-URL lieferte HTML statt Skript. Nutze npm-Fallback."
|
||||||
|
npm install -g @hydraulic/conveyor
|
||||||
|
else
|
||||||
|
chmod +x install-conveyor.sh
|
||||||
|
./install-conveyor.sh
|
||||||
|
fi
|
||||||
|
echo "$HOME/.conveyor/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
|
- name: Windows .msi mit Conveyor bauen
|
||||||
|
run: |
|
||||||
|
# HINWEIS: Erfordert aktuell einen x64-Linux-Runner.
|
||||||
|
# Schlägt auf ARM64 (Zora) mit 'Exec format error' fehl.
|
||||||
|
CONVEYOR_BIN=$(which conveyor || echo "$HOME/.conveyor/bin/conveyor")
|
||||||
|
$CONVEYOR_BIN make windows-msi
|
||||||
|
|
||||||
|
- name: .msi Artefakt hochladen
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: meldestelle-windows-feature-build
|
||||||
|
path: output/*.msi
|
||||||
|
if-no-files-found: error
|
||||||
@@ -4,6 +4,8 @@ on:
|
|||||||
branches: [ "**" ]
|
branches: [ "**" ]
|
||||||
jobs:
|
jobs:
|
||||||
no-hardcoded-versions:
|
no-hardcoded-versions:
|
||||||
|
# Für Plan-B-Builds überspringen: Commit-Message enthält [planb]
|
||||||
|
if: ${{ !contains(github.event.head_commit.message, '[planb]') }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ jobs:
|
|||||||
# =============================================================
|
# =============================================================
|
||||||
tag-release:
|
tag-release:
|
||||||
name: 🏷️ Git-Tag setzen
|
name: 🏷️ Git-Tag setzen
|
||||||
|
# Für Plan-B-Builds überspringen: Commit-Message enthält [planb]
|
||||||
|
if: ${{ !contains(github.event.head_commit.message, '[planb]') }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
version: ${{ steps.read-version.outputs.version }}
|
version: ${{ steps.read-version.outputs.version }}
|
||||||
@@ -77,6 +79,8 @@ jobs:
|
|||||||
# =============================================================
|
# =============================================================
|
||||||
package-linux:
|
package-linux:
|
||||||
name: 📦 Linux .deb Packaging
|
name: 📦 Linux .deb Packaging
|
||||||
|
# Nur ausführen, wenn Desktop-CI explizit aktiviert ist UND kein Plan‑B Commit
|
||||||
|
if: ${{ vars.DESKTOP_CI_ENABLED == 'true' && !contains(github.event.head_commit.message, '[planb]') }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: tag-release
|
needs: tag-release
|
||||||
|
|
||||||
@@ -123,6 +127,8 @@ jobs:
|
|||||||
# =============================================================
|
# =============================================================
|
||||||
package-windows:
|
package-windows:
|
||||||
name: 📦 Windows .msi Packaging
|
name: 📦 Windows .msi Packaging
|
||||||
|
# Nur ausführen, wenn Desktop-CI explizit aktiviert ist UND kein Plan‑B Commit
|
||||||
|
if: ${{ vars.DESKTOP_CI_ENABLED == 'true' && !contains(github.event.head_commit.message, '[planb]') }}
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
needs: tag-release
|
needs: tag-release
|
||||||
|
|
||||||
|
|||||||
+62
-1
@@ -1 +1,62 @@
|
|||||||
/.idea/
|
# 🐧 [DevOps Engineer] Optimierte .gitignore für Meldestelle (KMP / Gradle / Docker)
|
||||||
|
|
||||||
|
# --- IDE & Editor ---
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
*.iws
|
||||||
|
*.ipr
|
||||||
|
out/
|
||||||
|
.vscode/
|
||||||
|
.history/
|
||||||
|
.shelf/
|
||||||
|
|
||||||
|
# --- Gradle ---
|
||||||
|
.gradle/
|
||||||
|
build/
|
||||||
|
!**/src/**/build/
|
||||||
|
gradle-app.setting
|
||||||
|
!gradle-wrapper.jar
|
||||||
|
.gradletasknamecache
|
||||||
|
bin/
|
||||||
|
|
||||||
|
# --- Kotlin / KMP ---
|
||||||
|
.kotlin/
|
||||||
|
kotlin-js-store/
|
||||||
|
.jetbrains/
|
||||||
|
|
||||||
|
# --- Android (falls relevant) ---
|
||||||
|
*.ap_
|
||||||
|
*.apk
|
||||||
|
*.dex
|
||||||
|
local.properties
|
||||||
|
|
||||||
|
# --- Node / JS (Compose Web / KMP JS) ---
|
||||||
|
node_modules/
|
||||||
|
package-lock.json
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.npm/
|
||||||
|
|
||||||
|
# --- Docker & Infrastructure ---
|
||||||
|
.docker/
|
||||||
|
*.log
|
||||||
|
logs/
|
||||||
|
.env
|
||||||
|
!.env.example
|
||||||
|
.data/
|
||||||
|
postgres-data/
|
||||||
|
|
||||||
|
# --- OS Specific ---
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
desktop.ini
|
||||||
|
|
||||||
|
# --- Project Specific ---
|
||||||
|
docs/temp/
|
||||||
|
docs/Bin/
|
||||||
|
docs/_archive/
|
||||||
|
|
||||||
|
# Conveyor
|
||||||
|
conveyor.rootkey
|
||||||
|
output/
|
||||||
|
|||||||
Generated
-1
@@ -1 +0,0 @@
|
|||||||
Meldestelle
|
|
||||||
Generated
-6
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="AndroidProjectSystem">
|
|
||||||
<option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="auth-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/auth/build/libs</output-path>
|
|
||||||
<root id="archive" name="auth-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.auth.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="auth-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/auth/build/libs</output-path>
|
|
||||||
<root id="archive" name="auth-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.auth.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="billing-domain-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/billing/billing-domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="billing-domain-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.billing.billing-domain.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="billing-domain-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/billing/billing-domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="billing-domain-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.billing.billing-domain.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="billing-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/billing-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="billing-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.billing-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="billing-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/billing-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="billing-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.billing-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="core-domain-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/core/core-domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="core-domain-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.core.core-domain.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="core-domain-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/core/core-domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="core-domain-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.core.core-domain.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="core-utils-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/core/core-utils/build/libs</output-path>
|
|
||||||
<root id="archive" name="core-utils-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.core.core-utils.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="core-utils-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/core/core-utils/build/libs</output-path>
|
|
||||||
<root id="archive" name="core-utils-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.core.core-utils.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="design-system-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/design-system/build/libs</output-path>
|
|
||||||
<root id="archive" name="design-system-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.design-system.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="design-system-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/design-system/build/libs</output-path>
|
|
||||||
<root id="archive" name="design-system-jvm-1.0.0-SNAPSHOT.jar" />
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="design-system-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/design-system/build/libs</output-path>
|
|
||||||
<root id="archive" name="design-system-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.design-system.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="design-system-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/design-system/build/libs</output-path>
|
|
||||||
<root id="archive" name="design-system-wasm-js-1.0.0-SNAPSHOT.jar" />
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="device-initialization-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/device-initialization/build/libs</output-path>
|
|
||||||
<root id="archive" name="device-initialization-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.device-initialization.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="device-initialization-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/device-initialization/build/libs</output-path>
|
|
||||||
<root id="archive" name="device-initialization-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.device-initialization.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="domain-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="domain-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.domain.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="domain-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="domain-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.domain.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="domain-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="domain-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.domain.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="domain-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="domain-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.domain.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="entries-api-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/entries/entries-api/build/libs</output-path>
|
|
||||||
<root id="archive" name="entries-api-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.entries.entries-api.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="entries-api-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/entries/entries-api/build/libs</output-path>
|
|
||||||
<root id="archive" name="entries-api-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.entries.entries-api.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="entries-domain-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/entries/entries-domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="entries-domain-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.entries.entries-domain.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="entries-domain-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/entries/entries-domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="entries-domain-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.entries.entries-domain.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="events-common-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/events/events-common/build/libs</output-path>
|
|
||||||
<root id="archive" name="events-common-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.events.events-common.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="events-common-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/events/events-common/build/libs</output-path>
|
|
||||||
<root id="archive" name="events-common-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.events.events-common.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="funktionaer-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/funktionaer-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="funktionaer-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.funktionaer-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="funktionaer-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/funktionaer-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="funktionaer-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.funktionaer-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="local-db-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/local-db/build/libs</output-path>
|
|
||||||
<root id="archive" name="local-db-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.local-db.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="local-db-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/local-db/build/libs</output-path>
|
|
||||||
<root id="archive" name="local-db-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.local-db.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="local-db-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/local-db/build/libs</output-path>
|
|
||||||
<root id="archive" name="local-db-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.local-db.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="local-db-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/local-db/build/libs</output-path>
|
|
||||||
<root id="archive" name="local-db-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.local-db.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="masterdata-domain-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/masterdata/masterdata-domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="masterdata-domain-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.masterdata.masterdata-domain.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="masterdata-domain-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/backend/services/masterdata/masterdata-domain/build/libs</output-path>
|
|
||||||
<root id="archive" name="masterdata-domain-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.backend.services.masterdata.masterdata-domain.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="meldestelle-desktop-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/shells/meldestelle-desktop/build/libs</output-path>
|
|
||||||
<root id="archive" name="meldestelle-desktop-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.shells.meldestelle-desktop.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="meldestelle-desktop-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/shells/meldestelle-desktop/build/libs</output-path>
|
|
||||||
<root id="archive" name="meldestelle-desktop-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.shells.meldestelle-desktop.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="meldestelle-web-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/shells/meldestelle-web/build/libs</output-path>
|
|
||||||
<root id="archive" name="meldestelle-web-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.shells.meldestelle-web.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="navigation-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/navigation/build/libs</output-path>
|
|
||||||
<root id="archive" name="navigation-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.navigation.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="navigation-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/navigation/build/libs</output-path>
|
|
||||||
<root id="archive" name="navigation-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.navigation.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="nennung-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/nennung-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="nennung-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.nennung-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="nennung-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/nennung-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="nennung-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.nennung-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="network-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/network/build/libs</output-path>
|
|
||||||
<root id="archive" name="network-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.network.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="network-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/network/build/libs</output-path>
|
|
||||||
<root id="archive" name="network-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.network.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="network-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/network/build/libs</output-path>
|
|
||||||
<root id="archive" name="network-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.network.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="network-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/network/build/libs</output-path>
|
|
||||||
<root id="archive" name="network-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.network.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="pferde-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/pferde-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="pferde-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.pferde-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="pferde-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/pferde-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="pferde-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.pferde-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="ping-api-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/contracts/ping-api/build/libs</output-path>
|
|
||||||
<root id="archive" name="ping-api-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.contracts.ping-api.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="ping-api-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/contracts/ping-api/build/libs</output-path>
|
|
||||||
<root id="archive" name="ping-api-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.contracts.ping-api.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="ping-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/ping-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="ping-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.ping-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="ping-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/ping-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="ping-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.ping-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="profile-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/profile-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="profile-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.profile-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="profile-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/profile-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="profile-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.profile-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="reiter-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/reiter-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="reiter-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.reiter-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="reiter-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/reiter-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="reiter-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.reiter-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="sync-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/sync/build/libs</output-path>
|
|
||||||
<root id="archive" name="sync-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.sync.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="sync-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/sync/build/libs</output-path>
|
|
||||||
<root id="archive" name="sync-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.sync.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="sync-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/sync/build/libs</output-path>
|
|
||||||
<root id="archive" name="sync-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.sync.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="sync-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/core/sync/build/libs</output-path>
|
|
||||||
<root id="archive" name="sync-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.core.sync.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="turnier-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/turnier-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="turnier-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.turnier-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="turnier-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/turnier-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="turnier-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.turnier-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="veranstalter-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/veranstalter-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="veranstalter-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.veranstalter-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="veranstalter-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/veranstalter-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="veranstalter-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.veranstalter-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="veranstaltung-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/veranstaltung-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="veranstaltung-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.veranstaltung-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="veranstaltung-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/veranstaltung-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="veranstaltung-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.veranstaltung-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
-8
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="verein-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/verein-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="verein-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.verein-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="verein-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/verein-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="verein-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.verein-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="zns-import-feature-jvm-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/zns-import-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="zns-import-feature-jvm-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.zns-import-feature.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="zns-import-feature-wasm-js-1.0.0">
|
|
||||||
<output-path>$PROJECT_DIR$/frontend/features/zns-import-feature/build/libs</output-path>
|
|
||||||
<root id="archive" name="zns-import-feature-wasm-js-1.0.0.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.frontend.features.zns-import-feature.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="zns-parser-jvm-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/core/zns-parser/build/libs</output-path>
|
|
||||||
<root id="archive" name="zns-parser-jvm-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.core.zns-parser.jvmMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<component name="ArtifactManager">
|
|
||||||
<artifact type="jar" name="zns-parser-wasm-js-1.0.0-SNAPSHOT">
|
|
||||||
<output-path>$PROJECT_DIR$/core/zns-parser/build/libs</output-path>
|
|
||||||
<root id="archive" name="zns-parser-wasm-js-1.0.0-SNAPSHOT.jar">
|
|
||||||
<element id="module-output" name="Meldestelle.core.zns-parser.wasmJsMain" />
|
|
||||||
</root>
|
|
||||||
</artifact>
|
|
||||||
</component>
|
|
||||||
Generated
-65
@@ -1,65 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="CompilerConfiguration">
|
|
||||||
<bytecodeTargetLevel target="25" />
|
|
||||||
</component>
|
|
||||||
<component name="JavacSettings">
|
|
||||||
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
|
|
||||||
<module name="Meldestelle.backend.infrastructure.event-store.valkey-event-store" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.event-store.valkey-event-store.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.event-store.valkey-event-store.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.gateway" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.gateway.integrationTest" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.gateway.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.gateway.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.messaging.messaging-client" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.messaging.messaging-client.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.messaging.messaging-client.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.messaging.messaging-config" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.messaging.messaging-config.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.messaging.messaging-config.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.monitoring.monitoring-server" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.monitoring.monitoring-server.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.monitoring.monitoring-server.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.persistence" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.persistence.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.persistence.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.security" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.security.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.infrastructure.security.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.billing.billing-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.billing.billing-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.billing.billing-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.entries.entries-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.entries.entries-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.entries.entries-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.events.events-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.events.events-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.events.events-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.identity.identity-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.identity.identity-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.identity.identity-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.mail.mail-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.mail.mail-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.mail.mail-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.masterdata.masterdata-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.masterdata.masterdata-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.masterdata.masterdata-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.ping.ping-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.ping.ping-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.ping.ping-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.results.results-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.results.results-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.results.results-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.scheduling.scheduling-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.scheduling.scheduling-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.scheduling.scheduling-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.series.series-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.series.series-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.series.series-service.test" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.zns-import.zns-import-service" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.zns-import.zns-import-service.main" options="-parameters" />
|
|
||||||
<module name="Meldestelle.backend.services.zns-import.zns-import-service.test" options="-parameters" />
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-18
@@ -1,18 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
|
||||||
<data-source source="LOCAL" name="pg-meldestelle-db@localhost" uuid="8835ccb7-a903-4b56-97aa-a6359a2f5d4e">
|
|
||||||
<driver-ref>postgresql</driver-ref>
|
|
||||||
<synchronize>true</synchronize>
|
|
||||||
<imported>true</imported>
|
|
||||||
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
|
|
||||||
<jdbc-url>jdbc:postgresql://localhost:5432/pg-meldestelle-db</jdbc-url>
|
|
||||||
<jdbc-additional-properties>
|
|
||||||
<property name="com.intellij.clouds.kubernetes.db.host.port" />
|
|
||||||
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
|
|
||||||
<property name="com.intellij.clouds.kubernetes.db.container.port" />
|
|
||||||
</jdbc-additional-properties>
|
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-109
@@ -1,109 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
|
||||||
<component name="GradleSettings">
|
|
||||||
<option name="linkedExternalProjectsSettings">
|
|
||||||
<GradleProjectSettings>
|
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
|
||||||
<option name="gradleJvm" value="openjdk-25" />
|
|
||||||
<option name="modules">
|
|
||||||
<set>
|
|
||||||
<option value="$PROJECT_DIR$" />
|
|
||||||
<option value="$PROJECT_DIR$/backend" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/cache" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/cache/cache-api" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/cache/valkey-cache" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/event-store" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/event-store/event-store-api" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/event-store/valkey-event-store" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/gateway" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/messaging" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/messaging/messaging-client" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/messaging/messaging-config" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/monitoring" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/monitoring/monitoring-client" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/monitoring/monitoring-server" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/persistence" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/security" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/infrastructure/zns-importer" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/billing" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/billing/billing-domain" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/billing/billing-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/entries" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/entries/entries-api" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/entries/entries-domain" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/entries/entries-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/events" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/events/events-api" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/events/events-common" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/events/events-domain" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/events/events-infrastructure" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/events/events-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/identity" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/identity/identity-domain" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/identity/identity-infrastructure" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/identity/identity-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/mail" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/mail/mail-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/masterdata" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/masterdata/masterdata-api" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/masterdata/masterdata-common" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/masterdata/masterdata-domain" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/masterdata/masterdata-infrastructure" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/masterdata/masterdata-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/ping" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/ping/ping-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/results" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/results/results-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/scheduling" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/scheduling/scheduling-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/series" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/series/series-service" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/zns-import" />
|
|
||||||
<option value="$PROJECT_DIR$/backend/services/zns-import/zns-import-service" />
|
|
||||||
<option value="$PROJECT_DIR$/contracts" />
|
|
||||||
<option value="$PROJECT_DIR$/contracts/ping-api" />
|
|
||||||
<option value="$PROJECT_DIR$/core" />
|
|
||||||
<option value="$PROJECT_DIR$/core/core-domain" />
|
|
||||||
<option value="$PROJECT_DIR$/core/core-utils" />
|
|
||||||
<option value="$PROJECT_DIR$/core/zns-parser" />
|
|
||||||
<option value="$PROJECT_DIR$/docs" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/core" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/core/auth" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/core/design-system" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/core/domain" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/core/local-db" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/core/navigation" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/core/network" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/core/sync" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/billing-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/device-initialization" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/funktionaer-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/nennung-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/pferde-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/ping-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/profile-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/reiter-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/turnier-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/veranstalter-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/veranstaltung-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/verein-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/features/zns-import-feature" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/shells" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/shells/meldestelle-desktop" />
|
|
||||||
<option value="$PROJECT_DIR$/frontend/shells/meldestelle-web" />
|
|
||||||
<option value="$PROJECT_DIR$/platform" />
|
|
||||||
<option value="$PROJECT_DIR$/platform/architecture-tests" />
|
|
||||||
<option value="$PROJECT_DIR$/platform/platform-bom" />
|
|
||||||
<option value="$PROJECT_DIR$/platform/platform-dependencies" />
|
|
||||||
<option value="$PROJECT_DIR$/platform/platform-testing" />
|
|
||||||
</set>
|
|
||||||
</option>
|
|
||||||
</GradleProjectSettings>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-7
@@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="KotlinJpsPluginSettings">
|
|
||||||
<option name="externalSystemId" value="Gradle" />
|
|
||||||
<option name="version" value="2.3.20" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
Generated
-7
@@ -1,7 +0,0 @@
|
|||||||
<project version="4">
|
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
|
||||||
<component name="FrameworkDetectionExcludesConfiguration">
|
|
||||||
<file type="web" url="file://$PROJECT_DIR$" />
|
|
||||||
</component>
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_25" default="true" project-jdk-name="openjdk-25" project-jdk-type="JavaSDK" />
|
|
||||||
</project>
|
|
||||||
Generated
-6
@@ -1,6 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
@@ -3,32 +3,35 @@
|
|||||||
Dieses Dokument definiert die Zusammenarbeit zwischen dem User (Owner) und den spezialisierten KI-Agenten.
|
Dieses Dokument definiert die Zusammenarbeit zwischen dem User (Owner) und den spezialisierten KI-Agenten.
|
||||||
Es dient als zentraler **System-Prompt-Erweiterung** für neue Chat-Sessions.
|
Es dient als zentraler **System-Prompt-Erweiterung** für neue Chat-Sessions.
|
||||||
|
|
||||||
## 🚀 Strategische Ausrichtung
|
## 🚀 Strategische Ausrichtung (Reality-Reset 15.06.2026)
|
||||||
|
|
||||||
Das Projekt **"Meldestelle"** entwickelt eine ÖTO/FEI-konforme, offline-fähige Turnier-Software.
|
Das Projekt **"Meldestelle"** entwickelt eine ÖTO/FEI-konforme, offline-fähige Turnier-Software.
|
||||||
1. **Desktop-First:** Primäres Ziel ist die Compose Desktop App (KMP). UX & Performance sind auf Profis optimiert.
|
1. **Desktop-First:** Primäres Ziel ist die Compose Desktop App (KMP). UX & Performance sind auf Profis optimiert.
|
||||||
2. **Offline-First:** Das System muss autark (ohne Internet) funktionieren. Sync-Logik ist Kernbestandteil.
|
2. **Offline-First:** Das System muss autark (ohne Internet) funktionieren.
|
||||||
3. **Domain-Driven:** 6 Bounded Contexts (SCS) bilden den fachlichen Rahmen.
|
3. **Domain-Driven:** Die Hierarchie **Veranstaltung -> Turnier -> Bewerb/Abteilung** ist das absolute Fundament.
|
||||||
|
|
||||||
|
**WICHTIG:** Alle Agenten arbeiten ab sofort nur noch auf Basis von verifiziertem Code. "Halluzinationen" über
|
||||||
|
abgeschlossene Phasen ohne entsprechende Implementierung sind untersagt.
|
||||||
|
|
||||||
## 1. Protokoll & Rollen-Badges
|
## 1. Protokoll & Rollen-Badges
|
||||||
Jede Agenten-Antwort **muss** mit dem entsprechenden Badge beginnen, um den Kontext und die Verantwortlichkeit zu klären.
|
Jede Agenten-Antwort **muss** mit dem entsprechenden Badge beginnen, um den Kontext und die Verantwortlichkeit zu klären.
|
||||||
|
|
||||||
* **🏗️ [Lead Architect]**: Hüter der **MASTER_ROADMAP**. Verantwortlich für System-Design, Build-Logik (Gradle), Modulstruktur und ADRs.
|
* **🏗️ [Lead Architect]**: Hüter der **MASTER_ROADMAP**. Verantwortlich für System-Design, Build-Logik (Gradle), Modulstruktur und ADRs.
|
||||||
* [Playbook](docs/04_Agents/Playbooks/Architect.md)
|
* [Playbook](docs/05_Governance/Agents/Playbooks/Architect.md)
|
||||||
* **📜 [Rulebook Expert]**: Wächter über **ÖTO & FEI**. Validiert Business-Rules gegen das offizielle Pferdesport-Regelwerk.
|
* **📜 [Rulebook Expert]**: Wächter über **ÖTO & FEI**. Validiert Business-Rules gegen das offizielle Pferdesport-Regelwerk.
|
||||||
* [Playbook](docs/04_Agents/Playbooks/RulebookExpert.md)
|
* [Playbook](docs/05_Governance/Agents/Playbooks/RulebookExpert.md)
|
||||||
* **👷 [Backend Developer]**: Kotlin & Spring Boot Experte. Fokus auf DDD, Persistenz (Postgres) und **Delta-Sync APIs**.
|
* **👷 [Backend Developer]**: Kotlin & Spring Boot Experte. Fokus auf DDD, Persistenz (Postgres) und **Delta-Sync APIs**.
|
||||||
* [Playbook](docs/04_Agents/Playbooks/BackendDeveloper.md)
|
* [Playbook](docs/05_Governance/Agents/Playbooks/BackendDeveloper.md)
|
||||||
* **🎨 [Frontend Expert]**: KMP & Compose Desktop Spezialist. Implementiert State-Management und High-Performance UI.
|
* **🎨 [Frontend Expert]**: KMP & Compose Desktop Spezialist. Implementiert State-Management und High-Performance UI.
|
||||||
* [Playbook](docs/04_Agents/Playbooks/FrontendExpert.md)
|
* [Playbook](docs/05_Governance/Agents/Playbooks/FrontendExpert.md)
|
||||||
* **🖌️ [UI/UX Designer]**: "Toolsmith" für High-Density Enterprise-UIs. Fokus auf Tastatur-Bedienbarkeit und Effizienz.
|
* **🖌️ [UI/UX Designer]**: "Toolsmith" für High-Density Enterprise-UIs. Fokus auf Tastatur-Bedienbarkeit und Effizienz.
|
||||||
* [Playbook](docs/04_Agents/Playbooks/UIUXDesigner.md)
|
* [Playbook](docs/05_Governance/Agents/Playbooks/UIUXDesigner.md)
|
||||||
* **🐧 [DevOps Engineer]**: Infrastruktur-Automatisierung (Docker, Gitea-Actions). Fokus auf Stabilität und lokale Dev-Umgebung.
|
* **🐧 [DevOps Engineer]**: Infrastruktur-Automatisierung (Docker, Gitea-Actions). Fokus auf Stabilität und lokale Dev-Umgebung.
|
||||||
* [Playbook](docs/04_Agents/Playbooks/DevOpsEngineer.md)
|
* [Playbook](docs/05_Governance/Agents/Playbooks/DevOpsEngineer.md)
|
||||||
* **🧐 [QA Specialist]**: Test-Stratege (Shift-Left). Fokus auf Unit-, Integration- und Edge-Case-Tests (Testing Pyramid).
|
* **🧐 [QA Specialist]**: Test-Stratege (Shift-Left). Fokus auf Unit-, Integration- und Edge-Case-Tests (Testing Pyramid).
|
||||||
* [Playbook](docs/04_Agents/Playbooks/QASpecialist.md)
|
* [Playbook](docs/05_Governance/Agents/Playbooks/QASpecialist.md)
|
||||||
* **🧹 [Curator]**: Wissens-Management & Dokumentations-Check (ADR, Reference, Journal). Beendet jede Session.
|
* **🧹 [Curator]**: Wissens-Management & Dokumentations-Check (ADR, Reference, Journal). Beendet jede Session.
|
||||||
* [Playbook](docs/04_Agents/Playbooks/Curator.md)
|
* [Playbook](docs/05_Governance/Agents/Playbooks/Curator.md)
|
||||||
|
|
||||||
## 2. Der "Meldestelle"-Workflow
|
## 2. Der "Meldestelle"-Workflow
|
||||||
1. **Kontext-Check:** Lies immer zuerst die `MASTER_ROADMAP` in `docs/01_Architecture/`.
|
1. **Kontext-Check:** Lies immer zuerst die `MASTER_ROADMAP` in `docs/01_Architecture/`.
|
||||||
@@ -37,7 +40,9 @@ Jede Agenten-Antwort **muss** mit dem entsprechenden Badge beginnen, um den Kont
|
|||||||
4. **Doku-as-Code:** Änderungen an Code/Architektur müssen sofort in `docs/` (ADR/Reference) reflektiert werden.
|
4. **Doku-as-Code:** Änderungen an Code/Architektur müssen sofort in `docs/` (ADR/Reference) reflektiert werden.
|
||||||
5. **Session-Abschluss:** Jede Session endet mit einem Eintrag durch den **Curator** (Journal oder Artefakt).
|
5. **Session-Abschluss:** Jede Session endet mit einem Eintrag durch den **Curator** (Journal oder Artefakt).
|
||||||
|
|
||||||
## 3. Projekt-Philosophie
|
## 🚫 Anti-Halluzinations-Protokoll (WICHTIG)
|
||||||
* **Information Density over White Space:** Wir bauen ein Profi-Werkzeug, kein Spielzeug.
|
Um Fehlentscheidungen und falsche Status-Meldungen zu verhindern, gelten ab sofort folgende Regeln:
|
||||||
* **Speed over Animation:** Reaktionsgeschwindigkeit der UI hat höchste Priorität.
|
1. **Kein "Erledigt" ohne Beweis:** Ein Task darf erst dann als abgeschlossen markiert werden, wenn ein Test-Log, ein erfolgreicher Build oder eine explizite Bestätigung des Users vorliegt.
|
||||||
* **Offline-Authentizität:** Lokale Daten sind die "Source of Truth" für den User; der Server ist das Backup/Sync-Target.
|
2. **Status "Verifikation ausstehend":** Code, der geschrieben, aber nicht auf Hardware getestet wurde, muss zwingend diesen Zusatz tragen.
|
||||||
|
3. **Fakten-Check vor Abschluss:** Vor dem Senden der `submit`-Meldung muss der Agent prüfen: "Habe ich das wirklich laufen sehen oder nehme ich es nur an?"
|
||||||
|
4. **Fehler-Eingeständnis:** Bei Entdeckung einer Halluzination ist sofort der User zu informieren und der Status in allen Dokumenten (Roadmap, Journal) zu korrigieren.
|
||||||
|
|||||||
+10
-207
@@ -17,216 +17,19 @@ Versionierung folgt [Semantic Versioning](https://semver.org/lang/de/).
|
|||||||
|
|
||||||
### Hinzugefügt
|
### Hinzugefügt
|
||||||
|
|
||||||
- **Onboarding & Desktop-UX - 15.04.2026:**
|
- **Basis-Infrastruktur & Domain-Definition:**
|
||||||
- **Desktop-App:** Dynamisierung der Statusanzeigen im App-Footer ("Cloud synchronisiert" & "Verbunden").
|
- DDD-Modelle für `Veranstaltung`, `Turnier`, `Bewerb` und `Abteilung` gemäß ÖTO definiert.
|
||||||
- **Connectivity-Tracking:** Implementierung des `ConnectivityTracker` (KMP) zur Echtzeit-Überwachung der API-Gateway
|
- ZNS-Parser Prototyp für Dateiformate (VEREIN01, LIZENZ01, PFERD01, RICHT01).
|
||||||
Erreichbarkeit.
|
- Plan-B Mail-Service (Spring Boot) für Nennungs-Versand via World4You.
|
||||||
- **LAN-Erkennung:** Integration des `NetworkDiscoveryService` (mDNS) im Footer zur Anzeige aktiver Instanzen im
|
- Desktop-App Skelett mit Navigation und UI-Hüllen (Compose Desktop).
|
||||||
lokalen Netzwerk.
|
|
||||||
- **Onboarding:** Datenfluss vom `SettingsManager` bis in den Footer finalisiert (Anzeige des echten Gerätenamens).
|
|
||||||
- **Online-Nennung & Integration - 15.04.2026:**
|
|
||||||
- **Backend (Mail-Service):** Finalisierung des `MailController` für Web-Nennungen inkl. SMTP-Versand via World4You.
|
|
||||||
- **Frontend (Desktop):** `NennungsEingangScreen` an Live-Daten vom `mail-service` angebunden.
|
|
||||||
- **Repository:** `NennungRemoteRepository` (KMP) um `holeNennungen()` erweitert.
|
|
||||||
- **Billing & ÖTO - 15.04.2026:**
|
|
||||||
- **Sportförderbeitrag:** Automatische Buchung von 1,00 EUR (§16 ÖTO) bei jeder Nennung im `entries-service`
|
|
||||||
implementiert.
|
|
||||||
|
|
||||||
### Behoben
|
### Reality-Reset (28.04.2026)
|
||||||
|
|
||||||
- **Identity-Modul:** Umstellung auf `kotlin.time.Instant` zur Vermeidung von Deprecation-Warnungen und Behebung von
|
- **Korrektur:** Vormalige Einträge über "abgeschlossene" Billing-, Results- und Zeitplan-Features wurden entfernt, da
|
||||||
Persistenz-Konflikten im `ExposedDeviceRepository`.
|
diese im Code nicht funktional hinterlegt waren.
|
||||||
- **Koin DI:** Korrektur von Typ-Inferenz-Fehlern beim `HttpClient` im `nennung-feature` durch explizite Qualifier.
|
- **Status:** Fokus zurück auf die Kern-Hierarchie (Veranstaltung -> Turnier -> Bewerb).
|
||||||
- **Turnier-Feature:** Behebung eines unsicheren Casts (`Any!` zu `List<String>`) in `TurnierStammdatenTab.kt`.
|
|
||||||
- **Konfiguration:** Harmonisierung der Ports (Mail-Service auf 8083) in `.env`, `dc-backend.yaml` und
|
|
||||||
`PlatformConfig.jvm.kt`.
|
|
||||||
|
|
||||||
### Hinzugefügt
|
### [1.0.6-SNAPSHOT] — 2026-04-10
|
||||||
- **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:** `BillingRepository` und `BillingViewModel` auf reale API-Anbindung (Ktor) umgestellt; `BillingScreen` funktionalisiert.
|
|
||||||
- **Backend (Series):** JPA-Entitäten `Serie` und `SeriePunkt` im `series-service` stabilisiert und Flyway-Migrationen für das Datenbankschema erstellt.
|
|
||||||
- **Fix:** Behebung von IDE-Mapping-Warnungen durch explizite `@Column` Namen in den JPA-Entitäten.
|
|
||||||
- **Backend Fixes - 12.04.2026:**
|
|
||||||
- **Infrastruktur:** Behebung von Startfehlern im `events-service` (DataSource) und `masterdata-service` (Consul).
|
|
||||||
- **Build:** Integration von `results-service` und `series-service` in `settings.gradle.kts`.
|
|
||||||
- **Domain:** `Serie` und `SeriePunkt` zu `data class` konvertiert (copy() Unterstützung).
|
|
||||||
- **Phase 11 (Ergebniserfassung & Platzierung) - 12.04.2026:**
|
|
||||||
- **Backend (Results):** `results-service` um JPA-Entitäten, Repositories und Business-Logik für Platzierungsberechnungen (Wertnote, Zeit, Fehler) ergänzt.
|
|
||||||
- **Infrastructure:** `dc-backend.yaml` und `GatewayConfig.kt` um den Service `results` (Port 8088) erweitert.
|
|
||||||
- **Frontend Domain:** `ErgebnisRepository` und `Ergebnis`-Modell für Wertnoten, Zeiten und Status erstellt.
|
|
||||||
- **Frontend UI:** `ErgebnisEditDialog` zur schnellen Ergebniserfassung hinzugefügt; `TurnierStartlistenTab` ermöglicht nun Erfassung per Zeilen-Klick.
|
|
||||||
- **Frontend UI:** `TurnierErgebnislistenTab` vervollständigt: Buttons für "Platzierung berechnen" und "Drucken" (PDF) funktionalisiert.
|
|
||||||
- **Fix:** Kompilierungsprobleme im `TurnierFeatureModule` und `ScreenPreviews.kt` behoben (fehlende `ergebnisRepo` Parameter).
|
|
||||||
|
|
||||||
### Hinzugefügt
|
|
||||||
- **Phase 10.4 (Series-Context Vertiefung) - 12.04.2026:**
|
|
||||||
- **Backend (Series):** `series-service` um Logik für Streichresultate (`ReglementTyp`) und Bindungsarten (Reiter-zentriert, Pferde-zentriert, Paar-Bindung) erweitert.
|
|
||||||
- **Infrastructure:** `dc-backend.yaml` und `GatewayConfig.kt` um den Service `series` (Port 8089) erweitert.
|
|
||||||
- **Frontend Domain:** `SeriesRepository` und 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.md` aktualisiert (Phase 10 & 11 auf 'Completed' gesetzt).
|
|
||||||
|
|
||||||
### Hinzugefügt
|
|
||||||
- **Phase 10.3 (Echter Datenverkehr & Infrastruktur) - 12.04.2026:**
|
|
||||||
- **Infrastructure:** Docker-Services für `masterdata`, `events` und `zns-import` in `dc-backend.yaml` ergänzt.
|
|
||||||
- **Gateway:** API-Gateway Routing für Masterdata (`/api/v1/masterdata`) und Events (`/api/v1/events`) konfiguriert.
|
|
||||||
- **Frontend (Vereine):** `VereinRepository` (Ktor) und `VereinViewModel` implementiert für echtes Anlegen von Veranstaltern.
|
|
||||||
- **Frontend (Events):** `TurnierViewModel` an das reale `TurnierRepository` angebunden.
|
|
||||||
- **Fix:** `verein-feature` Abhängigkeiten korrigiert (Network/Ktor).
|
|
||||||
- **Fix:** Polling-Endpoints im `ZnsImportViewModel` an das neue Gateway-Routing angepasst.
|
|
||||||
|
|
||||||
### Hinzugefügt
|
|
||||||
- **Phase 10.2 (Masterdata-Editoren & Organisation) - 12.04.2026:**
|
|
||||||
- **Frontend:** `MasterdataEditDialogs.kt` für die Bearbeitung von Reiter- und Pferdedaten direkt im Turnier-Kontext.
|
|
||||||
- **Frontend:** Erweiterung des `MasterdataRepository` um Schreibzugriffe (`saveReiter`, `savePferd`).
|
|
||||||
- **Frontend:** Funktionale Suche für Turnierleiter im `Organisation`-Tab via `NennungViewModel` und Masterdata-API.
|
|
||||||
- **Frontend:** State-Management für Stammdaten-Editoren im `NennungViewModel`.
|
|
||||||
- **Fix:** Kompilierungsfehler in `ScreenPreviews.kt` behoben (fehlende Interface-Methoden in Mocks).
|
|
||||||
- **Fix (Desktop Shell):** Fehlendes `turnierFeatureModule` in `main.kt` registriert und Login-Gate in `DesktopApp.kt` optimiert.
|
|
||||||
|
|
||||||
### 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:** `NennungViewModel` zur Steuerung der Suche und Status-Verwaltung von Nennungen.
|
|
||||||
- **Frontend:** Funktionalisierung des `Nennungen`-Tabs (Suche, Echt-Datenanbindung) und Vorbereitung des `Organisation`-Tabs.
|
|
||||||
- **Frontend:** `DefaultMasterdataRepository` zur Suche in Reitern, Pferden und Funktionären via Backend-API.
|
|
||||||
- **Netzwerk:** Erweiterung der `ApiRoutes` um Endpunkte für Masterdata und Nennungen.
|
|
||||||
- **Phase 10 (Series-Context) Vorbereitung:**
|
|
||||||
- **Frontend:** Neuer `SeriesScreen.kt` fü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`).
|
|
||||||
- **Turnier-Feature Hardening:**
|
|
||||||
- **Frontend:** `STARTLISTEN` und `ERGEBNISLISTEN` Tabs vollständig an das `BewerbViewModel` angebunden (Bewerbs-Auswahl mit echten Daten).
|
|
||||||
- **Frontend:** Implementierung der Starter-Anzeige in der Startliste (LazyColumn).
|
|
||||||
|
|
||||||
### Geändert
|
|
||||||
- **Turnier-Feature:** Sichtbarkeit von `BewerbViewModel.generateStartliste()` auf `public` geändert, um den Aufruf aus dem Tab zu ermöglichen.
|
|
||||||
- **Frontend (Desktop):** `ScreenPreviews.kt` aktualisiert 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_log` Persistenz und Abfrage-API für manuelle Eingriffe in Bewerbe.
|
|
||||||
- **Backend:** ZNS B-Satz Export Endpunkt (`/export/zns/b-satz`) zur Generierung von `BBEWERBE` Datensätzen.
|
|
||||||
- **Core:** `FixedWidthLineBuilder` zur präzisen Generierung von ZNS-konformen Festbreiten-Formaten.
|
|
||||||
|
|
||||||
### Behoben
|
|
||||||
- **Infrastruktur:** Veraltete `newSuspendedTransaction` in `DatabaseFactory.kt` durch moderne `suspendTransaction` (Exposed v1) ersetzt.
|
|
||||||
- **Frontend (Desktop):** Kompilierfehler in `ScreenPreviews.kt` behoben, indem fehlende Interface-Methoden im Mock-Repository implementiert wurden.
|
|
||||||
- **Backend (Tests):** `JdbcSQLSyntaxErrorException` im `BewerbeZeitplanIntegrationTest` durch Korrektur des Schema-Setups (Audit-Log Tabelle) gelöst.
|
|
||||||
|
|
||||||
### Hinzugefügt
|
|
||||||
- **Bugfix**: Behebung von Build-Fehlern im `veranstalter-feature` nach der Paket-Konsolidierung.
|
|
||||||
- **Frontend**: `FakeVeranstalterRepository` in `commonMain` implementiert, um saubere KMP-DI zu ermöglichen.
|
|
||||||
- **Frontend**: Veraltete Imports und Referenzen im `meldestelle-desktop` Shell 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 `Bewerb` und `Abteilung` um Besichtigungs- und Pausen-Konfigurationen.
|
|
||||||
- **Backend (Entries):** Neues Datenmodell `BesichtigungsBlock` für wettbewerbsübergreifende Parcoursbesichtigungen.
|
|
||||||
- **Backend (Entries):** API-Endpunkt `PATCH /bewerbe/{id}/zeitplan` für schnelle Zeitplan-Updates implementiert.
|
|
||||||
- **Backend (Entries):** `StartlistenService` um ÖTO-konforme Zeitberechnung (Besichtigungs-Puffer, Pausen-Intervalle) erweitert.
|
|
||||||
|
|
||||||
### Geändert
|
|
||||||
- Masterdata/Domain: Umbenennungen zur Vereinheitlichung der Terminologie (DE):
|
|
||||||
- `MasterdataLicenseRepository` → `LizenzRepository`
|
|
||||||
- `LicenseMatrixService` → `LizenzMatrixService`
|
|
||||||
- `LicenseMatrixServiceImpl` → `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 `events` Services (Domain, Infrastructure, API, Service).
|
|
||||||
- **Domain:** Umstellung auf `kotlin.time.Instant` zur Vermeidung von Deprecation-Warnungen (Kotlin 2.1.20+) und Harmonisierung mit dem Rulebook-Expert.
|
|
||||||
- **Infrastructure:** Anpassung an den `org.jetbrains.exposed.v1` Namespace und Implementierung von UUID-Konvertierungen zwischen `kotlin.uuid.Uuid` (Domain) und `java.util.UUID` (DB).
|
|
||||||
- **API:** Refactoring des `VeranstaltungController` zur direkten Repository-Nutzung (Alignment mit `entries` Service).
|
|
||||||
- **Service-Config:** Umstellung auf Flyway-basiertes Tenant-Schema-Management in `EventsDatabaseConfiguration`.
|
|
||||||
- **Build:** Behebung des `shadowJar` Fehlers in `events-infrastructure` durch Entfernen des unnötigen `ktor` Plugins in der Library-Schicht.
|
|
||||||
|
|
||||||
- Masterdata: Automatisches Seeding aller Reiterlizenzen (license_matrix) beim Start des `masterdata-service` via `ReiterlizenzenSeeder` (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`, Kombis `R{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: `ZnsReiterParser` füllt `lizenzen`-Liste (1:n) entsprechend und leitet `lizenzKlasse` bei fehlendem 4‑Spalten‑Code aus Token ab.
|
|
||||||
- QA: Neue Unit-Tests (Tokenizer) für Beispiele `R2S3`, `R2D4`, `RD2` u. a.; alle Parser-Tests grün.
|
|
||||||
|
|
||||||
- **Core:** Modularisierte ZNS-Parser eingeführt (`ZnsVereinParser`, `ZnsReiterParser`, `ZnsPferdParser`, `ZnsFunktionaerParser`) zur Verbesserung der Wartbarkeit und Unterstützung von Einzelimporten.
|
|
||||||
- **Fix:** SQL-Migrationsfehler in `V010` behoben, indem die Umbenennung der Spalte `name` in `verein_name` durch einen idempotenten `DO`-Block abgesichert wurde (behebt "Unable to resolve column 'name'").
|
|
||||||
- **Infrastructure:** Datenbank-Migration `V010` hinzugefügt, um das Schema final mit den `Exposed`-Modellen zu synchronisieren.
|
|
||||||
- **Infrastructure:** Datei-Archivierung für hochgeladene ZNS-ZIP-Dateien im `ZnsImportOrchestrator` implementiert.
|
|
||||||
- **Infrastructure:** `ZnsImportService` vollständig auf die neuen spezialisierten Parser umgestellt und als Spring-Bean im Backend registriert.
|
|
||||||
- **QA:** Umfassende Test-Suite `ZnsParserTest.kt` mit 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:** `MasterdataDatabaseConfiguration` korrigiert: Expliziter Aufruf von `Database.connect()` hinzugefügt, um Abstürze beim Anwendungsstart ("No database specified") zu beheben.
|
|
||||||
- **Infrastructure:** `application.yml` im `masterdata-service` vervollständigt (DataSource-Konfiguration mit `pg-user`/`pg-password` und 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.kt` um 14 Tests erweitert: CSN-C-NEU ≤95 cm / ≥100 cm Pflicht-Teilung,
|
|
||||||
ORGANISATORISCH, SEPARATE_SIEGEREHRUNG, Caprilli-Regression, Grenzfälle 90/110 cm
|
|
||||||
- **Domain:** `AbteilungsTeilungsTypE` um `ORGANISATORISCH` und `SEPARATE_SIEGEREHRUNG` erweitert
|
|
||||||
|
|
||||||
### Behoben
|
|
||||||
|
|
||||||
- **Masterdata/Infrastructure:** Kompilierfehler in `AltersklasseRepositoryImpl` durch Vereinheitlichung der Exposed-Tabellendefinition behoben:
|
|
||||||
- `AltersklassenTable` → `AltersklasseTable`
|
|
||||||
- Spalte `altersklassen_code` → `altersklasse_code`
|
|
||||||
- Tabellenname `altersklassen` → `altersklasse`
|
|
||||||
- **Masterdata/API:** Fehlendes Interface-Mapping ergänzt: `RegulationRepository` enthält nun `findAllTurnierklassen()`; `ExposedRegulationRepository` implementiert die Methode und `RegulationController` kompiliert wieder.
|
|
||||||
- **ZNS-Import:** `AltersklassenExposedRepository` korrigiert (richtiger Domain-Typ `AltersklasseDefinition`, Mapping von `SparteE` und 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:** `LicenseMatrixServiceImpl` um 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.hasLizenzForSparte` implementiert (RD1..RD3 nur DRESSUR; R1..R4 nur SPRINGEN). Behebt Testfehler „isEligible verweigert Start ohne passende Spartenlizenz“ im `LicenseMatrixServiceTest`.
|
|
||||||
|
|
||||||
### Behoben
|
|
||||||
- **Backend (Entries):** Fehlschlagenden Unit-Test `berechneStartzeiten sollte Zeiten korrekt aufsummieren` korrigiert; 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-feature` behoben; fehlendes `build.gradle.kts` mit JVM-Target und Compose/Koin-Abhängigkeiten ergänzt.
|
|
||||||
- **Frontend (Desktop):** Massive Inkonsistenzen in der Paketstruktur des `veranstalter-feature` bereinigt; alle Komponenten (ViewModel, Screens, Mocks) auf das Standardpaket `at.mocode.frontend.features.veranstalter` konsolidiert, um Redeklarationen und Import-Fehler zu beheben.
|
|
||||||
- **Frontend (Desktop):** Kompilierfehler im `VeranstalterDetailScreen` durch korrekte Paket-Referenzierung des `FakeVeranstaltungStore` gelö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 `RD4` derzeit nicht als Enum vorhanden ist und wie `RD3` behandelt 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_qualifikation` in der Initialisierung beider Services (`masterdata` und `zns-import`) ergänzt, um `PSQLException` während des ZNS-Imports zu beheben.
|
|
||||||
- **Infrastructure:** Start-Probleme des `masterdata-service` endgü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-service` durch Trennung der Bind-Adressen (Spring: 127.0.0.1, Ktor: 0.0.0.0) und Bereinigung verwaister Prozesse stabilisiert.
|
|
||||||
- **Core:** Veraltete `ZnsLegacyParsersTest.kt` entfernt; alle Tests sind nun in `ZnsParserTest.kt` konsolidiert.
|
|
||||||
- **Domain:** Fehlschlagenden `LicenseMatrixServiceTest` behoben; fehlende `reiterLizenz`-Daten in Test-Reitern ergänzt und Fallback-Logik in `LicenseMatrixServiceImpl` für spartenübergreifende Lizenzen (z.B. Springlizenz für Dressur-Basis) stabilisiert.
|
|
||||||
- **Infrastructure:** Fehlschlagenden `RegulationSeedVerificationTest` behoben; Testdaten an das neue Modell (`reiterLizenz` Feld) angepasst.
|
|
||||||
- **Infrastructure:** Kompilierfehler 'Unresolved reference lizenzKlasse' in `ReiterExposedRepository` behoben; fehlendes Feld `lizenzKlasse` zu `ReiterTable` und Datenbank-Migration `V010` hinzugefügt.
|
|
||||||
- **Onboarding:** `remember` → `rememberSaveable` für `geraetName`, `sharedKey`, `znsStatus` in `OnboardingScreen.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.yml` Gitea Actions Workflow)
|
|
||||||
- `CHANGELOG.md` eingeführt (dieses Dokument)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## [1.0.6-SNAPSHOT] — 2026-04-10
|
|
||||||
|
|
||||||
### Hinzugefügt
|
### Hinzugefügt
|
||||||
- **Entries-Domain:** Strukturiertes Abteilungs-Warnungssystem gemäß ÖTO § 39 implementiert.
|
- **Entries-Domain:** Strukturiertes Abteilungs-Warnungssystem gemäß ÖTO § 39 implementiert.
|
||||||
|
|||||||
@@ -14,13 +14,13 @@ Die gesamte Projektdokumentation (Architektur, Fachdomäne, Entwickler-Anleitung
|
|||||||
**Starte hier:** [**→ docs/README.md**](./docs/README.md)
|
**Starte hier:** [**→ docs/README.md**](./docs/README.md)
|
||||||
|
|
||||||
| Bereich | Inhalt |
|
| Bereich | Inhalt |
|
||||||
|-----------------------------------------------|---------------------------------------------|
|
|-----------------------------------------------|---------------------------------------------------|
|
||||||
| [01_Architecture](./docs/01_Architecture) | Master Roadmap, ADRs, C4‑Modelle, Desktop‑Konzept |
|
| [01_Architecture](./docs/01_Architecture) | Master Roadmap, ADRs, C4‑Modelle, Desktop‑Konzept |
|
||||||
| [02_Guides](./docs/02_Guides) | Setup-Anleitungen, Entwickler-Guidelines |
|
| [02_Guides](./docs/02_Guides) | Setup-Anleitungen, Entwickler-Guidelines |
|
||||||
| [03_Domain](./docs/03_Domain) | Fachlichkeit, Turnierregeln, Entities |
|
| [03_Domain](./docs/03_Domain) | Fachlichkeit, Turnierregeln, Entities |
|
||||||
| [07_Infrastructure](./docs/07_Infrastructure) | Docker, Keycloak, CI/CD, Zora-Infrastruktur |
|
| [07_Infrastructure](./docs/07_Infrastructure) | Docker, Keycloak, CI/CD, Zora-Infrastruktur |
|
||||||
|
|
||||||
Wesentliche Architektur-Referenz: [Offline‑First Desktop & Backend (Kurzkonzept)](./docs/01_Architecture/konzept-offline-first-desktop-backend-de.md)
|
Wesentliche Architektur-Referenz: [Offline‑First Desktop & Backend (Kurzkonzept)](./docs/01_Architecture/Concepts/konzept-offline-first-desktop-backend-de.md)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -113,3 +113,9 @@ Beiträge sind willkommen. Bitte lies zunächst die Entwickler-Guides unter [`do
|
|||||||
## 📜 Lizenz
|
## 📜 Lizenz
|
||||||
|
|
||||||
Dieses Projekt steht unter der [MIT License](LICENSE).
|
Dieses Projekt steht unter der [MIT License](LICENSE).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Test
|
||||||
|
|
||||||
|
Das ist der 2. Versuch über Remote zu Committen
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ import io.valkey.springframework.data.valkey.core.ValkeyTemplate
|
|||||||
import io.valkey.springframework.data.valkey.serializer.StringValkeySerializer
|
import io.valkey.springframework.data.valkey.serializer.StringValkeySerializer
|
||||||
import kotlinx.coroutines.joinAll
|
import kotlinx.coroutines.joinAll
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.testcontainers.containers.GenericContainer
|
import org.testcontainers.containers.GenericContainer
|
||||||
@@ -70,7 +70,7 @@ class ValkeyDistributedCachePerformanceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test cache performance with high concurrent access`() = runTest {
|
fun `test cache performance with high concurrent access`() = runBlocking {
|
||||||
logger.info { "Starting concurrent access test" }
|
logger.info { "Starting concurrent access test" }
|
||||||
val numberOfCoroutines = 100
|
val numberOfCoroutines = 100
|
||||||
val operationsPerCoroutine = 50
|
val operationsPerCoroutine = 50
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
# ===================================================================
|
# ===================================================================
|
||||||
|
|
||||||
# === CENTRALIZED BUILD ARGUMENTS ===
|
# === CENTRALIZED BUILD ARGUMENTS ===
|
||||||
ARG GRADLE_VERSION=9.4.1
|
ARG GRADLE_VERSION=9.5.0
|
||||||
ARG JAVA_VERSION=25
|
ARG JAVA_VERSION=25.0.2
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
ARG VERSION=1.0.0-SNAPSHOT
|
ARG VERSION=1.0.0-SNAPSHOT
|
||||||
|
|
||||||
|
|||||||
+26
-5
@@ -7,10 +7,16 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
|||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
|
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
|
||||||
import org.springframework.security.config.http.SessionCreationPolicy
|
import org.springframework.security.config.http.SessionCreationPolicy
|
||||||
import org.springframework.security.oauth2.core.DelegatingOAuth2TokenValidator
|
import org.springframework.security.oauth2.core.DelegatingOAuth2TokenValidator
|
||||||
import org.springframework.security.oauth2.jwt.*
|
import org.springframework.security.oauth2.jwt.Jwt
|
||||||
|
import org.springframework.security.oauth2.jwt.JwtDecoder
|
||||||
|
import org.springframework.security.oauth2.jwt.JwtTimestampValidator
|
||||||
|
import org.springframework.security.oauth2.jwt.NimbusJwtDecoder
|
||||||
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter
|
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter
|
||||||
import org.springframework.security.web.SecurityFilterChain
|
import org.springframework.security.web.SecurityFilterChain
|
||||||
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
|
||||||
|
import org.springframework.web.cors.CorsConfiguration
|
||||||
|
import org.springframework.web.cors.CorsConfigurationSource
|
||||||
|
import org.springframework.web.cors.UrlBasedCorsConfigurationSource
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableWebSecurity
|
@EnableWebSecurity
|
||||||
@@ -21,16 +27,16 @@ class GlobalSecurityConfig {
|
|||||||
fun filterChain(http: HttpSecurity): SecurityFilterChain {
|
fun filterChain(http: HttpSecurity): SecurityFilterChain {
|
||||||
http
|
http
|
||||||
.csrf { it.disable() } // CSRF nicht nötig für Stateless REST APIs
|
.csrf { it.disable() } // CSRF nicht nötig für Stateless REST APIs
|
||||||
// WICHTIG: CORS explizit deaktivieren!
|
// WICHTIG: CORS wieder aktivieren für Plan-B (Direktzugriff ohne Gateway möglich)
|
||||||
// Das API-Gateway kümmert sich um CORS. Die Microservices dürfen KEINE
|
.cors { it.configurationSource(corsConfigurationSource()) }
|
||||||
// Access-Control-Allow-Origin Header setzen, sonst haben wir doppelte Header beim Client.
|
|
||||||
.cors { it.disable() }
|
|
||||||
.sessionManagement { it.sessionCreationPolicy(SessionCreationPolicy.STATELESS) }
|
.sessionManagement { it.sessionCreationPolicy(SessionCreationPolicy.STATELESS) }
|
||||||
.addFilterBefore(DeviceSecurityFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
.addFilterBefore(DeviceSecurityFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
||||||
.authorizeHttpRequests { auth ->
|
.authorizeHttpRequests { auth ->
|
||||||
// Explizite Freigaben (Health, Information, Public-Endpoints)
|
// Explizite Freigaben (Health, Information, Public-Endpoints)
|
||||||
auth.requestMatchers("/actuator/**").permitAll()
|
auth.requestMatchers("/actuator/**").permitAll()
|
||||||
auth.requestMatchers("/api/v1/devices/register").permitAll() // Onboarding erlauben
|
auth.requestMatchers("/api/v1/devices/register").permitAll() // Onboarding erlauben
|
||||||
|
auth.requestMatchers("/api/mail/nennung").permitAll() // Plan-B Nennungen erlauben
|
||||||
|
auth.requestMatchers("/api/mail/nennungen").authenticated() // Liste schützen
|
||||||
auth.requestMatchers("/ping/public").permitAll()
|
auth.requestMatchers("/ping/public").permitAll()
|
||||||
auth.requestMatchers("/ping/simple").permitAll()
|
auth.requestMatchers("/ping/simple").permitAll()
|
||||||
auth.requestMatchers("/ping/health").permitAll()
|
auth.requestMatchers("/ping/health").permitAll()
|
||||||
@@ -71,4 +77,19 @@ class GlobalSecurityConfig {
|
|||||||
converter.setJwtGrantedAuthoritiesConverter(KeycloakRoleConverter())
|
converter.setJwtGrantedAuthoritiesConverter(KeycloakRoleConverter())
|
||||||
return converter
|
return converter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
fun corsConfigurationSource(): CorsConfigurationSource {
|
||||||
|
val configuration = CorsConfiguration()
|
||||||
|
configuration.allowedOrigins = listOf("*")
|
||||||
|
configuration.allowedOriginPatterns = listOf("*")
|
||||||
|
configuration.allowedMethods = listOf("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD")
|
||||||
|
configuration.allowedHeaders = listOf("*")
|
||||||
|
configuration.exposedHeaders = listOf("*")
|
||||||
|
configuration.maxAge = 3600L
|
||||||
|
configuration.allowCredentials = false
|
||||||
|
val source = UrlBasedCorsConfigurationSource()
|
||||||
|
source.registerCorsConfiguration("/**", configuration)
|
||||||
|
return source
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
package at.mocode.zns.importer
|
package at.mocode.zns.importer
|
||||||
|
|
||||||
|
import at.mocode.core.domain.model.ReiterLizenz
|
||||||
import at.mocode.masterdata.domain.repository.*
|
import at.mocode.masterdata.domain.repository.*
|
||||||
import at.mocode.zns.parser.ZnsFunktionaerParser
|
import at.mocode.zns.parser.ZnsFunktionaerParser
|
||||||
import at.mocode.zns.parser.ZnsPferdParser
|
import at.mocode.zns.parser.ZnsPferdParser
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
# ===================================================================
|
# ===================================================================
|
||||||
|
|
||||||
# === CENTRALIZED BUILD ARGUMENTS ===
|
# === CENTRALIZED BUILD ARGUMENTS ===
|
||||||
ARG GRADLE_VERSION=9.4.1
|
ARG GRADLE_VERSION=9.5.0
|
||||||
ARG JAVA_VERSION=25
|
ARG JAVA_VERSION=25.0.2
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
ARG VERSION=1.0.0-SNAPSHOT
|
ARG VERSION=1.0.0-SNAPSHOT
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
spring:
|
spring:
|
||||||
application:
|
application:
|
||||||
name: billing-service
|
name: billing-service
|
||||||
|
|
||||||
datasource:
|
datasource:
|
||||||
url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/pg-meldestelle-db}
|
url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/pg-meldestelle-db}
|
||||||
username: ${SPRING_DATASOURCE_USERNAME:pg-user}
|
username: ${SPRING_DATASOURCE_USERNAME:pg-user}
|
||||||
password: ${SPRING_DATASOURCE_PASSWORD:pg-password}
|
password: ${SPRING_DATASOURCE_PASSWORD:pg-password}
|
||||||
|
driver-class-name: org.postgresql.Driver
|
||||||
|
|
||||||
cloud:
|
cloud:
|
||||||
consul:
|
consul:
|
||||||
host: ${SPRING_CLOUD_CONSUL_HOST:localhost}
|
host: ${SPRING_CLOUD_CONSUL_HOST:localhost}
|
||||||
@@ -15,13 +18,19 @@ spring:
|
|||||||
prefer-ip-address: true
|
prefer-ip-address: true
|
||||||
health-check-path: /actuator/health
|
health-check-path: /actuator/health
|
||||||
health-check-interval: 10s
|
health-check-interval: 10s
|
||||||
health-check-port: 8089
|
# health-check-port: 8089
|
||||||
instance-id: ${spring.application.name}:${server.port}:${random.uuid}
|
instance-id: ${spring.application.name}:${server.port}:${random.uuid}
|
||||||
service-name: ${spring.application.name}
|
service-name: ${spring.application.name}
|
||||||
|
port: ${billing.http.port:8089}
|
||||||
|
|
||||||
server:
|
server:
|
||||||
port: 8089
|
port: 8089
|
||||||
|
|
||||||
|
billing:
|
||||||
|
http:
|
||||||
|
port: 8089 # Ktor API Port (Haupt-Einstiegspunkt für REST-Anfragen)
|
||||||
|
address: 0.0.0.0 # Öffentlich erreichbar innerhalb des Netzwerks / Containers
|
||||||
|
|
||||||
management:
|
management:
|
||||||
endpoints:
|
endpoints:
|
||||||
web:
|
web:
|
||||||
@@ -30,3 +39,12 @@ management:
|
|||||||
endpoint:
|
endpoint:
|
||||||
health:
|
health:
|
||||||
show-details: always
|
show-details: always
|
||||||
|
probes:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
root: INFO
|
||||||
|
# at.mocode.billing: DEBUG
|
||||||
|
pattern:
|
||||||
|
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
# ===================================================================
|
# ===================================================================
|
||||||
|
|
||||||
# === CENTRALIZED BUILD ARGUMENTS ===
|
# === CENTRALIZED BUILD ARGUMENTS ===
|
||||||
ARG GRADLE_VERSION=9.4.1
|
ARG GRADLE_VERSION=9.5.0
|
||||||
ARG JAVA_VERSION=25
|
ARG JAVA_VERSION=25.0.2
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
ARG VERSION=1.0.0-SNAPSHOT
|
ARG VERSION=1.0.0-SNAPSHOT
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
# ===================================================================
|
# ===================================================================
|
||||||
|
|
||||||
# === CENTRALIZED BUILD ARGUMENTS ===
|
# === CENTRALIZED BUILD ARGUMENTS ===
|
||||||
ARG GRADLE_VERSION=9.4.1
|
ARG GRADLE_VERSION=9.5.0
|
||||||
ARG JAVA_VERSION=25
|
ARG JAVA_VERSION=25.0.2
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
ARG VERSION=1.0.0-SNAPSHOT
|
ARG VERSION=1.0.0-SNAPSHOT
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
# ===================================================================
|
# ===================================================================
|
||||||
|
|
||||||
# === CENTRALIZED BUILD ARGUMENTS ===
|
# === CENTRALIZED BUILD ARGUMENTS ===
|
||||||
ARG GRADLE_VERSION=9.4.1
|
ARG GRADLE_VERSION=9.5.0
|
||||||
ARG JAVA_VERSION=25
|
ARG JAVA_VERSION=25.0.2
|
||||||
ARG BUILD_DATE
|
ARG BUILD_DATE
|
||||||
ARG VERSION=1.0.0-SNAPSHOT
|
ARG VERSION=1.0.0-SNAPSHOT
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user