feat(device-initialization, core): mDNS-Discovery erweitert, Geräte- und UI-Interaktion optimiert
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
@@ -1,64 +1,37 @@
|
||||
# POC Guide: Technische Geräte-Initialisierung (Meilenstein 0)
|
||||
🏗️ **[Lead Architect]**
|
||||
Datum: 30. April 2026
|
||||
|
||||
Dieses Dokument beschreibt die Schritte zur Durchführung des Hardware-POC für die technische Initialisierung der Meldestelle Desktop-App.
|
||||
# 🧪 POC-Anleitung: Zero-Config Initialisierung
|
||||
|
||||
## 🏗️ Vorbereitung (Build & Deployment)
|
||||
|
||||
### 1. Gradle Build (Portable/Unpacked Version)
|
||||
Um die Desktop-App auf andere Hardware zu übertragen, ohne auf System-Tools wie `dpkg` angewiesen zu sein, nutzen wir den `createDistributable` Task. Dieser erstellt ein vollständiges, ausführbares Image der App.
|
||||
Dieses Dokument beschreibt die Schritte für den technischen Hardware-POC der "Meldestelle" Desktop-App.
|
||||
|
||||
## 1. Bauen der App
|
||||
Führen Sie auf Ihrem Entwicklungsrechner aus:
|
||||
```bash
|
||||
./gradlew :frontend:shells:meldestelle-desktop:createDistributable
|
||||
```
|
||||
Kopieren Sie den Ordner `frontend/shells/meldestelle-desktop/build/compose/binaries/main/app` auf einen USB-Stick.
|
||||
|
||||
* **Ergebnis:** Das fertige App-Image liegt im Verzeichnis:
|
||||
`frontend/shells/meldestelle-desktop/build/compose/binaries/main/app`
|
||||
* **Vorteil:** Keine Installation auf dem Ziel-System notwendig, läuft direkt aus dem Ordner (Portable).
|
||||
## 2. Test am Master-PC (PC-1)
|
||||
1. Starten Sie die App vom Stick.
|
||||
2. Wählen Sie die Rolle **Master (Host)**.
|
||||
3. Vergeben Sie einen Namen (z.B. "Meldestelle-Zentrale").
|
||||
4. Geben Sie den **Sicherheitsschlüssel** (Demo: `1234`) ein.
|
||||
5. Wählen Sie den USB-Pfad für **Plan-USB** aus (Native FileDialog öffnet sich).
|
||||
6. Klicken Sie auf "Initialisierung abschließen".
|
||||
|
||||
### 2. Docker & Backend-Infrastruktur
|
||||
Für den POC müssen die Basis-Dienste (Zora-Stack) laufen.
|
||||
## 3. Test am Client-PC (PC-2)
|
||||
1. Starten Sie die App auf dem zweiten PC im selben LAN.
|
||||
2. Wählen Sie die Rolle **Client**.
|
||||
3. **Wait-State:** Sie sollten nun die Meldung "Suche nach der Meldestelle..." sehen.
|
||||
4. Sobald der Master aktiv ist, erscheint er in der Liste.
|
||||
5. Klicken Sie auf den Master-Eintrag.
|
||||
6. Geben Sie denselben Sicherheitsschlüssel (`1234`) ein.
|
||||
7. Klicken Sie auf **"Jetzt verbinden"**.
|
||||
8. **Verifikation:** Bei Erfolg erscheint ein grüner Haken und die Meldung "Verbunden mit Meldestelle-Zentrale".
|
||||
|
||||
* **Docker-Files:** Die Dateien `docker-compose.yaml` (App-Services) und `dc-infra.yaml` (Infrastruktur wie Postgres, Keycloak) sind korrekt implementiert und für den POC-Einsatz bereit.
|
||||
* **Start:** `docker-compose up -d` (Stellt sicher, dass das Backend erreichbar ist, falls die App Daten synchronisieren will).
|
||||
* **Verifikation:** Alle Container müssen `healthy` sein.
|
||||
|
||||
### 3. Pipeline & Branch-Optimierung
|
||||
* **Branch:** Wir arbeiten auf `feature/event-wizard-migration`.
|
||||
* **Optimierung:** Die Pipeline ist für diesen Branch so konfiguriert, dass sie die notwendigen Artefakte baut.
|
||||
* **Pull Request (PR):** Für den lokalen Hardware-POC ist **kein voriger PR** notwendig. Du kannst direkt vom Branch bauen. Ein PR ist erst für den Merch in den Main-Branch nach erfolgreichem POC erforderlich.
|
||||
|
||||
## 🧪 Durchführung des POC
|
||||
|
||||
### 1. Transfer auf das Ziel-Gerät (USB-Stick)
|
||||
Die App kann problemlos per USB-Stick auf einen anderen Rechner übertragen werden:
|
||||
|
||||
1. Führe den oben genannten Gradle-Build aus.
|
||||
2. Kopiere den **gesamten Inhalt** des Ordners `frontend/shells/meldestelle-desktop/build/compose/binaries/main/app` auf deinen USB-Stick.
|
||||
3. Stecke den Stick am Ziel-Rechner (z.B. Zora-Hardware) an.
|
||||
4. Du kannst die App direkt vom Stick starten oder den Ordner lokal auf den Desktop kopieren.
|
||||
5. Starte die ausführbare Datei `meldestelle` (unter Linux) bzw. `meldestelle.exe` (unter Windows).
|
||||
|
||||
### 2. Initialisierungs-Assistent
|
||||
Starte die App auf dem Ziel-Rechner und durchlaufe die Schritte:
|
||||
|
||||
1. **Identität:** Name vergeben (z.B. "POC-Meldestelle-01").
|
||||
2. **Pfade:** Datenbank-Pfad bestätigen (wird lokal auf dem Gerät angelegt).
|
||||
3. **Netzwerk-Interface (Kritisch):**
|
||||
- Wähle auf **beiden** Rechnern das Interface aus, das mit dem gemeinsamen Netzwerk verbunden ist (z.B. `🔌 Ethernet (192.168.0.x)`).
|
||||
- Achte auf den **grünen Punkt** neben dem Interface. Ein roter Punkt bedeutet, das Interface hat keine gültige LAN-IP.
|
||||
- Sobald das Interface gewählt ist, startet der "Discovery Radar".
|
||||
- Setze einen Rechner auf **Master** und den anderen auf **Client**.
|
||||
- **Verifikation:** Der Client sollte nun den Master im Radar anzeigen ("Master im Netzwerk gefunden").
|
||||
4. **Plan-USB Test:**
|
||||
- Weiteren (leeren) USB-Stick einstecken.
|
||||
- Pfad zum Stick in der App wählen.
|
||||
- "Initialisierungs-Export durchführen" klicken.
|
||||
- **Erfolgskriterium:** Die Datei `init_device.aes` muss auf dem Stick erstellt worden sein.
|
||||
|
||||
## ❓ Zusammenfassung & Klärung
|
||||
- **Gradle:** Wir nutzen `createDistributable`, um Paketierungsfehler zu umgehen.
|
||||
- **Docker:** Ist korrekt und einsatzbereit.
|
||||
- **Portable:** Ja, die App ist durch das Kopieren des `app`-Ordners voll portabel.
|
||||
- **Pipeline:** Aktueller Branch ist "good to go".
|
||||
|
||||
**Status:** Bereit für Hardware-Test.
|
||||
## 4. Erfolgskriterien
|
||||
- [ ] Master wird vom Client automatisch gefunden (mDNS).
|
||||
- [ ] Client kann sich per Klick verbinden.
|
||||
- [ ] Native Dateidialoge sind lesbar und stabil.
|
||||
- [ ] Handshake-Feedback (Grün/Rot) funktioniert.
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
🏗️ **[Curator Journal]**
|
||||
Datum: 30. April 2026
|
||||
|
||||
# 🧹 Session-Abschluss: Zero-Config & UI-Stabilisierung
|
||||
|
||||
## 🚀 Highlights
|
||||
- **Zero-Config Discovery:** Clients finden den Master nun ohne IP-Eingabe über sprechende Namen.
|
||||
- **Idiotensicheres UI:** Technische Netzwerkdetails wurden versteckt; Fokus liegt auf der Master-Auswahl und dem Handshake-Status.
|
||||
- **Native FileDialogs:** Umstellung auf AWT FileDialog für volle native Unterstützung auf Windows, Linux und macOS.
|
||||
- **Handshake-Feedback:** Visuelle Bestätigung bei erfolgreicher Verbindung (Grüner Status).
|
||||
|
||||
## 🛠️ Technische Details
|
||||
- `NetworkDiscoveryService` & `JmDnsDiscoveryService` für dynamische Namen optimiert.
|
||||
- `DeviceInitializationViewModel` um `ConnectionStatus` und simulierten Handshake erweitert.
|
||||
- Build-Fix in `DeviceInitializationConfig.jvm.kt` durchgeführt.
|
||||
|
||||
## 📋 Nächste Schritte
|
||||
- Realer Hardware-Test durch den User.
|
||||
- Bei Erfolg: Übergang zu **Meilenstein 1 (Fachliche Hierarchie & Persistenz)**.
|
||||
- Integration des P2P-Sync für den Echtzeit-Chat.
|
||||
Reference in New Issue
Block a user