Netzwerk-Labor · Doku đŸ€– Opus-Auftrag – Netzwerk-Labor Zum Spiel Online

đŸ€– Opus-Auftrag – Netzwerk-Labor

âŹ†ïž Netzwerk-Labor · Grundlage: Konzept – Netzwerk-Labor

Den Block unten in eine neue Sitzung kopieren (Arbeitsordner: Documents\Joshua, Modell Opus). Er ist absichtlich eigenstĂ€ndig. Eine Phase je Sitzung ist am robustesten: fĂŒr die nĂ€chste den Block wiederverwenden und PHASE austauschen. Phase 0 immer allein, sie enthĂ€lt die ganze Infrastruktur (Rust-Build, Linux-Umgebung, Fensterverhalten).

Du baust das „Netzwerk-Labor“: ein Lernspiel fĂŒr FISI-Auszubildende, in dem man als Ein-Mann-Systemhaus
Netzwerk-Tickets in einem echten Netzwerk-Simulator löst (Diagramm + Konfig-Panels + IOS-Àhnliche Konsole),
mit Karriere- und Idle-Schicht. Es ist ein EIGENSTÄNDIGES DESKTOP-PROGRAMM fĂŒr Windows (.exe) und Linux,
das sich am Bildschirmrand still und minimal verhÀlt, ohne die Sicht des Nutzers zu verdecken.
Die Spezifikation liegt fertig vor. Setze sie um, entscheide Details selbst, halte Entscheidungen im Log fest.

PHASE: 0 (HĂŒlle und Grundlage, siehe Konzept § 11). Erst danach Phase 1.

ZUERST LESEN (in dieser Reihenfolge, vollstÀndig):
1. 10-Projekte/Lernprojekte/Netzwerk-Labor/Konzept – Netzwerk-Labor.md   ← Spezifikation, verbindlich
   (fĂŒr Phase 0 besonders § 9 „Technik und Desktop-HĂŒlle“ mit 9.1–9.8, dazu § 11 und § 12)
2. 10-Projekte/Lernprojekte/FISI-Spielhalle/Plan – Spielhalle 2.0.md und Liesmich.md   ← Vorbild und Konventionen
3. FISI-Spielhalle/src/kern.js, lernmotor.js, ui.js, stil.css, tests.html und bauen.py
   ← so ist die Spielhalle gebaut; das Labor nutzt DENSELBEN Lernmotor (zur Bauzeit eingebunden, nicht kopiert)
4. Stoffquellen fĂŒr spĂ€tere Lehrtexte in 20-Bereiche/Umschulung/Netzwerk/: Network – Lernfassung.md,
   VLAN – Lernfassung.md (enthĂ€lt Cisco-Befehle), TCP – Lernfassung.md, 04-AP1-Netzwerk.md,
   07-Uebungen-Subnetting-Szenarien.md, Fragen – Netzwerke planen.md

TECHNIK (entschieden, nicht neu verhandeln)
- Tauri 2 als HĂŒlle, OberflĂ€che und Spiellogik in schlichtem JavaScript (kein Bundler, kein TypeScript, kein npm fĂŒr die App).
  Tauri lĂ€dt den von bauen.py gebauten Ordner web/; API ĂŒber app.withGlobalTauri (window.__TAURI__) – vorher in der
  aktuellen Tauri-Doku gegenprĂŒfen, die Konfiguration kann sich geĂ€ndert haben.
- Rust-Seite dĂŒnn halten (Fenster, Tray, Speichern, Autostart, Einzelinstanz; grob < 500 Zeilen).
- Der Kern kennt nur die Plattform-Schnittstelle (src/plattform/plattform.js), nie Tauri direkt. Zwei Umsetzungen:
  plattform-tauri.js und plattform-browser.js (Browser-Fassung als Einzeldatei ĂŒber bauen.py --paket).
  plattform.kann("...") blendet Nicht-UnterstĂŒtztes aus, mit einem Satz BegrĂŒndung. Es darf nie etwas brechen.
