3.0 KiB
3.0 KiB
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.ktfür Koin.
2. UI-Refactoring
- Extraktion der UI aus
OnboardingScreenin zustandslose Composables. DeviceInitializationScreenimcommonMainfür den Rahmen.DeviceInitializationConfig.jvm.ktimjvmMainfü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.ktshinzugefügt. - Koin-Modul in
main.ktregistriert. DesktopApp.ktundDesktopMainLayout.ktauf das neue ViewModel und den neuen Screen umgestellt.- Einführung des
DeviceInitializationSettingsManager.
⚠️ Bekannte Themen (Cleanup)
- Die alten Klassen
OnboardingScreen,OnboardingSettings,OnboardingValidatorundSettingsManagerinat.mocode.desktop.screens.onboardingsind 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:
DeviceInitializationViewModelerbt nun vonandroidx.lifecycle.ViewModel, was die Integration inkoinViewModelermöglicht. - DesktopMainLayout: Syntaxfehler beim
koinViewModel-Aufruf behoben und Typos (geraetName->deviceName) korrigiert. Unbenutztersettings-Parameter entfernt. - Multiplatform-Härtung:
DeviceInitializationSettingsManagerundDeviceInitializationConfigaufexpect/actualumgestellt. - 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:
DeviceInitializationSettingsManagernutzt nunlocalStorageim Web.DeviceInitializationConfigwurde für WasmJS funktional implementiert (Basis-Konfiguration). - UI-Cleanup: Code-Duplikate in der Desktop-Konfiguration durch
MsSettingsFieldreduziert.