feat(core, device-initialization): Netzwerk-Discovery verbessert, IP-Binding hinzugefügt und UI optimiert

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-30 12:12:46 +02:00
parent 46d993e47f
commit 8ab6ab1c2a
25 changed files with 686 additions and 179 deletions
@@ -1,12 +1,22 @@
# Curator Journal: Technische Geräte-Initialisierung & "Plan-USB"
**Datum:** 29. April 2026
**Datum:** 30. April 2026
**Agenten:** 🏗️ [Lead Architect], 🎨 [Frontend Expert], 🧹 [Curator]
## 🎯 Status Quo
Status: 🚧 IN ARBEIT (VERIFIKATION AUSSTEHEND)
Status: 🚧 IN ARBEIT (UI KORREKTUREN WEB)
Die technische Basis für die Geräte-Initialisierung wurde implementiert, aber der entscheidende Schritt der Proof of Concept (PoC) auf realer Hardware steht noch aus. Die Behauptung, der Meilenstein sei "abgeschlossen", wurde zurückgenommen. Wir befinden uns in der Phase der technischen Vorbereitung für den ersten Feldtest.
Nach dem gestrigen Fehltritt wurden die Halluzinationen in der Web-Shell korrigiert:
1. **Light-Mode Force:** Die Web-App erzwingt nun den Light-Mode für bessere Ablesbarkeit.
2. **Download-Card:** Eine prominente Card für den Desktop-Download wurde im `WebMainScreen` integriert.
3. **POC-Guide:** Ein detaillierter Guide wurde unter `docs/06_Frontend/Guides/POC_INITIALISIERUNG.md` erstellt.
## 🏗️ Implementierte Features (Update)
* **Web-Shell Korrekturen:** Dark-Mode Deaktivierung und Download-CTA.
* **Build-Fix:** Erstellung der fehlenden App-Icons (PNG/ICO) zur Behebung des Packaging-Fehlers.
* **Chat:** Implementierung eines Veranstaltungs-Chats (MVP) in der Desktop-App inkl. Footer-Integration.
* **Docker-Fix:** Behebung des "services must be a mapping" Fehlers in der Docker-Infrastruktur.
* **Dokumentation:** Erster Entwurf der POC-Anleitung für Hardware-Tests (inkl. Run-Anweisungen).
## 📝 Wichtigste Entscheidungen & Artefakte
(Bisherige Inhalte bleiben erhalten)
@@ -0,0 +1,15 @@
# Curator Journal: Chat-Navigation-Fix
## 🛠️ Problemstellung
Die Chat-Funktion konnte in der Desktop-App nicht geöffnet werden. Das Navigations-Log zeigte, dass die App nach dem Versuch, den `ChatScreen` zu rendern, sofort eine Umleitung zum `EventVerwaltung` (Dashboard) durchführte.
## 🔍 Ursachenanalyse
Die Ursache lag in der Guard-Logik innerhalb der `DesktopApp.kt`. Dort wird geprüft, ob ein User authentifiziert ist. Für Screens, die ohne expliziten Cloud-Login zugänglich sein sollen (wie das lokale Dashboard oder der Offline-Chat), gibt es eine `isAllowedScreen`-Liste. Der `AppScreen.Chat` fehlte in dieser Liste, wodurch der Security-Guard fälschlicherweise eine nicht vorhandene Session monierte und zum Dashboard zurückleitete.
## ✅ Durchgeführte Änderungen
- **Security-Guard:** `AppScreen.Chat` wurde zur `isAllowedScreen`-Liste in `DesktopApp.kt` hinzugefügt.
- **Verifikation:** Die Logik wurde mit den im Issue bereitgestellten Logs abgeglichen. Durch die Aufnahme in die Liste wird der `LaunchedEffect`, der die Umleitung triggert, für den Chat-Screen nun korrekt übersprungen.
## 📌 Status
- [x] Chat-Navigation repariert
- [x] Code-Basis konsistent mit "Offline-First" Strategie (Chat im LAN ohne Cloud-Login)
@@ -0,0 +1,27 @@
# Curator Journal - 30. April 2026
## 🛠️ Netzwerk-Discovery Fix (Meilenstein 0)
### Status: Verifikation durch Hardware-POC ausstehend (Iteration 2)
Der erste Hardware-POC des Users zeigte Probleme bei der automatischen Discovery der Desktop-Instanzen auf. Trotz erfolgreichem Pings fanden sich die Instanzen nicht.
### 🔍 Ursachenanalyse
1. **Unpräzises mDNS-Binding:** JmDNS nutzte standardmäßig `getLocalHost()`, was in vielen Netzwerk-Konfigurationen (insb. bei VPNs oder Docker-Interfaces wie vom User gemeldet: `172.17.x.x`) auf das falsche Interface bindet.
2. **UI-Unklarheit:** Der User erkannte nicht, ob ein Interface aktiv ist oder ob die Discovery überhaupt läuft.
### 🚀 Durchgeführte Änderungen
1. **Core-Network (mDNS):**
- `NetworkDiscoveryService` und `JmDnsDiscoveryService` erweitert, um ein explizites IP-Binding zu ermöglichen.
- Die Discovery wird nun hart an die IP des vom User gewählten Netzwerk-Interfaces gebunden.
2. **Features-Device-Initialisierung:**
- **UI-Rewrite:** Die Dropdown-Liste wurde durch ein interaktives Karten-Layout ersetzt.
- **Status-Indikatoren:** Jedes Interface zeigt nun einen farbigen Punkt (Grün für LAN/WLAN-IPs, Rot für andere) und Icons (🔌/🌐) zur schnellen Identifikation.
- **Auto-Discovery:** Sobald ein Interface gewählt oder die Rolle gewechselt wird, wird die Discovery/Registrierung automatisch neu gestartet.
3. **Guides:**
- `POC_INITIALISIERUNG.md` aktualisiert mit klaren Verifikationsschritten für das Netzwerk-Interface.
### ⚠️ Wichtiger Hinweis für den User
Bitte die Desktop-App mit `./gradlew :frontend:shells:meldestelle-desktop:createDistributable` neu bauen und erneut auf die Ziel-Hardware übertragen. Achten Sie im Assistenten auf den **grünen Punkt** bei der Interface-Wahl.
**Curator Ende.**
@@ -0,0 +1,29 @@
# Curator Journal: POC-Fix & Portable Distribution
**Datum:** 30. April 2026
**Agenten:** 🏗️ [Lead Architect], 🧹 [Curator]
## 🎯 Status Quo
Status: 🚀 BEREIT FÜR HARDWARE-TEST
Nach der Kritik am unzureichenden `run`-Hinweis wurde der Build-Prozess für den POC auf eine portable Lösung umgestellt.
## 🏗️ Wichtigste Änderungen
* **Build-Strategie:** Wechsel von `packageDistribution` (benötigt OS-Tools wie dpkg) zu `createDistributable`.
* **Portabilität:** Die App wird nun als entpacktes Image (`app`-Ordner) bereitgestellt, das direkt vom USB-Stick auf dem Zielsystem (Zora-Hardware) ausgeführt werden kann.
* **Desktop-Chat:** Implementierung eines Veranstaltungs-Chats (MVP) mit Footer-Integration und Navigation.
* **Docker-Fix:** Behebung des Syntaxfehlers in `dc-gui.yaml`.
* **Dokumentation:** Der Guide `docs/06_Frontend/Guides/POC_INITIALISIERUNG.md` wurde komplett überarbeitet und beantwortet nun alle offenen Fragen zu Docker, Gradle und dem Transfer-Prozess.
## 📝 Entscheidungen
1. **Kein System-Packaging für POC:** Um die Hardware-Abhängigkeiten des Build-Systems zu umgehen, nutzen wir die Portable-Variante.
2. **Direkt-Transfer:** Das `app`-Verzeichnis wird 1:1 kopiert.
3. **Chat als Navigation-Stub:** Die Chat-UI ist als MVP vorhanden, um die Usability im Feldtest zu prüfen (Online-Gefühl).
## 🚀 Nächste Schritte
1. **Hardware-POC:** Durchführung des Tests auf der Ziel-Hardware durch den User.
2. **Chat-Test:** Verifikation der Chat-Erreichbarkeit über die FooterBar.
3. **Feedback-Loop:** Auswertung der `init_device.aes` Datei und der Netzwerk-Erkennung.
---
**🚫 Anti-Halluzinations-Protokoll:** Der `createDistributable` Task wurde erfolgreich verifiziert (BUILD SUCCESSFUL). Der Pfad zum Artefakt wurde im Guide korrekt hinterlegt.