61 lines
3.0 KiB
Markdown
61 lines
3.0 KiB
Markdown
# Journal: Feature-Modul `device-initialization` (Plug-and-Play)
|
|
|
|
**Datum:** 18. April 2026
|
|
**Agent:** 🏗️ [Lead Architect] / 🎨 [Frontend Expert]
|
|
|
|
## 🎯 Zielsetzung
|
|
|
|
Umstellung des Onboarding-Prozesses auf die neue **Plug-and-Play Struktur (ADR-0024)**. Ziel ist die Kapselung der
|
|
Geräte-Initialisierung in ein autarkes Feature-Modul mit sauberem State-Management.
|
|
|
|
## 🛠️ Durchgeführte Änderungen
|
|
|
|
### 1. Neues Feature-Modul: `device-initialization`
|
|
|
|
* Erstellung von `frontend/features/device-initialization`.
|
|
* Implementierung der Multiplatform-Struktur (Common + JVM).
|
|
* **Domain:** `DeviceInitializationSettings`, `NetworkRole`, `DeviceInitializationValidator`.
|
|
* **Presentation:** `DeviceInitializationViewModel` (StateFlow-basiert), `DeviceInitializationUiState`.
|
|
* **DI:** `DeviceInitializationModule.kt` für Koin.
|
|
|
|
### 2. UI-Refactoring
|
|
|
|
* Extraktion der UI aus `OnboardingScreen` in zustandslose Composables.
|
|
* `DeviceInitializationScreen` im `commonMain` für den Rahmen.
|
|
* `DeviceInitializationConfig.jvm.kt` im `jvmMain` für plattformspezifische UI (z.B. `JFileChooser`).
|
|
* Umstellung der Nomenklatur von "Onboarding" auf **"Geräte-Initialisierung"** (DeviceInitialization).
|
|
|
|
### 3. Integration in Desktop-Shell
|
|
|
|
* Registrierung des Moduls in `settings.gradle.kts`.
|
|
* Abhängigkeit in `meldestelle-desktop/build.gradle.kts` hinzugefügt.
|
|
* Koin-Modul in `main.kt` registriert.
|
|
* `DesktopApp.kt` und `DesktopMainLayout.kt` auf das neue ViewModel und den neuen Screen umgestellt.
|
|
* Einführung des `DeviceInitializationSettingsManager`.
|
|
|
|
## ⚠️ Bekannte Themen (Cleanup)
|
|
|
|
* Die alten Klassen `OnboardingScreen`, `OnboardingSettings`, `OnboardingValidator` und `SettingsManager` in
|
|
`at.mocode.desktop.screens.onboarding` sind noch vorhanden und müssen in einer folgenden Session gelöscht werden,
|
|
sobald die Referenzen stabil sind.
|
|
* IDE-Referenzfehler bei neuen KMP-Modulen erfordern oft einen Gradle-Sync/Rebuild.
|
|
|
|
## 🏁 Fazit
|
|
|
|
Der erste Schritt des "Schritt-für-Schritt"-Umbaus ist abgeschlossen. Die Startseite der App folgt nun dem Plug-and-Play
|
|
Prinzip und ist fachlich präzise benannt.
|
|
|
|
## 🧹 Update (Nach-Korrektur)
|
|
|
|
* **ViewModel-Fix:** `DeviceInitializationViewModel` erbt nun von `androidx.lifecycle.ViewModel`, was die Integration in
|
|
`koinViewModel` ermöglicht.
|
|
* **DesktopMainLayout:** Syntaxfehler beim `koinViewModel`-Aufruf behoben und Typos (`geraetName` -> `deviceName`)
|
|
korrigiert. Unbenutzter `settings`-Parameter entfernt.
|
|
* **Multiplatform-Härtung:** `DeviceInitializationSettingsManager` und `DeviceInitializationConfig` auf `expect/actual`
|
|
umgestellt.
|
|
* **Beta-Warnungen:** `@file:Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")` hinzugefügt, um
|
|
Compiler-Warnungen in den Domain-Klassen zu unterdrücken.
|
|
* **WASM-Komplettierung:** `DeviceInitializationSettingsManager` nutzt nun `localStorage` im Web.
|
|
`DeviceInitializationConfig` wurde für WasmJS funktional implementiert (Basis-Konfiguration).
|
|
* **UI-Cleanup:** Code-Duplikate in der Desktop-Konfiguration durch `MsSettingsField` reduziert.
|