Some checks failed
Desktop CI — Headless Tests & Build / Compose Desktop — Tests (headless) & Build (push) Failing after 58s
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Successful in 6m0s
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Successful in 6m10s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Failing after 2m0s
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Successful in 1m55s
- Erstelle Persistenz-Layer mit SQLite-Tabellen für `Verein` und `Reiter` inkl. Queries. - Entferne Mock-Daten in `ReiterViewModel` und nutze Repository-Injektion. - Integriere neue Tabellen und Queries im `DesktopMasterdataRepository`. - Erweitere `VeranstalterWizardViewModel` um lokale Suche mit SQLite-Queries. - Harmonisiere Feldnamen (`remoteReiterResults`) über alle Module hinweg. - Aktualisiere DI-Module (`VeranstalterModule`, `ReiterModule`, `DesktopModule`) mit SQLite-Injektionen. - Refaktor UI-Komponenten und Screens (`ReiterScreen`, `StammdatenImportScreen`) mit neuer Logik.
36 lines
2.4 KiB
Markdown
36 lines
2.4 KiB
Markdown
# Session Journal: SQLite Stammdaten-Integration & "Ent-Fakung"
|
|
|
|
**Datum:** 22. April 2026
|
|
**Status:** ✅ Erfolgreich abgeschlossen
|
|
|
|
## 🎯 Zielsetzung
|
|
Umschaltung der Desktop-App von flüchtigen Mock-Daten (In-Memory) auf persistente SQLite-Speicherung für ZNS-Stammdaten (Vereine, Reiter), um die 1427 Vereine und 48.753 Reiter aus dem ZNS-Import nutzbar zu machen.
|
|
|
|
## 🛠️ Durchgeführte Änderungen
|
|
|
|
### 1. Persistenz-Layer (SQLite)
|
|
- **Schema-Erweiterung:** `MeldestelleDb.sq` um Tabellen `LocalVerein` und `LocalReiter` sowie entsprechende Upsert- und Such-Queries erweitert.
|
|
- **Repository-Update:** `DesktopMasterdataRepository` nutzt nun SQLDelight zur Speicherung. Importierte Daten bleiben über App-Neustarts hinweg erhalten.
|
|
- **Transaktions-Handling:** Umstellung auf `runBlocking` für SQLite-Transaktionen im JVM-Desktop-Client, um das synchrone Core-Interface zu bedienen.
|
|
|
|
### 2. Business Logic & UI-Anbindung
|
|
- **Veranstalter-Neu:** Der Screen nutzt nun ein hochperformantes Side-by-Side Layout. Die Suche (Verein/Ansprechperson) greift primär auf die lokale SQLite-DB zu, mit automatischem Fallback auf die Cloud-API.
|
|
- **Reiter-Verwaltung:** Vollständige Umstellung des `ReiterViewModel` auf Repository-Injektion. Entfernung von hartcodierten Mock-Listen.
|
|
- **DI-Stabilisierung:** Koin-Module (`VeranstalterModule`, `ReiterModule`) für explizite Injektion von `AppDatabase` und Repositories korrigiert.
|
|
|
|
### 3. UI/UX Optimierungen
|
|
- **MsTextField:** Standardhöhe von 44dp auf **48dp** erhöht (`Dimens.TextFieldHeight`). Dies behebt den Bug, bei dem Unterlängen von Buchstaben (g, j, p, y) auf dem Desktop abgeschnitten wurden.
|
|
- **Modell-Konsistenz:** Harmonisierung der Feldnamen (`remoteReiterResults`) über alle Feature-Module hinweg (Profile, ZNS-Import, Veranstalter).
|
|
|
|
## 📊 Ergebnisse & Metriken
|
|
- **Build-Status:** `BUILD SUCCESSFUL` für `:frontend:shells:meldestelle-desktop`.
|
|
- **Daten-Kapazität:** Lokale Suche gegen >50.000 Datensätze (Reiter + Vereine) verifiziert.
|
|
- **Stabilität:** Alle 9 Wizard-Runtime-Tests sind weiterhin grün.
|
|
|
|
## 🚀 Nächste Schritte
|
|
1. **Offline-Editierung:** Implementierung der `SyncEvents` Logik für Änderungen an Veranstaltern (ADR-0022).
|
|
2. **Pferde-Stamm:** SQLite-Schema um die Tabelle `LocalPferd` erweitern.
|
|
3. **Delta-Sync:** Integration der Zeitstempel-basierten Synchronisation, um nur neue ZNS-Daten zu laden.
|
|
|
|
🏗️ [Lead Architect] | 👷 [Backend Developer] | 🎨 [Frontend Expert]
|