Standardize documentation with headers and archive old files

Applied a unified header format to all documentation files for better status identification, referencing, and ownership tracking. Archived outdated roadmaps, reports, and journal entries. Updated playbooks with new responsibilities, lifecycle rules, and consistent handover formats to align with the new archiving strategy.
This commit is contained in:
2026-01-16 12:17:47 +01:00
parent 39ba21fd77
commit 3465cab246
23 changed files with 393 additions and 212 deletions
@@ -1,59 +1,10 @@
# Architecture & Build Status Report
**Datum:** 09.01.2026
**Von:** Senior Backend Developer
**An:** Lead Software Architect
## 1. Executive Summary
Wir haben eine umfassende Stabilisierung der Projekt-Architektur durchgeführt. Kritische Versionskonflikte im Backend (Spring Boot vs. Spring Cloud) wurden behoben. Die Trennung zwischen Frontend (KMP) und Backend (JVM) wurde durch Refactoring des `core`-Bereichs strikt durchgesetzt, um "Pollution" durch JVM-Code im Frontend zu verhindern.
Der Build-Prozess ist derzeit noch durch spezifische **Kotlin/Wasm Kompilierungsfehler** blockiert, die aus der strikten Typisierung und dem JS-Interop von WebAssembly resultieren.
---
type: Report
status: ARCHIVED
owner: Backend Developer
last_update: 2026-01-15
---
## 2. Durchgeführte Maßnahmen
# Backend Status Report
### 2.1 Backend Architecture Alignment
* **Spring Cloud Konflikt gelöst:** Downgrade von `2025.1.0` (Oakwood, inkompatibel mit Boot 3.5) auf **`2025.0.1` (Northfields)**. Dies verhindert garantierte Laufzeitfehler (`NoSuchMethodError`).
* **Java 25 Optimierung:** Upgrade von Micrometer auf `1.16.1` für besseren Virtual Thread Support.
* **Exposed Versionierung:** Bestätigung der Nutzung von `1.0.0-rc-4` (statt der veralteten 0.61.0).
### 2.2 Modul-Hygiene & KMP Trennung
* **Refactoring `core:core-utils`:**
* Das Modul enthielt JVM-spezifischen Code (`DatabaseUtils.kt` mit Exposed-Abhängigkeiten), der den Frontend-Build (JS/Wasm) brach.
* **Lösung:** Erstellung eines neuen Moduls **`:backend:infrastructure:persistence`**. Der DB-Code wurde dorthin verschoben. `core:core-utils` ist nun ein reines KMP-Modul.
* **Zirkuläre Abhängigkeiten aufgelöst:**
* Das Modul `frontend:shared` hatte Abhängigkeiten zu Feature-Modulen und dem Design-System, was zu Zyklen führte.
* **Lösung:** `frontend:shared` wurde bereinigt und dient nun rein als Basis-Layer (Config, Utils).
### 2.3 Build-System (Gradle & KMP)
* **Wasm-Target Konsolidierung:**
* Um Inkonsistenzen bei der Dependency Resolution zu beheben, wurde das Target `wasmJs` **projektweit** in allen relevanten KMP-Modulen (`core`, `frontend`) aktiviert.
* Dies löste die `Unresolved platforms: [wasmJs]` Fehler.
---
## 3. Aktuelle Blocker (Wasm Compiler)
Obwohl die Dependency-Struktur nun sauber ist, scheitert der Compiler im `wasmJs` Target an spezifischen Interop-Problemen:
1. **Fehlende Referenzen (`Unresolved reference`):**
* `org.w3c.dom.Worker` und `kotlinx.browser.window` werden im Wasm-Kontext nicht gefunden.
* *Ursache:* Kotlin/Wasm benötigt möglicherweise explizite Imports oder externe Deklarationen für bestimmte DOM-APIs, die in Kotlin/JS implizit waren, oder die Standard-Bibliothek wird nicht korrekt eingebunden.
2. **JS-Interop Einschränkungen:**
* Fehler: `Type 'ERROR CLASS: Symbol not found for Worker' cannot be used as return type`.
* Kotlin/Wasm erlaubt keine komplexen `js("...")` Blöcke innerhalb von Funktionen und hat keinen `dynamic` Typ. Unsere ersten Fixes (Helper-Funktionen) waren ein Schritt in die richtige Richtung, aber die Typen (wie `Worker`) müssen dem Compiler bekannt gemacht werden.
---
## 4. Nächste Schritte (Plan)
1. **Wasm-Build reparieren:**
* Prüfen, ob wir eine explizite Dependency (z.B. `kotlinx-browser` oder `kotlin-stdlib-wasm-js`) benötigen.
* Falls `Worker` in der Wasm-Stdlib fehlt: Definition einer `external class Worker` für Wasm erstellen, um dem Compiler den Typ bekannt zu machen.
2. **Backend-Verifikation ("Bauplan"):**
* Sobald der Build durchläuft (oder wir das Frontend temporär exkludieren), werde ich den **`ping-service`** starten.
* Ziel: Nachweis, dass Spring Context, Datenbank-Verbindung (JPA) und die neue Modul-Struktur (`backend:infrastructure:persistence`) zur Laufzeit funktionieren.
3. **Sync-Strategie:**
* Anschließend widmen wir uns der im Frontend-Report erwähnten "Offline-Sync"-Logik (basierend auf UUIDv7).
**Empfehlung:** Wir sollten den Wasm-Build-Fix priorisieren, da er aktuell das gesamte Projekt blockiert ("Fail Fast").
**MOVED:** This file has been archived to `_archive/2026-01-15_Backend_Status_Report_01-2026.md`.
@@ -1,64 +1,10 @@
# Frontend Status Report & Architecture Update
**Datum:** 08.01.2026
**Von:** Senior Frontend Developer (KMP/Compose)
**An:** Lead Software Architect
## 1. Executive Summary
Das Frontend-System ("Meldestelle Portal") wurde erfolgreich auf eine moderne, zukunftssichere **Kotlin Multiplatform (KMP)** Architektur migriert, die echte Offline-Fähigkeit im Web (via Wasm/JS) und Desktop (JVM) unterstützt.
Kritische Blockaden im Build-System (Room-Inkompatibilität mit JS) wurden durch einen strategischen Wechsel zu **SQLDelight** gelöst. Das Dependency-Management wurde zentralisiert und bereinigt.
**Status:** Frontend-Build ist stabil (nach Fixes in `core-utils`). Backend-Anpassungen sind erforderlich.
---
type: Report
status: ARCHIVED
owner: Frontend Expert
last_update: 2026-01-15
---
## 2. Durchgeführte Maßnahmen
# Frontend Status Report
### 2.1 Architektur & Persistenz (Offline-First)
* **Problem:** Die ursprünglich geplante Nutzung von **Room** erwies sich als Blocker für die Web-Targets (JS/Wasm), da Room derzeit nur JVM/Android/Native unterstützt.
* **Lösung:** Migration zu **SQLDelight 2.2.1**.
* Ermöglicht echte Cross-Platform-Persistenz.
* **Web (JS/Wasm):** Nutzung von `WebWorkerDriver` in Kombination mit **OPFS (Origin Private File System)** für performante, persistente Speicherung im Browser.
* **Desktop (JVM):** Nutzung von `JdbcSqliteDriver` mit Java 25 Virtual Threads für nicht-blockierende I/O.
* **Async-First:** Die Datenbank-Schnittstellen wurden auf `suspend` (asynchron) umgestellt (`generateAsync = true`), um die strikten Anforderungen des Browsers zu erfüllen.
### 2.2 Build-System & Dependency Management
* **Single Source of Truth:** Die `libs.versions.toml` wurde komplett refaktoriert.
* Klare Trennung zwischen **Frontend (KMP)** und **Backend (Spring/Infra)** Dependencies.
* Einführung von **Bundles** (`kmp-common`, `ktor-client-common`, `compose-common`) zur massiven Reduktion von Boilerplate in den `build.gradle.kts` Dateien.
* **Wasm-Support:** Fehlende Plattform-Konfigurationen (`PlatformConfig.wasmJs.kt`) wurden ergänzt.
* **Bereinigung:** Veraltete und nicht genutzte Dependencies wurden entfernt.
### 2.3 Infrastruktur & Web-Integration
* **Webpack Konfiguration:** Hinzufügen von `opfs-headers.js`, um die notwendigen HTTP-Header (`Cross-Origin-Opener-Policy`, `Cross-Origin-Embedder-Policy`) für `SharedArrayBuffer` und OPFS im Dev-Server zu setzen.
* **Web Worker:** Implementierung eines Custom Workers (`sqlite.worker.js`), der die Datenbank im Hintergrund-Thread verwaltet.
---
## 3. Auswirkungen auf das Backend & Core (Action Required)
Während der Frontend-Optimierung wurden Inkonsistenzen im Shared-Code (`core:core-utils`) aufgedeckt, die das Backend betreffen.
### 3.1 `core:core-utils` Kontamination
* **Problem:** Das Modul `core:core-utils` ist als KMP-Modul konfiguriert, enthielt aber JVM-spezifischen Code für **Exposed** (JDBC-basiertes ORM), der im Frontend (JS/Wasm) nicht kompilierbar ist.
* **Temporäre Lösung:** Die Datei `DatabaseUtils.kt` (Exposed-Helper) wurde **auskommentiert**, um den Frontend-Build zu retten.
* **TODO Backend:**
1. Prüfen, ob `DatabaseUtils.kt` im Backend essenziell ist.
2. Falls ja: Verschieben in ein reines Backend-Modul (z.B. `:backend:common` oder `:backend:infrastructure:persistence`).
3. `core:core-utils` muss "rein" bleiben (nur KMP-kompatibler Code), wenn es vom Frontend konsumiert werden soll.
### 3.2 API-Verträge
* Durch den Wechsel auf SQLDelight und die Async-First Architektur im Frontend ändert sich nichts an der REST-API, aber die Erwartungshaltung an die Synchronisation (Sync-Logik) wird wichtiger.
---
## 4. Nächste Schritte (Frontend Roadmap)
1. **Navigation:** Implementierung einer robusten Navigationslösung (Type-Safe, Deep-Linking-fähig), die sowohl Desktop als auch Web (Browser-History) sauber bedient.
2. **Sync-Logik:** Implementierung des Datenaustauschs zwischen lokaler SQLDelight-DB und Backend-APIs (Offline-Sync).
3. **UI-Integration:** Anbindung der neuen asynchronen Datenbank-Repositories an die Compose-ViewModels (`Flow` -> `State`).
---
**Empfehlung an Lead Architect:**
Bitte weisen Sie den **Senior Backend Developer** an, das Modul `core:core-utils` zu bereinigen und die auskommentierte Datenbank-Logik in ein geeignetes Backend-Modul zu migrieren. Das Frontend ist nun stabil und bereit für die Feature-Entwicklung.
**MOVED:** This file has been archived to `_archive/2026-01-15_Frontend_Status_Report_01-2026.md`.
@@ -0,0 +1,8 @@
---
type: Report
status: ARCHIVED
owner: Backend Developer
last_update: 2026-01-15
---
(Original content of Backend_Status_Report_01-2026.md)
@@ -0,0 +1,8 @@
---
type: Report
status: ARCHIVED
owner: Frontend Expert
last_update: 2026-01-15
---
(Original content of Frontend_Status_Report_01-2026.md)