- Speichern: Cache mit Durchschreiben, damit `store.get/set` des Lernmotors synchron bleiben. Rust schreibt atomar
  (temporÀre Datei, dann umbenennen), 5 rotierende Sicherungen, Versionsfeld, Export/Import per Dateidialog.
- Ein Fenster, zwei Ansichten (Leiste/Voll) plus Tray. Leiste: rahmenlos, klein, halbdurchsichtig, ohne Fokus,
  nur Maus, kein Ton, neue Tickets nur als ZÀhler/Punkt. Regeln in Konzept § 9.7 sind verbindlich.
- Zeigerereignisse statt HTML5-Drag-and-Drop; konservatives CSS; Schriften lokal (woff2), keine externen Anfragen.
- sim/ und cli/ greifen NIE auf DOM, Datum oder Zufall direkt zu (Zufall nur ĂŒber ĂŒbergebenen Seed).
- Simulation = ereignisgesteuert auf Frame-Ebene, Ergebnis eine Trace als reine Daten (fĂŒr spĂ€tere Phasen).
- Deutsche OberflĂ€che, Anrede „du“. Keine erfundenen Fachinhalte, jeder Lehrtext mit Quelle, Unbelegtes als „IOS-Ă€hnlich“.
  Kein Cisco-Logo, keine Cisco-Symbole. Fertigkeiten heißen lab.*, Thema „Netzwerk“.

UMGEBUNG (am 30.09.2026 auf diesem Rechner geprĂŒft)
- Vorhanden: Rust 1.97.1 (cargo, rustc), Visual Studio 2022 Community (C++-Arbeitslast NICHT geprĂŒft), WebView2 154,
  Python 3.14, Git, Docker, WSL2 mit Ubuntu 26.04 (WSLg: Wayland, DISPLAY=:0 fĂŒr XWayland).
- Fehlt: Node, tauri-cli. In der WSL-Ubuntu fehlt ALLES (gcc, cargo, node, pkg-config, WebKitGTK-Entwicklungspakete).
- Der Nutzer hat Werkzeug-Installationen ausdrĂŒcklich erlaubt. Trotzdem: Vor jeder Installation mit Adminrechten
  (winget, sudo apt) einen Satz „was und warum“ nennen, nur installieren, was Phase 0 braucht (Konzept § 9.8,
  erste vier Zeilen), Versionen ins Log. Paketnamen auf Ubuntu 26.04 mit apt-cache prĂŒfen. Beim WSL-Start erscheint
  eine Netzwerkwarnung (Fallback VirtioProxy); falls apt deshalb scheitert, Ursache klÀren statt umgehen.
- Der erste Rust-Build dauert Minuten: im Hintergrund laufen lassen, nicht danebenstehen.

ABNAHME PHASE 0 (sichtbare AblĂ€ufe, nicht „Modul existiert“)
  1. Netzwerk-Labor.exe startet per Doppelklick unter Windows; die Linux-Fassung startet in WSLg.
     Probiere in WSLg beides: mit GDK_BACKEND=x11 (XWayland) und ohne (Wayland).
  2. Leiste ⇄ Vollansicht per Klick, im selben Fenster; die Vollansicht baut ihr DOM beim Wechsel ab.
  3. Tray-Symbol; ein simuliertes Ticket (Testknopf) setzt Punkt und ZĂ€hler, OHNE Fokus, Ton oder Pop-up.
  4. Neustart des Programms behĂ€lt den Zustand; beschĂ€digte Datei → letzte Sicherung wird geladen und gemeldet.
  5. Zweiter Start holt die Leiste nach vorn statt ein zweites Programm zu öffnen.
  6. Die Tabelle aus Konzept § 9.4 ist je System ausgefĂŒllt (getestet, nicht angenommen), RĂŒckfall-Anzeigen funktionieren.
  7. Browser-Fassung (bauen.py --paket): START.html öffnet per Doppelklick, Konsole ohne Fehler.
  8. Lernmotor eingebunden: eine lab.*-Fertigkeit erscheint im Lernstand; tests.html grĂŒn, Node-Lauf (tests/run.js) grĂŒn.
  9. Leerlaufwerte (CPU, Speicher) in Tray und Leiste gemessen, Windows und Linux, Zahlen im Log. Keine Grenzwerte erfinden.

