README: IST-Zustand-Analyse dokumentieren
Build / build (push) Canceled after 0s

Schritt-Liste um "Vorhandene Netzwerke" erweitert (jetzt 11 Schritte),
neuen Abschnitt zur Funktion ergänzt, Architektur-Diagramm um den neuen
Schritt und ein Nodify/NetworkAnalysisService-Flowdiagramm erweitert,
Nodify in "Verwendete Bibliotheken" aufgenommen und die Roadmap-Tabelle
um den neuen Milestone ergänzt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Sonnet 5 committed 2026-09-15 18:47:19 +02:00
1 parent 6b90a4d836
commit 669e653cf4
1 file changed
+32 -10
+32 -10
View File
@@ -15,20 +15,25 @@ Schritt für Schritt, mit Erklär-Tooltips (ⓘ) bei jedem Fachbegriff:
1. **Verbindung** – IP-Adresse, Benutzername, Passwort
2. **Geräte-Erkennung** – liest Modell, RouterOS-Version und Schnittstellen aus
3. **Modus wählen** – geführter Assistent (Standard) oder **Experten-Modus**: Letzterer blendet in den folgenden Schritten zusätzliche, technischere RouterOS-Optionen ein (siehe unten)
4. **Internet-Zugang** – WAN-Schnittstelle, DHCP oder feste IP, NAT
5. **Heimnetzwerk (DHCP)** – Bridge, IP-Bereich, DHCP-Server, DNS
6. **VLANs** *(optional)* – zusätzliche, getrennte Netzwerke (z. B. Gäste, IoT)
7. **WLAN** *(übersprungen, wenn nicht vorhanden – oder bewusst abwählbar, z. B. bei einem reinen Switch)*
8. **Firewall** – sichere Basisregeln, optionale Portfreigaben
9. **Zusammenfassung** – alle geplanten Änderungen im Klartext, automatisches Backup auf dem Gerät vor dem Anwenden, **PDF-Export** mit allen Zugangsdaten inkl. WLAN-QR-Code zum Ausdrucken/Aufbewahren
10. **RouterOS-Update** *(optional)* – prüft auf eine neuere RouterOS-Version und kann sie mit deutlicher Warnung starten
3. **Vorhandene Netzwerke** – bei einem Bestandsgerät: anklickbare Grafik der bereits eingerichteten Bridges, VLANs, IP-Adressen, DHCP-Server, Routen und WLANs (siehe unten); bei werksneuen Geräten erscheint nur ein kurzer Hinweis
4. **Modus wählen** – geführter Assistent (Standard) oder **Experten-Modus**: Letzterer blendet in den folgenden Schritten zusätzliche, technischere RouterOS-Optionen ein (siehe unten)
5. **Internet-Zugang** – WAN-Schnittstelle, DHCP oder feste IP, NAT
6. **Heimnetzwerk (DHCP)** – Bridge, IP-Bereich, DHCP-Server, DNS
7. **VLANs** *(optional)* – zusätzliche, getrennte Netzwerke (z. B. Gäste, IoT)
8. **WLAN** *(übersprungen, wenn nicht vorhanden – oder bewusst abwählbar, z. B. bei einem reinen Switch)*
9. **Firewall** – sichere Basisregeln, optionale Portfreigaben
10. **Zusammenfassung** – alle geplanten Änderungen im Klartext, automatisches Backup auf dem Gerät vor dem Anwenden, **PDF-Export** mit allen Zugangsdaten inkl. WLAN-QR-Code zum Ausdrucken/Aufbewahren
11. **RouterOS-Update** *(optional)* – prüft auf eine neuere RouterOS-Version und kann sie mit deutlicher Warnung starten
Nichts wird am Gerät verändert, bevor der Nutzer in der Zusammenfassung ausdrücklich auf „Jetzt einrichten“ klickt.
### Vorhandene Netzwerke (IST-Zustand-Analyse)
Bei einem bereits konfigurierten Bestandsgerät liest der dritte Schritt automatisch aus, was dort schon eingerichtet ist, und zeichnet es als Diagramm: jeder Knoten ist eine Bridge, ein VLAN, eine IP-Adresse, ein DHCP-Server, ein WLAN oder der Internet-Zugang. Ein Klick auf einen Knoten hebt seinen kompletten Weg („Hops") bis zum Internet-Zugang hervor. Rein informativ — verändert nichts am Gerät und fließt nicht in die vom Assistenten geplante Konfiguration ein. Bei einem werksneuen Gerät ohne bestehende Konfiguration erscheint statt der Grafik nur ein kurzer Hinweis.
### Experten-Modus
Wer RouterOS kennt, kann im dritten Schritt den Experten-Modus wählen. Die Schritte 4–8 zeigen dann zusätzlich (Laien-Modus bleibt exakt wie zuvor, Defaults entsprechen dem bisherigen Verhalten):
Wer RouterOS kennt, kann im vierten Schritt den Experten-Modus wählen. Die Schritte 5–9 zeigen dann zusätzlich (Laien-Modus bleibt exakt wie zuvor, Defaults entsprechen dem bisherigen Verhalten):
- **Internet-Zugang:** DHCP-Standardroute/-DNS an/aus, feste MTU, NAT nur für ein bestimmtes Subnetz
- **Heimnetzwerk:** DHCP-Lease-Zeit, Domainname, NTP-Server
@@ -98,7 +103,7 @@ src/
flowchart TB
subgraph App["MikrotikInstaller.App (WPF, MVVM)"]
MainVM["MainViewModel<br/>Wizard-Navigation"]
Steps["Step-ViewModels<br/>Connection - DeviceOverview - ModeSelection -<br/>Wan - Lan - Vlan - Wlan - Firewall - Summary - Update"]
Steps["Step-ViewModels<br/>Connection - DeviceOverview - NetworkAnalysis - ModeSelection -<br/>Wan - Lan - Vlan - Wlan - Firewall - Summary - Update"]
Session["WizardSession<br/>geteilter Zustand über alle Schritte"]
MainVM --> Steps --> Session
end
@@ -137,6 +142,21 @@ Verbindungsaufbau läuft immer über `RouterOsClientFactory`: REST-API zuerst, b
Der `ModeSelectionStepViewModel`-Schritt setzt lediglich `WizardSession.IsExpertMode` (bool). Jeder folgende Step-ViewModel liest dieses Flag als Passthrough-Property; die zugehörige View blendet damit zusätzliche Eingabefelder ein oder aus (`Visibility`-Binding auf denselben `BoolToVisibilityConverter`, der auch sonst im Wizard verwendet wird). Es gibt keine zweite Steps-Liste und keinen separaten Codepfad — bei nicht gesetzten Experten-Feldern (Default) erzeugen die Configurators exakt dieselben RouterOS-Befehle wie im reinen Laien-Modus.
### IST-Zustand-Analyse
```mermaid
flowchart LR
Service["NetworkAnalysisService<br/>Core/Analysis"]
Facts["Existing*-Records<br/>Bridge-Ports, VLANs, IP-Adressen,<br/>DHCP-Server, Routen, WLANs"]
StepVM["NetworkAnalysisStepViewModel<br/>App"]
Graph["TopologyNodeViewModel / TopologyConnectionViewModel<br/>Spalten-Layout, IsHighlighted"]
Editor["nodify:NodifyEditor<br/>Klick -&gt; SelectedItem -&gt; Pfad-Hervorhebung"]
Service --> Facts --> StepVM --> Graph --> Editor
```
`NetworkAnalysisService` fragt (fehlertolerant pro Endpunkt) `/interface/bridge/port`, `/interface/vlan`, `/ip/address`, `/ip/pool`, `/ip/dhcp-server`, `/ip/route` und `/interface/wireless` ab und liefert reine Fakten — keine Positions-/Grafik-Konzepte, Core bleibt UI-frei. Der Step-ViewModel (App) baut daraus einen Baum: jeder Knoten hat höchstens einen `ParentNodeId` (Bridge-Port → Bridge, VLAN → Eltern-Interface, IP/DHCP → ihr Interface, WAN-Interface → synthetischer „Internet"-Knoten anhand der Standardroute). Das macht Pfad-Hervorhebung trivial (Eltern-Kette hochlaufen) und ein eigenes Auto-Layout überflüssig (Spalte = Tiefe im Baum). Die Grafik selbst nutzt [Nodify](https://github.com/miroiu/nodify) (reines, abhängigkeitsfreies WPF-Steuerelement für MVVM-Node-Editoren) — Klicks laufen über dessen eingebautes `SelectedItem`-Binding, nicht über eigene Maus-Behandlung.
### Datenstruktur
Die wichtigsten Records, die während eines Assistenten-Durchlaufs entstehen und durch `WizardSession` zusammengehalten werden:
@@ -328,6 +348,7 @@ classDiagram
- [WPF-UI](https://github.com/lepoco/wpfui) – modernes Fluent-Design für WPF
- [CommunityToolkit.Mvvm](https://github.com/CommunityToolkit/dotnet) – MVVM-Grundgerüst
- [Nodify](https://github.com/miroiu/nodify) – anklickbare Netzwerk-Grafik im Schritt „Vorhandene Netzwerke"
- [PDFsharp](https://github.com/empira/PDFsharp) – PDF-Erzeugung
- [QRCoder](https://github.com/codebude/QRCoder) – WLAN-QR-Code
@@ -343,6 +364,7 @@ Die Weiterentwicklung wird als Milestones mit zugehörigen Issues im internen Gi
| **v1.1 – Release-Housekeeping** | `v1.0.0`-Tag-Strategie klären, Copyright-Name in `LICENSE` bestätigen, Trennung Gitea (laufendes Dev) / GitHub (nur Releases) wiederherstellen |
| **v1.2 – Eingabevalidierung** | Rest von Phase 7: Live-Fehlermeldungen bei ungültigen Eingaben (z. B. IP-/Subnetz-Format) direkt im jeweiligen Wizard-Schritt |
| **v1.3 – SFTP-Backup-Download** | Backup-Download aufs PC per SFTP nachrüsten (bisher liegt das Backup nur auf dem Gerät selbst) |
| **IST-Zustand-Analyse** | Route-zu-Interface-Zuordnung und Gesamt-Layout der Netzwerk-Grafik gegen ein echtes Bestandsgerät verifizieren (Route→Interface-Auflösung ist derzeit best-effort, RouterOS-versionsabhängig) |
| **CI/CD – Gitea-Actions-Runner** | Runner registrieren und `.gitea/workflows/build.yml` erstmals scharf testen |
## Lizenz