meldestelle/docs/99_Journal/2026-04-22_Final_ZNS_Sync_Auth_Resolution.md
StefanMoCoAt beb20e0cf7
Some checks failed
Desktop CI — Headless Tests & Build / Compose Desktop — Tests (headless) & Build (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Has been cancelled
### feat: erweitere ZNS und SQLDelight-Integration
- **SQLDelight:** Füge neue Queries (`countVereine`, `maxUpdated...`) zur SQLite-Datenbank hinzu und aktualisiere `DesktopMasterdataRepository`.
- **ZNS-Sync:** Passe `ZnsImportState` an, um Pferde- und Funktionärsdaten zu unterstützen.
- **Cloud-Sync:** Entferne redundante Auth-Header und setze Limits für Massensynchronisation auf 50.000 Datensätze.
- **Masterdata-Service:** Stabilisiere Consul Health-Checks und implementiere Limit-Beschränkungen auf Controller-Ebene.
2026-04-22 14:14:39 +02:00

2.6 KiB

Session-Journal: 22. April 2026 - Finale ZNS-Sync & Auth Resolution

🎯 Status & Highlights

  • Auth-Fix (Cloud-Sync): Vollständige Behebung des 401 Unauthorized beim Cloud-Sync. Redundante Header-Setzungen im ZnsImportViewModel wurden entfernt, da der zentrale apiClient Interceptor die Token-Injektion zuverlässig übernimmt.
  • Route-Standardisierung: Alle Masterdata-API-Routen wurden auf die singularisierten Pfade (/horse, /funktionaer, /verein, /reiter) umgestellt, um 1:1 mit den Backend-Controllern zu korrespondieren.
  • Infrastruktur-Resilience: Consul Health-Checks für den masterdata-service final stabilisiert (Nutzung von Port 8086 für Spring Actuator und Port 8091 für die Ktor-API). Intervalle und Timeouts wurden für Massenoperationen optimiert.
  • SQLite-Bereitschaft: Die lokale Datenbank ist nach einem Reset bereit für den initialen Massen-Sync von über 70.000 Datensätzen.

🛠️ Durchgeführte Änderungen

Frontend (Common/Desktop)

  • ZnsImportViewModel.kt:
    • Manuelle Token-Header und hartcodierte Basis-URLs entfernt.
    • Vollständige Umstellung auf ApiRoutes Konstanten.
    • Fehlerbehandlung bei API-Aufrufen (Pferde, Funktionäre) konsolidiert.
  • Netzwerk-Abstraktion:
    • Verifizierung, dass der apiClient in allen Repositories (KtorVereinRepository, KtorReiterRepository etc.) genutzt wird.
  • UI-Stabilität:
    • Behebung von Kompilierungsfehlern durch Import-Korrekturen (ApiRoutes).

Backend (Infrastructure)

  • masterdata-service (application.yml):
    • Consul Health-Check Pfad auf /actuator/health/readiness präzisiert.
    • health-check-port fest auf 8086 (Spring Management) gesetzt.
    • Timeouts (health-check-timeout: 5s) hinzugefügt, um "Critical"-States bei kurzen Lastspitzen zu vermeiden.

🧐 QA & Verifizierung

  • Build: ./gradlew :frontend:shells:meldestelle-desktop:compileKotlinJvm ist BUILD SUCCESSFUL.
  • Infrastruktur-Check: Manuelle Prüfung der Port-Zuweisung bestätigt die Trennung von Management und API.
  • Logik-Check: Verifizierung der Routen-Konstanten gegen die Backend-Controller.

🚀 Next Steps

  1. Cloud-Sync Ausführung: Start der Desktop-App und Betätigung des "Cloud-Sync" Buttons.
  2. Daten-Validierung: Suche in den Feature-Screens (Pferde, Funktionäre), um die Korrektheit der SQLite-Persistenz zu bestätigen.
  3. Produktiv-Test: Erstellung einer Veranstaltung im Wizard unter Nutzung eines importierten Vereins.

🏗️ [Lead Architect] | 👷 [Backend Developer] | 🧐 [QA Specialist] | 🧹 [Curator]