README: Mermaid-Architekturdiagramm um M17/M18 ergänzt

Dedizierte SSH-Verbindung für InterfaceTrafficMonitor, lokaler
SavedRoutersStore-Pfad (UserDefaults, kein Router-Zugriff).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YDmUd93KxsYGr2kLTotWnG
This commit is contained in:
Kay
2026-09-15 21:43:51 +02:00
co-authored by Claude Sonnet 5
parent 31607b7270
commit b5933fa44b
+16 -4
View File
@@ -88,19 +88,31 @@ flowchart TD
Decision -->|nein, Fallback| SSH["SSHTransport"]
Backup -. "eigene SSH-Verbindung<br/>(Backup/Restore/Werksreset/Update)" .-> SSH2["SSHTransport"]
Connect -. "eigene SSH-Verbindung<br/>(InterfaceTrafficMonitor, 3s-Polling)" .-> SSH3["SSHTransport"]
Connect --> Saved["SavedRoutersStore<br/>(Bekannte Router)"]
Saved --> Defaults[("UserDefaults<br/>(lokal, kein Router-Zugriff)")]
REST --> Router[("Mikrotik<br/>RouterOS-Router")]
SSH --> Router
SSH2 --> Router
SSH3 --> Router
```
`ConnectionService` ist der einzige zwischen den Tabs geteilte State
(REST-zuerst, SSH-Fallback). Einmalige System-Aktionen (Backup,
Wiederherstellung, Werksreset, Updates) laufen bewusst über eine jeweils
eigene, dedizierte SSH-Verbindung statt über den aktiven Live-Transport.
Ein generischer Menü-Engine (`fetchMenuItems`/`fetchFieldValues`) macht
praktisch jedes RouterOS-Menü lesbar, auch ohne kuratiertes Schema —
darauf bauen Übersicht-, Geräte- und Experte-Tab gemeinsam auf.
eigene, dedizierte SSH-Verbindung statt über den aktiven Live-Transport
`InterfaceTrafficMonitor` folgt demselben Muster für sein 3-Sekunden-
Polling der Live-Interface-Durchsätze (`/interface monitor-traffic` ist
ein reiner CLI-Befehl ohne REST-Äquivalent). Ein generischer Menü-Engine
(`fetchMenuItems`/`fetchFieldValues`) macht praktisch jedes RouterOS-Menü
lesbar, auch ohne kuratiertes Schema — darauf bauen Übersicht-, Geräte-
und Experte-Tab gemeinsam auf, ebenso `ConnectionService.
checkPortConflict(interfaceName:)` für die LAN-Port-Konflikt-Prüfung im
Einrichten-Assistenten. `SavedRoutersStore` (Bekannte Router) ist bewusst
komplett lokal — ein JSON-Array in `UserDefaults`, kein Router-Zugriff;
nur die zugehörigen Passwörter liegen weiterhin im macOS-Schlüsselbund.
## Meilensteine