VORGEHEN
1. Kurze Architekturskizze in Netzwerk-Labor/Architektur.md (Plattform-Schnittstelle, Speichern, FensterzustÀnde,
   Datenmodell-Entwurf fĂŒr GerĂ€t/Kabel/Config/Frame/Trace), dann sofort bauen. Nicht auf Freigabe warten.
2. Zuerst der dĂŒnnste Durchstich: leeres Fenster → Leiste ⇄ Voll → Tray → Speichern. Dann Linux. Dann verbreitern.
3. Nach jedem grĂ¶ĂŸeren Baustein: Tests grĂŒn, dann EINE gezielte SichtprĂŒfung im echten Programm (Bildschirmfoto).
   Keine endlosen PrĂŒfschleifen. Fehler gezielt beheben.
4. Logge in 90-Werkstatt/Logs/<Datum>.md: was gebaut, was geprĂŒft (mit Zahlen), was bewusst vereinfacht, was offen.
5. Am Ende: beide Fassungen frisch bauen, Windows-exe aus leerem Ordner starten, Linux-Fassung in WSLg starten.

ANTI-MUSTER (aus frĂŒheren LĂ€ufen)
- Nicht Module „neben das System“ schreiben: Tests grĂŒn, im Programm null Wirkung.
- Nicht behaupten, etwas sei geprĂŒft, wenn nur der Code gelesen wurde. Ehrlich berichten, was gelaufen ist und was nicht.
- Fensterfunktionen NICHT als „geht“ melden, bevor sie auf dem jeweiligen System gesehen wurden (WSLg ≠ echtes GNOME/KDE).
- Kein AufblÀhen: Nur 7 GerÀtetypen im Spiel, Tiefe im Verhalten. Streichliste im Konzept § 12 beachten.

Wenn du an einer Stelle wirklich nicht weiterkommst, wÀhle die einfachere Lösung, dokumentiere sie und melde sie im
Abschlussbericht. Frage nur bei echten Blockaden. Unbeantwortet bleibt die Linux-Frage (welche Distribution/OberflÀche):
baue fĂŒr „GNOME unter Wayland“ als schwĂ€chsten Fall.

Vorlage fĂŒr Folgephasen

Gleicher Block, PHASE und Leseliste anpassen. Installationsregel und Anti-Muster bleiben.

PHASEZusatz zum Block
1Konzept §§ 3–5 und 7 vollstĂ€ndig lesen. Abnahme: Ticket „Salon: Drucker nicht erreichbar“ von Anfang bis Abnahme im Programm lösbar, Golden-Traces grĂŒn, Bedienung nach § 7
2Konzept § 6 vollstĂ€ndig lesen, IOS-Ausgaben belegen (Cisco-Doku), write erase/vlan.dat-Verhalten vor dem Einbau an einer Quelle prĂŒfen
3Reason-Codes und Lehrtexte aus § 5.4 vervollstÀndigen; TCP-Handshake im PDU-Inspektor
4Ticket-Generator und Injektoren nach § 8.2 mit automatischer TicketprĂŒfung; PrĂŒfungstag aus der Spielhalle wiederverwenden
5Leiste bei 320 × 220 px prĂŒfen; Ticket-Eingang ohne Fokusklau auf beiden Systemen testen; Playbooks an L.istFaellig koppeln; Vollbild-Ausblendung (Windows)