Files
meldestelle/docs/99_Journal/_archive/2026-04-17_ZNS-Cloud-Sync-Integration.md
T
2026-05-05 21:23:02 +02:00

2.2 KiB

Journal: ZNS-Cloud-Sync Integration

Datum: 17. April 2026 Badge: 🏗️ [Lead Architect] & 🎨 [Frontend Expert] & 👷 [Backend Developer]

🎯 Zielsetzung

Verbesserung des Datenflusses im Veranstaltungs-Wizard durch eine explizite Synchronisations-Möglichkeit mit den Cloud-Stammdaten (Masterdata-Service). Dies ersetzt die bisherige manuelle Suche durch einen "Sync-Button"-Ansatz, der die Offline-First-Philosophie (lokale Datenhoheit mit Cloud-Backup) besser verdeutlicht.

🛠️ Änderungen

1. Domain-Modell (frontend:core:domain)

  • ZnsImportState wurde um lastSyncVersion (String) und isSyncing (Boolean) erweitert.
  • ZnsImportProvider Interface erhielt die neue Methode syncFromCloud(onResult: (List<ZnsRemoteVerein>) -> Unit). Die Nutzung eines Callbacks vermeidet zirkuläre Abhängigkeiten zum Desktop-Store innerhalb des Shared-Feature-Moduls.

2. Feature-Logik (frontend:features:zns-import-feature)

  • Implementierung von syncFromCloud im ZnsImportViewModel.
  • Abruf von bis zu 1000 Vereinen aus dem masterdata-service via API-Gateway.
  • Generierung eines Zeitstempels für die lastSyncVersion bei erfolgreichem Abschluss.

3. UI-Anpassung (frontend:shells:meldestelle-desktop)

  • Der Veranstaltungs-Wizard (Schritt 1) wurde umgestaltet:
    • Entfernung des Cloud-Suchfeldes.
    • Hinzufügen eines prominenten Buttons "ZNS-Daten-Sync" (Secondary Color).
    • Implementierung einer Status-Anzeige: "ZNS-Daten geladen [Version dd.MM.yyyy HH:mm]".
    • Bei Klick auf den Sync-Button werden die empfangenen Daten automatisch in den lokalen StoreV2 gemergt ( Idempotenz-Check via OEPS-Nummer).

🧪 Verifizierung

  • Code-Review der Schnittstellen und des Datenflusses.
  • Sicherstellung, dass der Sync-Status (Loading Spinner) korrekt im UI reflektiert wird.
  • Prüfung der zeitstempelbasierten Versionsanzeige.

💡 Ausblick

Der Sync-Mechanismus könnte in Zukunft auf ein differentielles Update (Delta-Sync) umgestellt werden, sobald das Backend entsprechende Header (If-Modified-Since) unterstützt. Aktuell werden pauschal die ersten 1000 Einträge geladen, was für die aktuelle Projektphase (Österreich-weit ~1400 Vereine) ausreichend performant ist.