--- type: Roadmap status: ARCHIVED owner: Lead Architect last_update: 2026-03-09 --- # Roadmap: System Hardening & Stability **Hinweis:** Dieses Dokument ist veraltet. Die Inhalte wurden in die `MASTER_ROADMAP_2026_Q1.md` integriert. **Status:** Draft **Priorität:** Hoch (Blocker für Feature-Entwicklung) ## 1. Backend & Build System (Architect / Backend Dev) ### 1.1 Dependency Management - [x] **Spring Cloud 2025.0.1 Downgrade:** - `libs.versions.toml`: Spring Cloud Version auf `2025.0.1` setzen. - `platform/build.gradle.kts`: BOM Import prüfen. - Ziel: Behebung der `ClassNotFoundException` im Gateway (CircuitBreaker). - _(verifiziert 2026-03-09)_ - [x] **Gateway CircuitBreaker:** _(verifiziert 2026-03-09)_ - `spring-cloud-starter-circuitbreaker-reactor-resilience4j` (Reactive/WebFlux-Variante) korrekt eingebunden. - `GatewayConfig.kt`: `circuitBreaker { name = "pingServiceCB"; fallbackUri = "forward:/fallback/ping" }` konfiguriert. - `FallbackController.kt` + `GatewayMetricsConfig.kt` (CB-Counter) vorhanden. - Resilience4j `2.3.0` kompatibel mit Spring Cloud 2025.0.1 / Spring Boot 3.5.x. - [x] **Micrometer 1.16.1:** - Explizites Upgrade in `libs.versions.toml` für Java 25 Kompatibilität. - _(verifiziert 2026-03-09: micrometer = "1.16.1" bereits gesetzt, micrometerTracing = "1.6.1")_ - [x] **KMP Database Cleanup:** - Entscheidung: SQLDelight für KMP Client. - Entfernen von Room Dependencies (falls nicht zwingend benötigt). - Exposed Version im Backend prüfen (`0.5x` vs `1.0.0-rc`). - _(verifiziert 2026-03-09: Room entfernt, SQLDelight 2.2.1 aktiv in frontend/core/local-db)_ ### 1.2 Modul-Struktur - [x] **`core-utils` Refactoring:** - Verschieben von `DatabaseUtils` (JVM-Code) aus `core-utils` nach `:backend:infrastructure:persistence`. - Sicherstellen, dass `core-utils` rein `commonMain` kompatibel ist. - _(verifiziert 2026-03-09: Stub-Datei mit Redirect vorhanden, Code in persistence)_ --- ## 2. Infrastructure & DevOps (DevOps Engineer) ### 2.1 Docker Environment - [x] **Redis -> Valkey Migration:** - Prüfen, ob wir Redis durch Valkey (Open Source Fork) ersetzen, um Lizenzprobleme zu vermeiden. - Update `docker-compose.yaml`. - _(verifiziert 2026-03-09: valkey/valkey:9-alpine läuft produktiv in dc-infra.yaml)_ - [x] **Keycloak Härtung:** _(verifiziert 2026-03-09)_ - Export der Realm-Config (`meldestelle-realm.json`) und Mounten im Container (statt manueller Config). - `frontend-client` (PKCE S256, Custom URI Scheme `meldestelle://callback`) hinzugefügt. - Wildcard `*` aus `webOrigins` aller Clients entfernt (CORS-Härtung). - Password-Policy auf `length(10) + digits + upperCase + specialChars` gestärkt. - `post.logout.redirect.uris` für alle Clients konfiguriert. ### 2.2 Observability - [x] **Zipkin Integration:** _(verifiziert 2026-03-09)_ - `monitoring-client`-Bundle enthält alle nötigen Dependencies (bridge-brave, reporter-brave, sender-okhttp3). - `dc-backend.yaml` setzt `MANAGEMENT_ZIPKIN_TRACING_ENDPOINT=http://zipkin:9411/api/v2/spans` für alle Services. - Gateway-Fix: `propagation.type` von `w3c` auf `b3` korrigiert; Zipkin-Endpoint explizit ergänzt. --- ## 3. Frontend (Frontend Expert) ### 3.1 Build Fixes - [ ] **Wasm Worker Fix:** _(zurückgestellt — erst nach DevOps-Stabilisierung)_ - Behebung der `Unresolved reference: Worker` Fehler im `composeApp:wasmJsBrowserDistribution` Task. - Prüfen der `kotlinx-browser` Version. ### 3.2 Auth Integration - [x] **OIDC Client:** _(verifiziert 2026-03-09)_ - [x] **Ping Service Tracer Bullet:** _(verifiziert 2026-03-09)_ - Stack vollständig: Backend (Domain/App/Persistence/Controller/Security/Migrations), Contracts, Gateway-Routing, Frontend (PingScreen, PingViewModel, PingApiKoinClient, Koin DI, Shell-Integration). - Bug behoben: `PingApiKoinClient.syncPings()` `lastSyncTimestamp` → `since` (Delta-Sync Query-Parameter). - PKCE Authorization Code Flow (S256) mit `frontend-client`. - Pure Kotlin SHA-256 + PkceHelper (commonMain, kein expect/actual). - JVM: lokaler Callback-Server (Port 18080) + `Desktop.browse()`. - JS: Seiten-Redirect + URL-Parsing beim App-Start + `replaceState`-Bereinigung. - `LoginViewModel` + `LoginScreen` um OIDC-Button erweitert.