meldestelle/docs/01_Architecture/MASTER_ROADMAP_2026_Q1.md
StefanMoCoAt edb22ce864 chore(docs, frontend): document and implement Web-App sync workaround for async driver issue
- Added session log documenting Web-App stabilization, including fixes for Webpack build and login issues.
- Implemented full-sync workaround in `PingEventRepositoryImpl` due to SQLDelight async driver limitations.
- Updated `PingDashboard` to display sync completion messages.
- Added `libs.sqldelight.coroutines` dependency and regenerated SQLDelight queries.
- Updated roadmap and journal with progress on frontend sync integration.
2026-01-27 23:25:00 +01:00

4.0 KiB

type status owner last_update
Roadmap ACTIVE Lead Architect 2026-01-27

MASTER ROADMAP Q1 2026: "Operation Tracer Bullet"

Strategisches Ziel: Wir validieren die gesamte Architektur-Kette (Frontend -> Gateway -> Service -> DB) anhand des Ping-Service. Dieser Service dient als technischer Blueprint (Vorlage) für alle kommenden Fach-Services. Er muss "Production Ready" gehärtet sein, bevor wir Fachlichkeit implementieren.

Aktueller technischer Stand:

  • Build System: Grün (Gradle, Kotlin 2.3, Spring Boot 3.5.9, Spring Cloud 2025.0.1).
  • Code-Basis: ping-service existiert, Delta-Sync implementiert.
  • Infrastruktur: Docker Environment stabil, Tracing aktiv.
  • Frontend: Web-App läuft (JS/Wasm), Login funktioniert, Sync (Full) funktioniert.

2. Arbeitsaufträge an die AGENTS (Phasenplan)

PHASE 1: Backend Hardening & Infrastructure (Woche 2)

Ziel: Der Ping-Service läuft sicher, stabil und beobachtbar in der Docker-Umgebung.

👷 Agent: Senior Backend Developer

Deine Aufgabe ist es, den ping-service von einem "Hello World" zu einem Enterprise-Microservice zu machen.

  • Security Implementation (Prio 1):
    • Konfiguriere Spring Security als OAuth2 Resource Server.
    • Implementiere RBAC (Role Based Access Control) für /ping/secure.
    • Stelle sicher, dass Tokens vom Keycloak (Docker) korrekt validiert werden.
  • Resilience (Prio 2):
    • Aktiviere Resilience4j CircuitBreaker für Datenbank-Zugriffe.
    • Implementiere Fallbacks (z.B. "Degraded Mode" wenn DB weg ist).
  • Observability (Prio 3):
    • Aktiviere Spring Boot Actuator (Health, Info, Prometheus).
    • Stelle sicher, dass Tracing-IDs (Micrometer/Zipkin) durchgereicht werden.
  • Persistence Härtung:
    • Integriere Flyway für Datenbank-Migrationen (kein ddl-auto in Prod!).
    • Implementiere einen "Deep Health Check" (/actuator/health), der DB und Cache aktiv prüft.

🏗️ Agent: Infrastructure & DevOps

Deine Aufgabe ist die Stabilität der Laufzeitumgebung.

  • Docker Environment:
    • Stabilisiere docker-compose.yaml. Alle Services (Consul, Keycloak, Postgres, Zipkin) müssen zuverlässig starten.
    • Prüfe Migration von Redis zu Valkey (Open Source Härtung), wie im Hardening-Dokument vorgeschlagen.
  • Gateway Config:
    • Konfiguriere Routen und CircuitBreaker im Spring Cloud Gateway für den ping-service.

PHASE 2: Frontend Integration (Woche 3)

Ziel: Das Frontend kann authentifiziert mit dem Backend sprechen.

🎨 Agent: KMP Frontend Expert

Deine Aufgabe ist die Anbindung des gehärteten Backends.

  • HTTP Client Core:
    • Konfiguriere Ktor Client mit AuthInterceptor (Bearer Token Injection).
    • Implementiere Global Error Handling (Umgang mit 401, 403, 503).
  • Authentication Flow:
    • Implementiere den OIDC Login Flow (Keycloak) für Desktop und Web.
    • Speichere Tokens sicher im Memory (AuthState).
  • UI Implementation:
    • Baue einen Debug-Screen, der die Endpunkte /ping/simple und /ping/secure visualisiert.

PHASE 3: Offline & Sync (Woche 4)

Ziel: Datenkonsistenz auch bei Netzwerk-Verlust.

🤝 Joint Task Force (Backend & Frontend)

  • Sync-Protokoll:
    • Implementierung des Delta-Syncs basierend auf PingEvent (UUIDv7 + Timestamp).
    • Frontend: Speicherung in SQLDelight (lokal).
    • Backend: Bereitstellung des Sync-Endpunkts.
  • Web-App Sync:
    • Implementierung von SQLDelight mit WebWorkerDriver (OPFS).
    • Workaround für Async-Select-Bug (Full-Sync).

3. Definition of Done (für Phase 1 & 2)

  1. docker compose up startet den kompletten Stack fehlerfrei.
  2. Frontend-User kann sich einloggen (Keycloak).
  3. Frontend zeigt Daten vom ping-service an.
  4. Beim Abschalten der DB zeigt der Service einen sauberen Fallback (CircuitBreaker offen).
  5. In Zipkin ist der komplette Request-Trace (Frontend -> Gateway -> Service -> DB) sichtbar.