meldestelle/docs/99_Journal/2026-04-16_Explicit-Device-Enrollment.md
Stefan Mogeritsch 82a4a13505 feat(onboarding): Explicit Device Enrollment für Master-Geräte hinzugefügt
- Master-Geräte können erwartete Clients inkl. Name & Rolle definieren.
- Neue Rollen (`RICHTER`, `ZEITNEHMER` etc.) integriert.
- Backend- und Frontend-Validierung erweitert, UI-Komponente für Client-Verwaltung.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
2026-04-16 10:24:52 +02:00

40 lines
1.8 KiB
Markdown

---
type: Journal
status: ACTIVE
owner: Curator
created: 2026-04-16
---
# Journal — 16. April 2026 (Explicit Device Enrollment)
## 🎯 Ziel & Entscheidung
Implementierung des **"Explicit Device Enrollment"**-Konzepts im Onboarding-Prozess.
Ein Master-Gerät definiert nun vorab, welche Clients (Name & Rolle) im lokalen Netzwerk erwartet werden.
Dies erhöht die Sicherheit und automatisiert die Feature-Freischaltung auf den Clients.
## 🏗️ Architektur-Änderungen
- **Backend (Identity-Service):**
- `DeviceRole` wurde um fachspezifische Rollen erweitert (`RICHTER`, `ZEITNEHMER`, `STALLMEISTER`, `ANZEIGE`,
`PARCOURS_CHEF`).
- `DeviceTable` (Exposed) und `Device`-Modell enthalten nun `expectedName`, `isOnline` und `isSynchronized`.
- **Frontend (Desktop-App):**
- `OnboardingSettings` speichert nun eine Liste von `ExpectedClient`.
- `OnboardingScreen` (v2) bietet Master-Geräten eine Tabelle zum Verwalten dieser Liste.
- `OnboardingValidator` stellt sicher, dass alle erwarteten Geräte einen Namen haben, bevor die Konfiguration
gespeichert wird.
## 🧪 Verifikation
- Erweiterte Unit-Tests in `OnboardingValidatorTest` decken die Validierung der Client-Liste ab (24/24 Tests grün).
- UI-Komponenten (Dropdown für Rollen, Add/Delete-Actions) wurden in `Screens.kt` integriert.
## 🔗 Relevante Dateien
- `backend/services/identity/identity-domain/src/main/kotlin/at/mocode/identity/domain/model/Device.kt`
-
`backend/services/identity/identity-infrastructure/src/main/kotlin/at/mocode/identity/infrastructure/persistence/DeviceTable.kt`
- `frontend/shells/meldestelle-desktop/src/jvmMain/kotlin/at/mocode/desktop/screens/onboarding/OnboardingSettings.kt`
- `frontend/shells/meldestelle-desktop/src/jvmMain/kotlin/at/mocode/desktop/v2/Screens.kt`