Compare commits
95 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 98425b8fa8 | |||
| 5b6459a041 | |||
| 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 |
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||
# shellcheck disable=SC1091
|
||||
source "$SCRIPT_DIR/lib/common.sh"
|
||||
|
||||
REPO_ROOT="$(resolve_repo_root)"
|
||||
cd "$REPO_ROOT"
|
||||
|
||||
# check-docs-drift.sh
|
||||
# Zweck: sehr schlanke Drift-Checks gegen die neue Doku-Struktur.
|
||||
# - Kein Guidelines-System mehr.
|
||||
# - Single Source of Truth: `docs/`
|
||||
|
||||
err=0
|
||||
|
||||
has() { grep -q "$2" "$1" || { echo "[DRIFT] '$2' fehlt in $1"; err=1; }; }
|
||||
miss() { grep -q "$2" "$1" && { echo "[DRIFT] Veralteter Begriff '$2' in $1"; err=1; }; }
|
||||
|
||||
# Harte Altlast-Pfade dürfen nicht mehr vorkommen
|
||||
if git grep -n "docs/00_Domain/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/00_Domain/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
if git grep -n "docs/adr/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/adr/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
if git grep -n "docs/c4/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/c4/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
if git grep -n "docs/how-to/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/how-to/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
if git grep -n "docs/reference/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/reference/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
|
||||
# Quelle der Wahrheit: Gateway-Technologie (sollte in Architektur/ADRs/C4 konsistent sein)
|
||||
has docs/01_Architecture/ARCHITECTURE.md "Spring Cloud Gateway"
|
||||
has docs/01_Architecture/adr/0007-api-gateway-pattern-de.md "Spring Cloud Gateway"
|
||||
miss docs/01_Architecture/adr/0007-api-gateway-pattern-de.md "Ktor"
|
||||
has docs/01_Architecture/c4/02-container-de.puml "Spring Cloud Gateway"
|
||||
miss docs/01_Architecture/c4/02-container-de.puml "Ktor"
|
||||
|
||||
exit $err
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Common helpers for AI guardrail scripts
|
||||
|
||||
# Robustly resolve the repository root directory.
|
||||
# Strategy: prefer Git; fallback to marker search upwards; last resort: current dir.
|
||||
resolve_repo_root() {
|
||||
local start
|
||||
start="${1:-$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)}"
|
||||
if command -v git >/dev/null 2>&1; then
|
||||
if git -C "$start" rev-parse --show-toplevel >/dev/null 2>&1; then
|
||||
git -C "$start" rev-parse --show-toplevel
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
local dir
|
||||
dir="$(cd "$start" && pwd)"
|
||||
while [ "$dir" != "/" ]; do
|
||||
if [ -f "$dir/gradlew" ] || [ -f "$dir/settings.gradle.kts" ] || [ -d "$dir/.git" ]; then
|
||||
echo "$dir"
|
||||
return 0
|
||||
fi
|
||||
dir="$(dirname "$dir")"
|
||||
done
|
||||
pwd
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||
# shellcheck disable=SC1091
|
||||
source "$SCRIPT_DIR/lib/common.sh"
|
||||
|
||||
REPO_ROOT="$(resolve_repo_root)"
|
||||
cd "$REPO_ROOT"
|
||||
|
||||
mkdir -p build/diagrams
|
||||
shopt -s nullglob
|
||||
for f in docs/architecture/c4/*.puml; do
|
||||
docker run --rm -v "$PWD":/data plantuml/plantuml -tsvg "/data/$f" -o "/data/build/diagrams"
|
||||
echo "Rendered build/diagrams/$(basename "${f%.puml}").svg"
|
||||
done
|
||||
@@ -0,0 +1,127 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||
# shellcheck disable=SC1091
|
||||
source "$SCRIPT_DIR/lib/common.sh"
|
||||
|
||||
REPO_ROOT="$(resolve_repo_root)"
|
||||
cd "$REPO_ROOT"
|
||||
|
||||
QUICK_MODE=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--quick)
|
||||
QUICK_MODE=true
|
||||
shift
|
||||
;;
|
||||
--help|-h)
|
||||
cat << 'EOF'
|
||||
Docs Link-Validierung
|
||||
|
||||
USAGE:
|
||||
./.ai/scripts/validate-links.sh [--quick]
|
||||
|
||||
BESCHREIBUNG:
|
||||
Prüft Markdown-Links in `docs/**/*.md` auf gebrochene relative Pfade.
|
||||
Ignoriert externe Links (http/https/mailto) sowie reine Anchors (#...).
|
||||
|
||||
OPTIONEN:
|
||||
--quick Führt nur eine Teilmenge der Prüfungen durch (aktuell nicht implementiert).
|
||||
EOF
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "[ERROR] Unbekannter Parameter: $1" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
python3 - <<'PY'
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from urllib.parse import unquote
|
||||
|
||||
root = Path.cwd()
|
||||
docs_dir = root / "docs"
|
||||
|
||||
if not docs_dir.is_dir():
|
||||
print(f"[ERROR] docs-Verzeichnis nicht gefunden: {docs_dir}", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
|
||||
# Veraltete Pfad-Prüfungen wurden entfernt; Fokus auf Link-Integrität.
|
||||
FORBIDDEN_SUBSTRINGS = []
|
||||
|
||||
md_files = sorted(docs_dir.rglob("*.md"))
|
||||
|
||||
link_pattern = re.compile(r"\]\(([^)]+)\)")
|
||||
|
||||
errors = 0
|
||||
|
||||
def is_external(target: str) -> bool:
|
||||
t = target.lower()
|
||||
return t.startswith("http://") or t.startswith("https://") or t.startswith("mailto:")
|
||||
|
||||
def strip_fragment_and_query(target: str) -> str:
|
||||
target = target.split("#", 1)[0]
|
||||
target = target.split("?", 1)[0]
|
||||
return target
|
||||
|
||||
for f in md_files:
|
||||
text = f.read_text(encoding="utf-8", errors="replace")
|
||||
|
||||
for forbidden in FORBIDDEN_SUBSTRINGS:
|
||||
if forbidden in text:
|
||||
print(f"[ERROR] Veralteter Pfad '{forbidden}' in {f}")
|
||||
errors += 1
|
||||
|
||||
for match in link_pattern.finditer(text):
|
||||
target = match.group(1).strip()
|
||||
|
||||
if not target:
|
||||
continue
|
||||
if is_external(target):
|
||||
continue
|
||||
if target.startswith("#"):
|
||||
continue
|
||||
|
||||
if target.startswith("<") and target.endswith(">"):
|
||||
target = target[1:-1]
|
||||
|
||||
target = unquote(strip_fragment_and_query(target))
|
||||
|
||||
if target.startswith("/"):
|
||||
continue
|
||||
|
||||
if ":" in target.split("/", 1)[0]:
|
||||
# z.B. "vscode:..."
|
||||
continue
|
||||
|
||||
resolved = (f.parent / target).resolve()
|
||||
|
||||
try:
|
||||
resolved.relative_to(root.resolve())
|
||||
except ValueError:
|
||||
print(f"[ERROR] Link zeigt außerhalb des Repos: {f} -> {target}")
|
||||
errors += 1
|
||||
continue
|
||||
|
||||
if resolved.is_dir():
|
||||
if not (resolved / "README.md").is_file():
|
||||
print(f"[ERROR] Verlinktes Verzeichnis ohne README.md: {f} -> {target}")
|
||||
errors += 1
|
||||
continue
|
||||
|
||||
if not resolved.exists():
|
||||
print(f"[ERROR] Broken link: {f} -> {target}")
|
||||
errors += 1
|
||||
|
||||
if errors:
|
||||
print(f"[ERROR] Link-Validierung fehlgeschlagen: {errors} Fehler")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"[OK] Link-Validierung erfolgreich: {len(md_files)} Markdown-Dateien geprüft")
|
||||
PY
|
||||
+1
-1
@@ -193,7 +193,7 @@ secrets/
|
||||
# ===================================================================
|
||||
TODO*.md
|
||||
NOTES*.md
|
||||
**/.junie/
|
||||
.junie/
|
||||
|
||||
# ===================================================================
|
||||
# Keep essential files (override exclusions)
|
||||
|
||||
@@ -20,6 +20,7 @@ DOCKER_GRADLE_VERSION=9.3.1
|
||||
DOCKER_JAVA_VERSION=25
|
||||
DOCKER_NODE_VERSION=24.12.0
|
||||
DOCKER_NGINX_VERSION=1.28.0-alpine
|
||||
DOCKER_CADDY_VERSION=2.11-alpine
|
||||
|
||||
# JVM Power Flags (Lokal leer lassen, da Intel/AMD Architektur)
|
||||
JVM_OPTS_ARM64=
|
||||
@@ -96,6 +97,7 @@ CONSUL_IMAGE=hashicorp/consul:1.22.1
|
||||
CONSUL_PORT=8500:8500
|
||||
CONSUL_UDP_PORT=8600:8600/udp
|
||||
CONSUL_HOST=consul
|
||||
CONSUL_HTTP_PORT=8500
|
||||
SPRING_CLOUD_CONSUL_HOST=consul
|
||||
SPRING_CLOUD_CONSUL_PORT=8500
|
||||
SPRING_CLOUD_CONSUL_DISCOVERY_SERVICE_NAME=api-gateway
|
||||
@@ -159,6 +161,8 @@ PING_CONSUL_PREFER_IP=true
|
||||
MAIL_PORT=8083:8083
|
||||
MAIL_DEBUG_PORT=5014:5014
|
||||
MAIL_SERVER_PORT=8083
|
||||
MAIL_SERVICE_URL=http://10.0.0.50:8092
|
||||
|
||||
MAIL_SPRING_PROFILES_ACTIVE=docker
|
||||
MAIL_DEBUG=true
|
||||
MAIL_SERVICE_NAME=mail-service
|
||||
@@ -166,18 +170,31 @@ MAIL_CONSUL_PREFER_IP=true
|
||||
MAIL_SMTP_HOST=smtp.world4you.com
|
||||
MAIL_SMTP_PORT=587
|
||||
MAIL_SMTP_USER=online-nennen@mo-code.at
|
||||
MAIL_SMTP_PASSWORD=secret
|
||||
MAIL_SMTP_PASSWORD=Mogi#2reiten
|
||||
MAIL_SMTP_AUTH=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_PORT=8086:8086
|
||||
MASTERDATA_DEBUG_PORT=5007:5007
|
||||
MASTERDATA_SERVER_PORT=8086
|
||||
MASTERDATA_KTOR_PORT=8091
|
||||
MASTERDATA_SPRING_PROFILES_ACTIVE=docker
|
||||
MASTERDATA_DEBUG=true
|
||||
MASTERDATA_SERVICE_NAME=masterdata-service
|
||||
MASTERDATA_CONSUL_PREFER_IP=true
|
||||
MASTERDATA_SERVICE_HOSTNAME=masterdata-service
|
||||
|
||||
# --- EVENTS-SERVICE ---
|
||||
EVENTS_PORT=8085:8085
|
||||
@@ -235,7 +252,7 @@ SERIES_CONSUL_PREFER_IP=true
|
||||
|
||||
# --- WEB-APP ---
|
||||
CADDY_VERSION=2.11-alpine
|
||||
WEB_APP_PORT=4000:4000
|
||||
WEB_APP_PORT=8080:80
|
||||
WEB_BUILD_PROFILE=dev
|
||||
# Lokal: http://localhost:8081 | Produktion: http://10.0.0.50:8081
|
||||
WEB_APP_API_URL=http://localhost:8081
|
||||
|
||||
@@ -1,13 +1,24 @@
|
||||
name: Desktop CI — Headless Tests & Build
|
||||
|
||||
on:
|
||||
# Nur ausführen, wenn explizit das Desktop-Shell-Modul geändert wurde
|
||||
push:
|
||||
branches: [ main, master ]
|
||||
paths:
|
||||
- 'frontend/shells/meldestelle-desktop/**'
|
||||
- '.gitea/workflows/desktop-tests.yml'
|
||||
pull_request:
|
||||
branches: [ main, master ]
|
||||
paths:
|
||||
- 'frontend/shells/meldestelle-desktop/**'
|
||||
# Manuell startbar, falls benötigt
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
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(gitea.event.head_commit.message, '[planb]') }}
|
||||
name: Compose Desktop — Tests (headless) & Build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -38,12 +49,12 @@ jobs:
|
||||
- name: Show Gradle version
|
||||
run: ./gradlew --version
|
||||
|
||||
- name: Run Desktop tests headless (Xvfb)
|
||||
- name: Run Desktop tests headless (xvfb)
|
||||
env:
|
||||
_JAVA_OPTIONS: -Djava.awt.headless=true
|
||||
run: |
|
||||
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" \
|
||||
./gradlew :frontend:shells:meldestelle-desktop:jvmTest --stacktrace --no-daemon
|
||||
|
||||
|
||||
@@ -33,18 +33,11 @@ jobs:
|
||||
max-parallel: 1
|
||||
matrix:
|
||||
include:
|
||||
- service: keycloak
|
||||
# Plan-B fokussiert: Nur Mail-Service + Web-App bauen/pushen (beschleunigt CI deutlich)
|
||||
- service: mail-service
|
||||
context: .
|
||||
dockerfile: config/docker/keycloak/Dockerfile
|
||||
image: keycloak
|
||||
- service: api-gateway
|
||||
context: .
|
||||
dockerfile: backend/infrastructure/gateway/Dockerfile
|
||||
image: api-gateway
|
||||
- service: ping-service
|
||||
context: .
|
||||
dockerfile: backend/services/ping/Dockerfile
|
||||
image: ping-service
|
||||
dockerfile: backend/services/mail/Dockerfile
|
||||
image: mail-service
|
||||
- service: web-app
|
||||
context: .
|
||||
dockerfile: config/docker/caddy/web-app/Dockerfile
|
||||
@@ -61,43 +54,42 @@ jobs:
|
||||
distribution: "temurin"
|
||||
cache: gradle
|
||||
|
||||
- name: Setup Gradle Cache
|
||||
uses: actions/cache@v4
|
||||
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)
|
||||
# --- SCHRITT 1: Build mit radikalem Clean (gegen die März-Leichen) ---
|
||||
- name: Build Frontend (Wasm JS)
|
||||
if: matrix.service == 'web-app'
|
||||
run: |
|
||||
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 \
|
||||
--max-workers=4 \
|
||||
-Dkotlin.daemon.jvm.options="-Xmx4g"
|
||||
|
||||
# Pangolin-Bypass: Credentials direkt in config.json schreiben.
|
||||
# Kein "docker login" → kein Daemon-Ping → kein HTTPS-Fehler.
|
||||
# BuildKit liest ~/.docker/config.json und verwendet diese Credentials beim Push.
|
||||
# - name: Registry-Credentials konfigurieren (kein Daemon-Kontakt)
|
||||
# run: |
|
||||
# mkdir -p ~/.docker
|
||||
# AUTH=$(echo -n "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_TOKEN }}" | base64 -w 0)
|
||||
# printf '{"auths":{"%s":{"auth":"%s"}}}\n' "${{ env.REGISTRY_INTERNAL }}" "${AUTH}" > ~/.docker/config.json
|
||||
# echo "✓ Credentials für ${{ env.REGISTRY_INTERNAL }} gespeichert"
|
||||
# --- SCHRITT 2: Staging ohne rsync (Fix für dein Log-Fehler) ---
|
||||
- name: Stage Web Assets for Docker build
|
||||
if: matrix.service == 'web-app'
|
||||
run: |
|
||||
set -e
|
||||
DIST_DIR="frontend/shells/meldestelle-web/build/dist/wasmJs/productionExecutable"
|
||||
TARGET_DIR="config/docker/caddy/web-app/_site"
|
||||
|
||||
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):
|
||||
- name: Login to Gitea Registry
|
||||
uses: docker/login-action@v3
|
||||
@@ -122,7 +114,7 @@ jobs:
|
||||
with:
|
||||
images: ${{ env.REGISTRY_INTERNAL }}/${{ env.IMAGE_PREFIX }}/${{ matrix.image }}
|
||||
tags: |
|
||||
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
|
||||
type=raw,value=latest
|
||||
type=sha,format=long
|
||||
|
||||
- name: Build and push Docker image
|
||||
@@ -137,9 +129,5 @@ jobs:
|
||||
provenance: false
|
||||
sbom: false
|
||||
build-args: |
|
||||
DOCKER_BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
||||
BUILD_DATE=${{ github.event.head_commit.timestamp || 'unknown' }}
|
||||
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 }}
|
||||
|
||||
@@ -4,6 +4,8 @@ on:
|
||||
branches: [ "**" ]
|
||||
jobs:
|
||||
no-hardcoded-versions:
|
||||
# Für Plan-B-Builds überspringen: Commit-Message enthält [planb]
|
||||
if: ${{ !contains(gitea.event.head_commit.message, '[planb]') }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -22,6 +22,8 @@ jobs:
|
||||
# =============================================================
|
||||
tag-release:
|
||||
name: 🏷️ Git-Tag setzen
|
||||
# Für Plan-B-Builds überspringen: Commit-Message enthält [planb]
|
||||
if: ${{ !contains(gitea.event.head_commit.message, '[planb]') }}
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
version: ${{ steps.read-version.outputs.version }}
|
||||
@@ -62,7 +64,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Git-Tag erstellen & pushen
|
||||
if: steps.check-tag.outputs.already_tagged == 'false' && github.event.inputs.dry_run != 'true'
|
||||
if: steps.check-tag.outputs.already_tagged == 'false' && gitea.event.inputs.dry_run != 'true'
|
||||
run: |
|
||||
TAG="${{ steps.read-version.outputs.tag }}"
|
||||
VERSION="${{ steps.read-version.outputs.version }}"
|
||||
@@ -77,6 +79,8 @@ jobs:
|
||||
# =============================================================
|
||||
package-linux:
|
||||
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(gitea.event.head_commit.message, '[planb]') }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: tag-release
|
||||
|
||||
@@ -84,11 +88,11 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup JDK 21 (Temurin)
|
||||
- name: Setup JDK 25 (Temurin)
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
|
||||
- name: Gradle cache
|
||||
uses: actions/cache@v4
|
||||
@@ -123,6 +127,8 @@ jobs:
|
||||
# =============================================================
|
||||
package-windows:
|
||||
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(gitea.event.head_commit.message, '[planb]') }}
|
||||
runs-on: windows-latest
|
||||
needs: tag-release
|
||||
|
||||
@@ -130,11 +136,11 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup JDK 21 (Temurin)
|
||||
- name: Setup JDK 25 (Temurin)
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: '21'
|
||||
java-version: '25'
|
||||
|
||||
- name: Gradle cache
|
||||
uses: actions/cache@v4
|
||||
@@ -173,11 +179,11 @@ jobs:
|
||||
steps:
|
||||
- name: Summary ausgeben
|
||||
run: |
|
||||
echo "## 🚀 Release ${{ needs.tag-release.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Artefakt | Status |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "|----------|--------|" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Linux .deb | ${{ needs.package-linux.result }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Windows .msi | ${{ needs.package-windows.result }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**Git-Tag:** \`${{ needs.tag-release.outputs.tag }}\`" >> $GITHUB_STEP_SUMMARY
|
||||
echo "## 🚀 Release ${{ needs.tag-release.outputs.version }}" >> $GITEA_STEP_SUMMARY
|
||||
echo "" >> $GITEA_STEP_SUMMARY
|
||||
echo "| Artefakt | Status |" >> $GITEA_STEP_SUMMARY
|
||||
echo "|----------|--------|" >> $GITEA_STEP_SUMMARY
|
||||
echo "| Linux .deb | ${{ needs.package-linux.result }} |" >> $GITEA_STEP_SUMMARY
|
||||
echo "| Windows .msi | ${{ needs.package-windows.result }} |" >> $GITEA_STEP_SUMMARY
|
||||
echo "" >> $GITEA_STEP_SUMMARY
|
||||
echo "**Git-Tag:** \`${{ needs.tag-release.outputs.tag }}\`" >> $GITEA_STEP_SUMMARY
|
||||
|
||||
+58
-1
@@ -1 +1,58 @@
|
||||
/.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/
|
||||
|
||||
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>
|
||||
@@ -1,43 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# check-docs-drift.sh
|
||||
# Zweck: sehr schlanke Drift-Checks gegen die neue Doku-Struktur.
|
||||
# - Kein Guidelines-System mehr.
|
||||
# - Single Source of Truth: `docs/`
|
||||
|
||||
err=0
|
||||
|
||||
has() { grep -q "$2" "$1" || { echo "[DRIFT] '$2' fehlt in $1"; err=1; }; }
|
||||
miss() { grep -q "$2" "$1" && { echo "[DRIFT] Veralteter Begriff '$2' in $1"; err=1; }; }
|
||||
|
||||
# Harte Altlast-Pfade dürfen nicht mehr vorkommen
|
||||
if git grep -n "docs/00_Domain/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/00_Domain/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
if git grep -n "docs/adr/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/adr/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
if git grep -n "docs/c4/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/c4/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
if git grep -n "docs/how-to/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/how-to/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
if git grep -n "docs/reference/" -- docs >/dev/null 2>&1; then
|
||||
echo "[DRIFT] Veralteter Pfad 'docs/reference/' in docs/* gefunden"
|
||||
err=1
|
||||
fi
|
||||
|
||||
# Quelle der Wahrheit: Gateway-Technologie (sollte in Architektur/ADRs/C4 konsistent sein)
|
||||
has docs/01_Architecture/ARCHITECTURE.md "Spring Cloud Gateway"
|
||||
has docs/01_Architecture/adr/0007-api-gateway-pattern-de.md "Spring Cloud Gateway"
|
||||
miss docs/01_Architecture/adr/0007-api-gateway-pattern-de.md "Ktor"
|
||||
has docs/01_Architecture/c4/02-container-de.puml "Spring Cloud Gateway"
|
||||
miss docs/01_Architecture/c4/02-container-de.puml "Ktor"
|
||||
|
||||
exit $err
|
||||
# Shim: Weiterleitung auf zentrale Guardrail in .ai/
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)"
|
||||
ROOT_DIR="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || echo "$SCRIPT_DIR")"
|
||||
exec "$ROOT_DIR/.ai/scripts/check-docs-drift.sh" "$@"
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
mkdir -p build/diagrams
|
||||
shopt -s nullglob
|
||||
for f in docs/architecture/c4/*.puml; do
|
||||
docker run --rm -v "$PWD":/data plantuml/plantuml -tsvg "/data/$f" -o "/data/build/diagrams"
|
||||
echo "Rendered build/diagrams/$(basename "${f%.puml}").svg"
|
||||
done
|
||||
# Shim: Weiterleitung auf zentrale Guardrail in .ai/
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)"
|
||||
ROOT_DIR="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || echo "$SCRIPT_DIR")"
|
||||
exec "$ROOT_DIR/.ai/scripts/render-plantuml.sh" "$@"
|
||||
|
||||
@@ -1,136 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# validate-links.sh - Link-Validierung für Projektdokumentation (`docs/**`).
|
||||
# Zweck: Guardrail für die "Docs-as-Code"-Strategie.
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
QUICK_MODE=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--quick)
|
||||
QUICK_MODE=true
|
||||
shift
|
||||
;;
|
||||
--help|-h)
|
||||
cat << 'EOF'
|
||||
Docs Link-Validierung
|
||||
|
||||
USAGE:
|
||||
./.junie/scripts/validate-links.sh [--quick]
|
||||
|
||||
BESCHREIBUNG:
|
||||
Prüft Markdown-Links in `docs/**/*.md` auf gebrochene relative Pfade.
|
||||
Ignoriert externe Links (http/https/mailto) sowie reine Anchors (#...).
|
||||
|
||||
OPTIONEN:
|
||||
--quick Führt nur eine Teilmenge der Prüfungen durch (aktuell nicht implementiert).
|
||||
EOF
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "[ERROR] Unbekannter Parameter: $1" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
python3 - <<'PY'
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from urllib.parse import unquote
|
||||
|
||||
root = Path.cwd()
|
||||
docs_dir = root / "docs"
|
||||
|
||||
if not docs_dir.is_dir():
|
||||
print(f"[ERROR] docs-Verzeichnis nicht gefunden: {docs_dir}", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
|
||||
# Veraltete Pfad-Prüfungen wurden entfernt, da sie zu wartungsintensiv waren.
|
||||
# Das Skript konzentriert sich nun auf die Validierung der Link-Integrität.
|
||||
FORBIDDEN_SUBSTRINGS = []
|
||||
|
||||
md_files = sorted(docs_dir.rglob("*.md"))
|
||||
|
||||
link_pattern = re.compile(r"\]\(([^)]+)\)")
|
||||
|
||||
errors = 0
|
||||
|
||||
def is_external(target: str) -> bool:
|
||||
t = target.lower()
|
||||
return t.startswith("http://") or t.startswith("https://") or t.startswith("mailto:")
|
||||
|
||||
def strip_fragment_and_query(target: str) -> str:
|
||||
# remove fragment and query parts
|
||||
target = target.split("#", 1)[0]
|
||||
target = target.split("?", 1)[0]
|
||||
return target
|
||||
|
||||
for f in md_files:
|
||||
text = f.read_text(encoding="utf-8", errors="replace")
|
||||
|
||||
for forbidden in FORBIDDEN_SUBSTRINGS:
|
||||
if forbidden in text:
|
||||
print(f"[ERROR] Veralteter Pfad '{forbidden}' in {f}")
|
||||
errors += 1
|
||||
|
||||
for match in link_pattern.finditer(text):
|
||||
target = match.group(1).strip()
|
||||
|
||||
if not target:
|
||||
continue
|
||||
if is_external(target):
|
||||
continue
|
||||
if target.startswith("#"):
|
||||
continue
|
||||
|
||||
# drop angle brackets <...> used in markdown for urls with spaces
|
||||
if target.startswith("<") and target.endswith(">"):
|
||||
target = target[1:-1]
|
||||
|
||||
target = unquote(strip_fragment_and_query(target))
|
||||
|
||||
# ignore absolute paths in the repo (we treat them as doc-style links; validate only if relative)
|
||||
if target.startswith("/"):
|
||||
continue
|
||||
|
||||
# ignore non-file targets (e.g. empty or protocol-less anchors)
|
||||
if ":" in target.split("/", 1)[0]:
|
||||
# things like "vscode:..." etc.
|
||||
continue
|
||||
|
||||
# treat as file path relative to markdown file
|
||||
resolved = (f.parent / target).resolve()
|
||||
|
||||
# keep validation within repo
|
||||
try:
|
||||
resolved.relative_to(root.resolve())
|
||||
except ValueError:
|
||||
print(f"[ERROR] Link zeigt außerhalb des Repos: {f} -> {target}")
|
||||
errors += 1
|
||||
continue
|
||||
|
||||
# allow directories if they contain README.md
|
||||
if resolved.is_dir():
|
||||
if not (resolved / "README.md").is_file():
|
||||
print(f"[ERROR] Verlinktes Verzeichnis ohne README.md: {f} -> {target}")
|
||||
errors += 1
|
||||
continue
|
||||
|
||||
if not resolved.exists():
|
||||
print(f"[ERROR] Broken link: {f} -> {target}")
|
||||
errors += 1
|
||||
|
||||
if errors:
|
||||
print(f"[ERROR] Link-Validierung fehlgeschlagen: {errors} Fehler")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"[OK] Link-Validierung erfolgreich: {len(md_files)} Markdown-Dateien geprüft")
|
||||
PY
|
||||
# Shim: Weiterleitung auf zentrale Guardrail in .ai/
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)"
|
||||
ROOT_DIR="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || echo "$SCRIPT_DIR")"
|
||||
exec "$ROOT_DIR/.ai/scripts/validate-links.sh" "$@"
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# .aiignore - Verhindert Token-Waste für Nolik
|
||||
|
||||
# Abhängigkeiten & Binaries
|
||||
build/
|
||||
.gradle/
|
||||
*.jar
|
||||
*.deb
|
||||
*.msi
|
||||
|
||||
# Sensible Daten (auch lokal!)
|
||||
.env
|
||||
.env.*
|
||||
config/docker/certs/
|
||||
*.pem
|
||||
*.jks
|
||||
postgres-data/
|
||||
valkey-data/
|
||||
|
||||
# Doku-Builds (Nolik soll die Source-Files in docs/ lesen, nicht die HTML-Exporte)
|
||||
build/dokka/
|
||||
docs/Neumarkt2026/*.pdf
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Shim: Weiterleitung auf zentrale Guardrail in .ai/
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)"
|
||||
ROOT_DIR="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || echo "$SCRIPT_DIR")"
|
||||
exec "$ROOT_DIR/.ai/scripts/check-docs-drift.sh" "$@"
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Shim: Weiterleitung auf zentrale Guardrail in .ai/
|
||||
SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)"
|
||||
ROOT_DIR="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null || echo "$SCRIPT_DIR")"
|
||||
exec "$ROOT_DIR/.ai/scripts/validate-links.sh" "$@"
|
||||
@@ -34,6 +34,8 @@ Versionierung folgt [Semantic Versioning](https://semver.org/lang/de/).
|
||||
|
||||
### Behoben
|
||||
|
||||
- **Frontend (Desktop):** Behebung von Kompilierungsfehlern in `ScreenPreviews.kt` durch Implementierung der fehlenden
|
||||
`getStats()` Methode in den `MasterdataRepository`-Mocks.
|
||||
- **Identity-Modul:** Umstellung auf `kotlin.time.Instant` zur Vermeidung von Deprecation-Warnungen und Behebung von
|
||||
Persistenz-Konflikten im `ExposedDeviceRepository`.
|
||||
- **Koin DI:** Korrektur von Typ-Inferenz-Fehlern beim `HttpClient` im `nennung-feature` durch explizite Qualifier.
|
||||
|
||||
+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.http.SessionCreationPolicy
|
||||
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.web.SecurityFilterChain
|
||||
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
|
||||
@EnableWebSecurity
|
||||
@@ -21,16 +27,16 @@ class GlobalSecurityConfig {
|
||||
fun filterChain(http: HttpSecurity): SecurityFilterChain {
|
||||
http
|
||||
.csrf { it.disable() } // CSRF nicht nötig für Stateless REST APIs
|
||||
// WICHTIG: CORS explizit deaktivieren!
|
||||
// Das API-Gateway kümmert sich um CORS. Die Microservices dürfen KEINE
|
||||
// Access-Control-Allow-Origin Header setzen, sonst haben wir doppelte Header beim Client.
|
||||
.cors { it.disable() }
|
||||
// WICHTIG: CORS wieder aktivieren für Plan-B (Direktzugriff ohne Gateway möglich)
|
||||
.cors { it.configurationSource(corsConfigurationSource()) }
|
||||
.sessionManagement { it.sessionCreationPolicy(SessionCreationPolicy.STATELESS) }
|
||||
.addFilterBefore(DeviceSecurityFilter(), UsernamePasswordAuthenticationFilter::class.java)
|
||||
.authorizeHttpRequests { auth ->
|
||||
// Explizite Freigaben (Health, Information, Public-Endpoints)
|
||||
auth.requestMatchers("/actuator/**").permitAll()
|
||||
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/simple").permitAll()
|
||||
auth.requestMatchers("/ping/health").permitAll()
|
||||
@@ -71,4 +77,19 @@ class GlobalSecurityConfig {
|
||||
converter.setJwtGrantedAuthoritiesConverter(KeycloakRoleConverter())
|
||||
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,10 +1,13 @@
|
||||
spring:
|
||||
application:
|
||||
name: billing-service
|
||||
|
||||
datasource:
|
||||
url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/pg-meldestelle-db}
|
||||
username: ${SPRING_DATASOURCE_USERNAME:pg-user}
|
||||
password: ${SPRING_DATASOURCE_PASSWORD:pg-password}
|
||||
driver-class-name: org.postgresql.Driver
|
||||
|
||||
cloud:
|
||||
consul:
|
||||
host: ${SPRING_CLOUD_CONSUL_HOST:localhost}
|
||||
@@ -15,13 +18,19 @@ spring:
|
||||
prefer-ip-address: true
|
||||
health-check-path: /actuator/health
|
||||
health-check-interval: 10s
|
||||
health-check-port: 8089
|
||||
# health-check-port: 8089
|
||||
instance-id: ${spring.application.name}:${server.port}:${random.uuid}
|
||||
service-name: ${spring.application.name}
|
||||
port: ${billing.http.port:8089}
|
||||
|
||||
server:
|
||||
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:
|
||||
endpoints:
|
||||
web:
|
||||
@@ -30,3 +39,12 @@ management:
|
||||
endpoint:
|
||||
health:
|
||||
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"
|
||||
|
||||
@@ -18,6 +18,9 @@ dependencies {
|
||||
|
||||
// Spring Boot Starters
|
||||
implementation(libs.spring.boot.starter.web)
|
||||
implementation(libs.spring.boot.starter.security)
|
||||
implementation(libs.spring.boot.starter.oauth2.resource.server)
|
||||
implementation(projects.backend.infrastructure.security)
|
||||
implementation(libs.spring.boot.starter.validation)
|
||||
implementation(libs.spring.boot.starter.actuator)
|
||||
implementation(libs.spring.boot.starter.mail)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user