From ae94fc8f479f5d54023e1b3fc126b9ab228df6bc Mon Sep 17 00:00:00 2001 From: Rene Fichtmueller Date: Thu, 14 May 2026 21:52:23 +0200 Subject: [PATCH] feat: Training Module im Standards-Tab (Lektionen, Quiz, Lernpfade) - 3. Subtab "Trainings" im Standards-Bereich mit Fortschrittsbalken - 13 Lektionen: Form Factors, Glasfaser, IEEE 802.3, WDM, PAM4/NRZ, Link Budget (Live-Rechner), Coherent Optics, MSA/DOM, Vendor Locking, Temperature Classes, Selection Guide, 400G/800G, Troubleshooting - 40 Quiz-Fragen mit Erklaerungen, Shuffle, Feedback pro Antwort, Falsch-Antworten-Review und Note (A-F) - 4 Lernpfade: Einsteiger (5), Netzwerk-Engineer (9), Einkaeufer (6), Expert (alle 13) - Lernfortschritt in localStorage (tip_training_progress) - Live Link-Budget-Rechner eingebettet in Lektion linkbudget --- packages/dashboard/index.html | 825 +++++++++++++++++++++++++++++++++- 1 file changed, 824 insertions(+), 1 deletion(-) diff --git a/packages/dashboard/index.html b/packages/dashboard/index.html index 3c6f8af..6ded9cc 100644 --- a/packages/dashboard/index.html +++ b/packages/dashboard/index.html @@ -1260,6 +1260,10 @@ style="padding:8px 20px;font-size:0.85rem;font-weight:600;border:none;background:none;color:var(--text-dim);border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer"> Formfaktoren + @@ -1325,6 +1329,81 @@ Lade Bauformen… + + + @@ -5533,7 +5612,7 @@ async function loadStandardsList() { // ── SUB-TAB SWITCHING ─────────────────────────────────────────────────────── function switchStdSubtab(tab) { - ['standards','formfaktoren'].forEach(function(t) { + ['standards','formfaktoren','training'].forEach(function(t) { var content = el('std-subtab-' + t); var btn = el('std-sub-btn-' + t); if (!content || !btn) return; @@ -5545,6 +5624,7 @@ function switchStdSubtab(tab) { if (tab === 'formfaktoren') { if (_allFormFactors.length === 0) loadFormFactors(); else renderFormFactors(); } + if (tab === 'training' && !window._trainingLoaded) initTraining(); } async function loadFormFactors() { @@ -10689,6 +10769,749 @@ function renderRadar(techs, container) { buildDOM(container, svg + legend); } + +// ═══════════════════════════════════════════════════════════════════════════ +// 🎓 TRAINING MODULE +// ═══════════════════════════════════════════════════════════════════════════ + +window._trainingLoaded = false; +window._currentLessonIdx = 0; +window._currentPath = 'all'; +window._quizState = null; + +// ── LESSON DATA ───────────────────────────────────────────────────────────── +var LESSONS = [ + +{id:'ff-101', icon:'🔌', title:'Form Factors — Überblick', level:'beginner', duration:'6 min', + category:'Formfaktoren', tags:['SFP','QSFP','OSFP','Formfaktor'], + paths:['beginner','engineer','buyer','expert'], + content: [ + {h:'Was ist ein Formfaktor?', + p:'Ein Transceiver-Formfaktor definiert die physikalische Abmessung, die Steckverbindung zum Switch-Port und das elektrische Interface. Er bestimmt NICHT die optische Reichweite oder den Standard — das ist Aufgabe des optischen Moduls darin.'}, + {h:'Die SFP-Familie (Small Form-factor Pluggable)', + table:{head:['Typ','Max. Speed','Lanes elektrisch','Breite','Eingeführt'], + rows:[['SFP','1 Gbps','1','13.4 mm','2000 (SFF-8472)'],['SFP+','10 Gbps','1','13.4 mm','2003 (SFF-8431)'], + ['SFP28','25 Gbps','1','13.4 mm','2015 (SFF-8402)'],['SFP56','50 Gbps (PAM4)','1','13.4 mm','2018'], + ['SFP-DD','100 Gbps','2','13.4 mm','2018 (SFP-DD MSA)'],['SFP112','100 Gbps/Lane','1','13.4 mm','2022']]}}, + {h:'Die QSFP-Familie (Quad SFP)', + table:{head:['Typ','Max. Speed','Lanes elektrisch','Typischer Einsatz'], + rows:[['QSFP+','40 Gbps','4×10G','40G Aggregation, DAC'],['QSFP28','100 Gbps','4×25G','100G Standard heute'], + ['QSFP56','200 Gbps','4×50G PAM4','200G Switches'],['QSFP-DD','400 Gbps','8×50G PAM4','400G Rechenzentrum'], + ['QSFP112','400 Gbps','4×100G','400G nächste Gen'],['QSFP-DD800','800 Gbps','8×100G','800G emerging']]}}, + {h:'OSFP, CFP und Legacy', + p:'OSFP (Octal SFP): 8×100G = 800 Gbps, größer als QSFP-DD, bessere Wärmeableitung — bevorzugt bei 400G und 800G AI-Switches (z.B. NVIDIA Spectrum-4). Breite: 22.6 mm.

CFP/CFP2/CFP4/CFP8: Früher bei 100G Coherent-Modulen. CFP2 = 41.5 mm breit, sehr groß. Heute durch kleiner QSFP-DD für 400G Coherent abgelöst.

XFP (10G): Vorgänger des SFP+, heute Legacy. Größer, mehr Protokollflexibilität.
X2 / XENPAK / GBIC: Historisch — in modernen Deployments nicht mehr verwendet.'}, + {h:'Entscheidungshilfe', + p:'▸ Neues Rechenzentrum 2024+: QSFP28 (100G), QSFP-DD (400G), OSFP (400G/800G Spine)
▸ Enterprise Access: SFP28 (25G Uplink), SFP+ (10G)
▸ Altbestand (10G): SFP+ — weitgehend backward-kompatibel mit SFP-Ports
▸ AI-Fabric: OSFP oder QSFP-DD je nach Switch-Hersteller'}, + ]}, + +{id:'fiber-101', icon:'💡', title:'Glasfaser-Typen', level:'beginner', duration:'7 min', + category:'Glasfaser', tags:['SMF','MMF','OS2','OM4','OM5','Kabel'], + paths:['beginner','engineer','buyer','expert'], + content: [ + {h:'Multimode (MMF) vs. Singlemode (SMF)', + p:'Multimode (MMF): Kerndurchmesser 50 µm oder 62,5 µm. Mehrere Lichtpfade gleichzeitig → Modendispersion begrenzt Reichweite. Günstigere Laser (VCSEL statt DFB). Typisch: Kurzstrecke 100m–400m im Rechenzentrum.

Singlemode (SMF): Kerndurchmesser 9 µm. Nur ein Lichtpfad → keine Modendispersion → extrem große Reichweiten (bis Tausende km mit Verstärkern). Teurer (DFB/EML-Laser).'}, + {h:'Multimode-Kategorien (OM1–OM5)', + table:{head:['Typ','Kern','Bandbreite (850nm)','Max Reichweite 10G','Farbe (Mantel)','Status'], + rows:[['OM1','62,5 µm','160 MHz·km','33 m','Orange','Obsolet'], + ['OM2','50 µm','500 MHz·km','82 m','Orange','Legacy'], + ['OM3','50 µm','2.000 MHz·km','300 m','Aqua (türkis)','Weit verbreitet'], + ['OM4','50 µm','4.700 MHz·km','400 m','Violett / Aqua','Standard DC'], + ['OM5','50 µm','28.000 MHz·km (WBMMF)','400 m (4×25G SWDM)','Limettengrün','Emerging (WDM-MMF)']]}}, + {h:'Singlemode-Kategorien (OS1/OS2)', + table:{head:['Typ','Dämpfung','Einsatz','ITU-T'], + rows:[['OS1','≤1.0 dB/km','Indoor, Gebäude','G.652'], + ['OS2','≤0.4 dB/km','Außen, Weitverkehr, Low-Water-Peak','G.652D, G.657'], + ['Ultra-Low-Loss','+ULL ≤0.17 dB/km','Submarine, Coherent long-haul','G.654.E']]}}, + {h:'Steckverbinder (Connector-Typen)', + p:'LC (Lucent Connector): Standard für SFP/QSFP — kleine 1.25mm Ferrule, Duplex (TX+RX). Weit verbreitet.
SC (Subscriber Connector): 2.5mm Ferrule, älterer Standard. Noch bei Legacy-Infrastruktur.
MPO-12 / MPO-16: Multi-Fiber-Stecker fĂźr 40G/100G/400G parallel optics (8 oder 16 aktive Fasern).
FC (Fiber Channel): Schraubanschluss, primär fßr Messtechnik und SAN.
Wichtig: Verschmutzung ist Hauptfehlerquelle! Stets Reinigungsstift vor Einstecken verwenden.'}, + {h:'Regel: Fiber und Transceiver müssen zusammenpassen', + p:'✓ SMF-Transceiver → OS1/OS2 Kabel (gelber Mantel)
✓ MMF-Transceiver (SR) → OM3/OM4/OM5 (aqua/violett)
✗ SMF-Transceiver auf MMF → zu viel optische Rückreflexion, kein stabiler Link
✗ MMF-Transceiver auf SMF → zu wenig Licht empfangen, Link kommt nicht hoch'}, + ]}, + +{id:'standards-ieee', icon:'📋', title:'IEEE 802.3 Standards', level:'beginner', duration:'8 min', + category:'Standards', tags:['IEEE','802.3','Ethernet','Bezeichnung'], + paths:['beginner','engineer','expert'], + content: [ + {h:'Wie liest man einen Ethernet-Transceiver-Namen?', + p:'Format: [Speed]BASE-[Kürzel]
Beispiel: 100GBASE-LR4
▸ 100G = 100 Gbps
▸ BASE = Basisband (kein Träger-Modulation im klassischen Sinn)
▸ L = Long reach (L=10km, E=40km, Z/ZR=80km+, S=300m, T=Kupfer)
▸ R = Leitungscodierung (64b/66b)
▸ 4 = 4 Wellenlängen (WDM)'}, + {h:'Die wichtigsten IEEE 802.3 Amendments', + table:{head:['Amendment','Jahr','Standards','Formfaktoren'], + rows:[['802.3z','1998','1000BASE-SX/LX/ZX','GBIC, SFP'], + ['802.3ae','2002','10GBASE-SR/LR/ER/ZR','XFP, X2, SFP+'], + ['802.3ba','2010','40GBASE-SR4/LR4, 100GBASE-SR10/LR4/ER4','QSFP+, CFP'], + ['802.3bm','2015','40GBASE-SR4, 100GBASE-SR4/CWDM4','QSFP28'], + ['802.3bs','2017','200GBASE-DR4/FR4/LR4, 400GBASE-FR8/LR8','QSFP56, QSFP-DD'], + ['802.3cd','2018','50GBASE-SR/FR/LR, 100GBASE-DR, 200GBASE-DR4','SFP56, QSFP28'], + ['802.3ck','2022','100GBASE-CR1/KR1, 400GBASE-CR4/KR4','QSFP112, OSFP'], + ['802.3df','2024','800G, 1.6T','QSFP-DD800, OSFP']]}}, + {h:'MSA-Standards (Multi-Source Agreement)', + p:'MSA = Herstellerübergreifende Vereinbarung die IEEE-Lücken füllt. Die wichtigsten:

100G-SR4 (100m OM4 mit MPO): Häufigste im DC-Bereich
100G-CWDM4: 4×25G auf CWDM, 2km SMF, kostengünstig
100G-PSM4: 4×25G parallel SMF, MPO, 500m, DC-Interconnect
400G-FR4: 4×100G LWDM auf SMF, 2km, LC-Duplex — Standard für 400G im DC
400G-DR4: 4×100G parallel SMF, MPO-12, 500m
OpenZR+: Coherent 400G bis 1000km, interoperabel'}, + {h:'Reichweite-Kürzel — Schnellreferenz', + table:{head:['Kürzel','Bedeutung','Typische Reichweite'], + rows:[['SR','Short Reach (MMF)','100m–300m'], + ['DR','Direct Reach (SMF parallel)','500m'], + ['FR','Fabric Reach','2 km'], + ['LR','Long Reach','10 km'], + ['ER','Extended Reach','40 km'], + ['ZR','Ultra-Long Reach','80 km'], + ['ZR+','Coherent Extended','120–1000+ km'], + ['T','Twisted Pair (Kupfer)','bis 100m'], + ['CR','Copper (DAC)','bis 3m aktiv']]}}, + ]}, + +{id:'wdm-101', icon:'🌈', title:'WDM-Technologien', level:'intermediate', duration:'7 min', + category:'Technologie', tags:['CWDM','DWDM','LWDM','Wellenlänge','WDM'], + paths:['engineer','expert'], + content: [ + {h:'Was ist WDM?', + p:'WDM (Wavelength Division Multiplexing) = Mehrere Lichtsignale auf unterschiedlichen Wellenlängen gleichzeitig über eine Faser. Jede Wellenlänge = ein unabhängiger Kanal. Dies vervielfacht die Kapazität ohne neue Glasfaser zu legen.'}, + {h:'CWDM (Coarse WDM)', + p:'▸ 18 Kanäle, 20 nm Kanalabstand: 1270–1610 nm
▸ Günstigere, unkomplizierte Laser (kein Temperaturstabilisierung nötig)
▸ Reichweite: typisch bis 80 km auf OS2 ohne Verstärker
▸ Einsatz: Metro-Netze, Campus WDM, Legacy 10G CWDM SFP+
▸ Limitation: Kanal-Abstand zu groß für Verstärkung mit EDFA (Erbium-Dotierter Faserverstärker)'}, + {h:'DWDM (Dense WDM)', + p:'▸ 48–96 Kanäle, 100 GHz (0.8 nm) oder 50 GHz Kanalabstand im C-Band (1530–1565 nm)
▸ Präzise temperaturgeregelte Laser (ITU-T G.694.1 Grid)
▸ Reichweite: bis >10.000 km mit EDFA-Verstärkern und Raman-Pumpern
▸ Einsatz: Fernverkehr, Submarine-Kabel, Carrier-Backbone
▸ Tunable DWDM SFP+/QSFP28: ein Modul deckt alle 96 Kanäle ab'}, + {h:'LWDM / LAN-WDM', + p:'▸ 4 Wellenlängen, 800 GHz Abstand: 1295/1300/1304/1309 nm
▸ Verwendet in: 100GBASE-LR4, 400GBASE-FR4/LR4
▸ 4×25G (100G) oder 4×100G (400G) auf LC-Duplex SMF
▸ Kostengünstiger als DWDM, kein Temperatur-Tuning nötig
▸ Standard im modernen Rechenzentrum für 2km–10km Verbindungen'}, + {h:'SWDM (Short Wavelength WDM — OM5)', + p:'▸ 4 Wellenlängen auf Multimode-Faser: 850/880/910/940 nm
▸ Kombiniert mit OM5-Faser (Lime Green) für 4×25G = 100G über OM5 bis 150m
▸ Vorteil: Brownfield-Upgrade bestehender MMF-Infrastruktur auf 100G
▸ Noch wenig verbreitet; OM4 mit SR4 ist häufiger'}, + {h:'Vergleich auf einen Blick', + table:{head:['Technologie','Kanal-Abstand','Kanäle','Verstärkbar','Typische Reichweite','Einsatz 2024'], + rows:[['CWDM','20 nm','18','Nein','<80 km','Legacy Metro'], + ['DWDM','100 GHz / 50 GHz','48–96','Ja (EDFA)','Unbegrenzt+Amp.','Backbone, Submarine'], + ['LWDM','800 GHz','4','Nein','10 km','DC 100G/400G'], + ['SWDM','30 nm','4','Nein','150 m','OM5 DC Upgrade']]}}, + ]}, + +{id:'modulation-101', icon:'📡', title:'NRZ vs PAM4 — Signalmodulation', level:'intermediate', duration:'6 min', + category:'Technologie', tags:['PAM4','NRZ','Modulation','400G','Bitfehler','FEC'], + paths:['engineer','expert'], + content: [ + {h:'Warum brauchen wir neue Modulation?', + p:'Elektrische Schnittstellen haben physikalische Bandbreitengrenzen. Bei 25G pro Lane ist NRZ noch praktikabel. Für 50G oder 100G pro Lane braucht man effizientere Kodierung — PAM4.'}, + {h:'NRZ — Non-Return-to-Zero', + p:'▸ 2 Signalpegel: 0V und 1V
▸ 1 Bit pro Symbol
▸ 25G Lane → 25 GBd (25 Giga-Baud) Symbolrate
▸ Einfach, robust, gut bekannt
▸ Verwendet in: alle Transceiver bis 25G/Lane (SFP+, SFP28, QSFP28 mit 4×25G NRZ)'}, + {h:'PAM4 — 4-level Pulse Amplitude Modulation', + p:'▸ 4 Signalpegel: 0, 1/3, 2/3, 1 (relativ)
▸ 2 Bits pro Symbol → Verdopplung der Effizienz
▸ 50G Lane → 26.5625 GBd Symbolrate (bei 64b/66b Encoding)
▸ 100G Lane → 53.125 GBd
▸ Verwendet in: QSFP-DD 400G, OSFP 400G/800G, SFP56 50G, alle 400G+ Transceiver'}, + {h:'Das Problem mit PAM4: Höhere Fehlerrate', + p:'PAM4 Signalpegel liegen dichter beieinander → schlechteres SNR → mehr Bitfehler (höhere BER vor FEC). Daher ist FEC (Forward Error Correction) bei PAM4 Pflicht.', + table:{head:['Parameter','NRZ (25G Lane)','PAM4 (50G Lane)'], + rows:[['Symbolrate','25 GBd','26.56 GBd'],['Bits/Symbol','1','2'], + ['Elektrische BW','~16 GHz','~18 GHz'],['BER vor FEC','<10⁻¹²','~10⁻⁴'], + ['FEC erforderlich','Optional','Pflicht'],['Implementierungskomplexität','Niedrig','Hoch']]}}, + {h:'FEC-Typen (Forward Error Correction)', + p:'RS(544,514) = KP4-FEC: Standard für 400G PAM4. Korrigiert BER bis 2.4×10⁻⁴ → liefert 10⁻¹⁵ nach Korrektur.
Firecode FEC (FC-FEC): Leichter FEC fĂźr 25G/50G.
KR4-FEC: Backplane Ethernet.

⚠️ FEC-Mismatch zwischen Switch und Transceiver ist häufige Fehlerquelle bei 400G-Inbetriebnahme. Beide Seiten müssen identischen FEC-Modus aushandeln (Auto-FEC oder manuell konfiguriert).'}, + ]}, + +{id:'linkbudget', icon:'🔢', title:'Link-Budget Rechner', level:'intermediate', duration:'8 min', + category:'Praxis', tags:['Link Budget','dBm','Dämpfung','Reichweite','Berechnung'], + paths:['engineer','expert'], + content: [ + {h:'Was ist das Link-Budget?', + p:'Das Link-Budget beschreibt die verfügbare optische Leistungsreserve zwischen Sender und Empfänger. Formel:

Link Budget [dB] = TX Power [dBm] − RX Sensitivity [dBm]

Dieses Budget muss größer sein als alle Verluste auf der Strecke plus einem Systemmargin (typisch 3 dB).'}, + {h:'Typische TX und RX Werte', + table:{head:['Transceiver-Typ','TX Power','RX Sensitivity','Optisches Budget'], + rows:[['10GBASE-SR (MMF)','−7 bis +3 dBm','−11 dBm','min. 4 dB'], + ['10GBASE-LR (SMF)','−8 bis +3 dBm','−14 dBm','min. 6 dB'], + ['100GBASE-SR4 (MMF)','−8 bis +4 dBm','−10 dBm','2–12 dB'], + ['100GBASE-LR4 (SMF)','−6 bis +1 dBm','−14 dBm','7 dB'], + ['400GBASE-DR4 (SMF)','−6 bis 0 dBm','−12 dBm','6 dB'], + ['400GBASE-FR4 (SMF)','−4 bis +2 dBm','−14 dBm','10 dB']]}}, + {h:'Strecken-Verluste berechnen', + table:{head:['Verlustquelle','Typischer Wert'], + rows:[['Glasfaser SMF (OS2)','0.35–0.4 dB/km'], + ['Glasfaser MMF (OM4)','2.5–3.0 dB/km bei 850 nm'], + ['LC-Stecker (je Stecker)','0.5 dB (max 0.75 dB)'], + ['Spleißpunkt','0.1 dB (mechanisch 0.3 dB)'], + ['Patch-Panel Durchführung','0.1–0.3 dB'], + ['WDM-Multiplexer/Demux','3–6 dB Insertion Loss'], + ['Systemmargin (Reserve)','3 dB mindestens']]}}, + {h:'Beispiel-Rechnung: 10km Strecke mit 100GBASE-LR4', + p:'Gegeben: TX = 0 dBm, RX-Sens = −14 dBm, OS2-Kabel 10 km, 4 LC-Stecker, 1 Spleißpunkt

Budget = 0 − (−14) = 14 dB
Verluste: 10 km × 0.4 = 4.0 dB (Faser) + 4 × 0.5 = 2.0 dB (Stecker) + 0.1 (Splice) + 3.0 (Margin) = 9.1 dB

Ergebnis: 14 dB − 9.1 dB = 4.9 dB Reserve ✓ (Strecke machbar, ausreichend Margin)'}, + {h:'Live Link-Budget Rechner', + p:'
' + + '
' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Werte eingeben…
'}, + ]}, + +{id:'coherent-101', icon:'🌊', title:'Coherente Optik', level:'advanced', duration:'7 min', + category:'Technologie', tags:['Coherent','ZR+','Weitverkehr','DSP','QPSK'], + paths:['expert'], + content: [ + {h:'Was ist Coherente Übertragung?', + p:'Bei direkter Detektion (Direct Detect) wertet der Empfänger nur die Intensität des Lichts aus. Bei coherenter Detektion wertet er zusätzlich Phase und Polarisation aus — dadurch können komplexe Modulationsformate genutzt werden:

▸ QPSK: 4 Phasenlagen, 2 Bits/Symbol
▸ DP-QPSK: Dual-Polarisation, 4 Bits/Symbol
▸ 16QAM: 16 Punkte im Konstellationsdiagramm, 8 Bits/Symbol
▸ 64QAM: Noch dichter, >10 Bits/Symbol — nur bei sehr gutem OSNR'}, + {h:'DSP — Das Herzstück coherenter Systeme', + p:'Ein hochleistungs-DSP (Digital Signal Processor) im Transceiver entzerrt alle linearen und nichtlinearen Effekte der Faser:
▸ Chromatische Dispersion (CD) — kein externer Dispersions-Kompensator nötig
▸ Polarisationsmode-Dispersion (PMD)
▸ Nichtlineare Effekte (SPM, XPM, FWM)
▸ Frequenz-Offset der Laser (Phasennoise)
Dieser DSP-Chip macht coherente Module teuer und leistungshungrig — kostet heute 5–10W vs. 1.5W für direkten Detect.'}, + {h:'Coherente Standards im Überblick', + table:{head:['Standard','Speed','Reichweite','Formfaktor','Einsatz'], + rows:[['100G Coherent (CFP)','100G','1000+ km','CFP','Legacy Carrier'], + ['200G/400G QSFP28-DCO','200G/400G','500–1000 km','QSFP28','DC-Interconnect'], + ['OpenROADM 400G','400G','Flex','CFP2-DCO','Carrier Transport'], + ['OpenZR+ 400G','400G','1000 km','QSFP-DD','Data Center (Meta, Google)'], + ['800G ZR/ZR+','800G','in Entwicklung','QSFP-DD800/OSFP','Hyperscaler 2025+']]}}, + {h:'Direct Detect vs. Coherent — Wann was?', + p:'Direct Detect (FR4, LR4, DR4):
✓ Kurze Distanzen (bis 10 km), günstiger, niedriger Stromverbrauch
✓ Keine DSP-Komplexität, sofort verfügbar

Coherent (ZR, ZR+, DWDM):
✓ Mittlere bis extreme Distanzen (40 km bis Tausende km)
✓ Höhere Kapazität pro Wellenlänge
✓ Kann DWDM-Kanal belegen → Mux ohne externe ROADM-Hardware
✗ Teurer (5–10×), mehr Strom, langsamer bei Power-On'}, + ]}, + +{id:'msa-dom', icon:'🔍', title:'MSA Standards & DOM', level:'intermediate', duration:'6 min', + category:'Standards', tags:['MSA','DOM','DDMI','SFF','Monitoring','CMIS'], + paths:['engineer','buyer','expert'], + content: [ + {h:'Was ist eine MSA?', + p:'MSA (Multi-Source Agreement) = freiwillige Industrieabkommen zwischen mehreren Herstellern, die mechanische und elektrische Interfaces standardisieren — unabhängig von IEEE. Jeder Hersteller der dem MSA folgt produziert interoperable Module.'}, + {h:'Wichtige MSA-Standards', + table:{head:['MSA / Spezifikation','Scope','Wichtige Inhalte'], + rows:[['SFF-8472','1G/10G SFP DOM','Register-Map für Temperatur, Spannung, Bias, TX/RX Leistung'], + ['SFF-8636','QSFP+ Management','I2C Register-Map, 4 Lane-Monitoring, Interrupt-Signaling'], + ['CMIS 5.0 (SFF-8120)','400G+ (OSFP, QSFP-DD)','Komplette Re-Architektur: Module State Machine, per-Lane CDR-Control, FEC-Status, ESI'], + ['100G CWDM4 MSA','100G 2km SMF','4×25G auf 4 CWDM-Wellenlängen, LC-Duplex'], + ['400G-FR4 MSA','400G 2km SMF','4×100G auf 4 LWDM-Wellenlängen, LC-Duplex'], + ['OpenZR+ MSA','400G Coherent','Interoperabilität zwischen Herstellern für DWDM-400G']]}, + p:''}, + {h:'DOM / DDMI — Digital Optical Monitoring', + p:'DOM (Digital Optical Monitoring) = Echtzeit-Überwachung des Transceiver-Betriebsstatus via I2C. Standardisiert in SFF-8472 (SFP) und SFF-8636 (QSFP).

Gemessene Parameter:
▸ Temperatur (°C): Warnschwelle typisch 70°C, Alarmschwelle 75°C
▸ Versorgungsspannung (V): 3.3V±10%
▸ TX Bias Current (mA): Laser-Betriebsstrom, Degradations-Indikator
▸ TX Output Power (dBm): Gesendete optische Leistung
▸ RX Input Power (dBm): Empfangene optische Leistung'}, + {h:'DOM lesen — Diagnose-Beispiel', + p:'show interfaces Gi0/0/1 transceiver\nSFP transceiver information:\n Identifier : SFP+\n Connector : LC\n Temperature : 42.5 C ← Normal (Alarm >75C)\n Voltage : 3.29 V ← Normal (3.0–3.6V)\n TX Bias : 8.35 mA ← Normal (30mA = degradiert)\n TX Power : -2.1 dBm ← Check: Soll-Bereich!\n RX Power : -4.8 dBm ← Empfangsleistung OK\n RX Power High Alarm : 0.0 dBm\n RX Power Low Alarm : -13.9 dBm ← Wir haben Abstand!'}, + ]}, + +{id:'compatibility', icon:'🔗', title:'Kompatibilität & Vendor-Locking', level:'intermediate', duration:'6 min', + category:'Praxis', tags:['Kompatibilität','Cisco','Juniper','Third-Party','OEM','Compatible'], + paths:['engineer','buyer','expert'], + content: [ + {h:'Das Kompatibilitätsproblem', + p:'Netzwerk-Hersteller implementieren oft Vendor-Locking: Der Switch prüft die EEPROM-Daten des Transceivers und verweigert den Betrieb wenn das Modul nicht "approved" ist. Dies schützt Herstellermargen, nicht die Netzwerksicherheit.'}, + {h:'Wie Hersteller prüfen (typisch)', + p:'▸ EEPROM Byte 0: SFP/QSFP Identifier (standardisiert, kein Problem)
▸ Vendor Name / Part Number: Switch prüft gegen interne Whitelist
▸ OUI (Organizationally Unique Identifier): Erste 3 Bytes der Vendor MAC → identifiziert Hersteller
▸ Cisco Encrypted Checksum: Cisco IOS prüft kryptografischen Fingerprint in Byte 96–127 (nach SFF-8472 freiem Bereich)'}, + {h:'Switch-Verhalten bei "inkompatiblem" Modul', + table:{head:['Hersteller','Verhalten','Workaround'], + rows:[['Cisco IOS','%GBIC_SECURITY: non-Cisco SFP, link may not function','service unsupported-transceiver (CLI-Befehl)'], + ['Cisco NX-OS','Port bleibt im error-disabled Zustand','no shut + unsupported-transceiver erlauben'], + ['Juniper','Warnung, aber Port funktioniert normalerweise','Keine Aktion nötig in den meisten Fällen'], + ['Arista EOS','Port funktioniert mit Warnung','transceiver unsupported-diagnostic-monitoring erlauben'], + ['Huawei','Warnung, aber Port funktioniert','transceiver-diagnostic-info ignore'], + ['HPE/H3C','Port-Down möglich','display transceiver + manuell freischalten']]}}, + {h:'Third-Party vs. OEM — Entscheidungskriterien', + p:'OEM-Modul: Original vom Switch-Hersteller (Cisco, Juniper, Arista branded)
✓ Garantierte Kompatibilität, kein Ärger beim TAC-Support
✗ 5–15× teurer als Third-Party

Third-Party / Compatible: Gleiche Hardware, codiert auf den Hersteller
✓ Erhebliche Kostenersparnis (oft 80-90% günstiger)
✓ Gleiche Specs, DOM-Funktionen identisch
✗ Herstellersupport kann Fragen stellen
✗ Cisco Smart Net: Technisch kein Ausschlussgrund, aber vermeidbar in kritischen Env.

Empfehlung: Third-Party für neue Deployments wo Kosten relevant, OEM nur wenn zwingend erforderlich durch Supportverträge.'}, + ]}, + +{id:'temperature-classes', icon:'🌡️', title:'Temperaturklassen', level:'beginner', duration:'5 min', + category:'Praxis', tags:['Temperatur','COM','EXT','IND','Industrie','Outdoor'], + paths:['beginner','buyer','expert'], + content: [ + {h:'Warum Temperaturklassen wichtig sind', + p:'Ein Transceiver der nicht für seinen Einsatzbereich spezifiziert ist, fällt aus — oft unvorhersehbar. Rechenzentren sind kontrolliert (+18 bis +27°C), Outdoor-Schränke oder Industrieumgebungen können −40°C bis +85°C erreichen.'}, + {h:'Die drei Standardklassen', + table:{head:['Klasse','Bezeichnung','Betriebstemperatur','Typischer Einsatz'], + rows:[['C','Commercial (COM)','0°C bis +70°C','Klimatisierte Serverräume, RZ-Core'], + ['E','Extended / Industrial','−20°C bis +85°C','Office-Verteilerräume, unklimatisierte Standorte'], + ['I','Industrial (IND)','−40°C bis +85°C','Outdoor-Schränke, Fabrikhallen, Tunnelinfrastruktur, Öl & Gas']]}, + p:'Vorsicht: Manche Hersteller nennen "Extended" auch "Enterprise" oder "Industrial-Temp" — immer Datenblatt prüfen!'}, + {h:'Technische Unterschiede', + p:'Industrie-Transceiver sind teurer weil:
▸ Laser mit weiterem Temperatur-Tuning-Bereich
▸ TEC (Thermo-Electric Cooler) oder thermisch kompensierte Designs
▸ Erweiterte Betriebstests (Burn-In, Temperaturzyklus, Vibration)
▸ Robustere mechanische Komponenten

Ein COM-Modul bei −5°C = Laser driftet weg, keine stabile Wellenlänge → Linkausfall.'}, + {h:'Einsatz-Checkliste', + p:'1. Außenbereich oder unklimatisiert? → Mindestens EXT, besser IND
2. Tunnels, Industrieumgebung, Moving Parts? → IND obligatorisch
3. Serverraum mit funktionierender Klimaanlage und Redundanz? → COM reicht
4. Edge-Standort ohne sichere Klimatisierung? → EXT mindestens
5. Prüfe immer: max. Innentemperatur im Schrank, nicht Umgebungstemperatur'}, + ]}, + +{id:'selection-guide', icon:'🗺️', title:'Transceiver-Auswahl-Guide', level:'beginner', duration:'9 min', + category:'Praxis', tags:['Auswahl','Entscheidung','Guide','Einkauf'], + paths:['beginner','buyer','expert'], + content: [ + {h:'Schritt-für-Schritt Transceiver auswählen', + p:'Die richtige Reihenfolge der Fragen vermeidet 90% der Fehlkäufe:'}, + {h:'Schritt 1: Welcher Switch-Port?', + p:'▸ Prüfe die Port-Spezifikation im Datenblatt des Switches
▸ Nicht nur Formfaktor, auch elektrisches Interface: z.B. QSFP28 ≠ QSFP+ (Pinbelegung kompatibel, aber Speed-Support verschieden)
▸ SFP+-Port akzeptiert SFP (1G) und SFP+ (10G) — aber kein SFP28 (25G)'}, + {h:'Schritt 2: Welche Speed?', + p:'▸ Beide Seiten müssen gleiche Speed unterstützen
▸ Manche Switches unterstützen Auto-Speed (10G/25G gemeinsam)
▸ DAC (Direct Attach Copper) nur wenn Distanz <5m — am günstigsten'}, + {h:'Schritt 3: Welche Distanz?', + table:{head:['Distanz','Empfehlung'], + rows:[['0–3 m','DAC / AOC (Direktverbindung)'], + ['3–10 m','AOC (Active Optical Cable) oder kurze DAC'], + ['10 m–100 m','SR (MMF, günstiger VCSEL-Laser)'], + ['100 m–300 m','SR4 (OM3), SR (OM4)'], + ['300 m–2 km','CWDM4, FR, FR4 (SMF, LC-Duplex)'], + ['2–10 km','LR, LR4 (SMF)'], + ['10–40 km','ER, CWDM-DWDM'], + ['40 km+','DWDM, Coherent ZR/ZR+']]}, + p:''}, + {h:'Schritt 4: Welche Glasfaser liegt vor?', + p:'▸ Kein Kabel: SMF (OS2) empfehlen — zukunftssicher
▸ OM3/OM4 vorhanden: SR-Transceiver nutzen (günstiger)
▸ OS1/OS2 vorhanden: LR/ER/ZR-Varianten möglich
▸ Unbekannte Faser: Messung mit OTDR vor Inbetriebnahme empfohlen'}, + {h:'Schritt 5: Temperaturklasse', + p:'Serverraum COM; Edge/Outdoor EXT oder IND. Nicht unterschätzen!'}, + {h:'Schritt 6: OEM oder Third-Party?', + p:'Wenn Supportvertrag nicht ausschlaggebend: Third-Party spart 80-90%. Bei kritischer Infrastruktur mit Cisco/Juniper TAC-Support: OEM evaluieren.'}, + {h:'Schritt 7: Preis prüfen', + p:'Transceiver-Preise variieren enorm. Immer 3+ Anbieter vergleichen. Besonders 10G und 25G SFPs sind stark commoditisiert — kein Grund hohe Preise zu zahlen. 400G ZR-Coherent dagegen: Preisunterschiede gering, Qualität und DOM-Support wichtig.'}, + ]}, + +{id:'400g-800g', icon:'⚡', title:'400G, 800G und die Zukunft', level:'advanced', duration:'7 min', + category:'Technologie', tags:['400G','800G','1.6T','AI','Netzwerk','Zukunft'], + paths:['engineer','expert'], + content: [ + {h:'Warum 400G? Der AI-Treiber', + p:'AI-Training-Cluster (GPU-Racks für GPT-4, Llama, Stable Diffusion) benötigen Fabric-Bandbreite in einem Umfang den 100G-Technologie nicht mehr effizient bedienen kann. Ein H100-Server hat 8 GPUs mit je 400G NVLink + 8×400G OSFP-Ports nach außen — ein Rack erzeugt 25,6 Tbps Fabric-Traffic.'}, + {h:'400G Transceiver-Ökosystem 2024', + table:{head:['Standard','Reichweite','Formfaktor','Status','Einsatz'], + rows:[['400GBASE-SR8','100m OM4','QSFP-DD, OSFP','Stabil','Ultra-kurz DC'], + ['400GBASE-DR4','500m SMF-parallel','QSFP-DD, OSFP','Stabil','DC-Interconnect'], + ['400GBASE-FR4','2km SMF','QSFP-DD, OSFP','Stabil','Standard RZ'], + ['400GBASE-LR4','10km SMF','QSFP-DD, OSFP','Stabil','Campus/Metro'], + ['400G ZR','80km DWDM','QSFP-DD','Stabil','DCI Coherent'], + ['400G ZR+','120–1000km','QSFP-DD','Stabil','Carrier/Metro']]}, + p:''}, + {h:'800G — der aktuelle Frontier', + p:'▸ OSFP 800G (8×100G PAM4) und QSFP-DD800 (8×100G PAM4)
▸ IEEE 802.3df: 800GBASE-SR8 (100m OM4), 800GBASE-DR8 (500m)
▸ Bereits in Produktion: NVIDIA Spectrum-4 und InfiniBand NDR (200Gb/s/Port = 800G OSFP)
▸ Cisco 8000 Series und Arista 7800: 800G OSFP-Ports verfügbar
▸ Preise 2024: 400G QSFP-DD FR4 ca. $500–800, 800G OSFP ca. $1.500–2.500'}, + {h:'1.6T — was kommt?', + p:'▸ IEEE 802.3df: 1.6TBASE (16×100G oder 8×200G)
▸ OSFP: 1.6T via 8×200G PAM4
▸ Symbolrate: >106 GBd — erfordert neue DSP-Technologie
▸ Optical I/O (OIO): Chip-nahe Optik direkt auf Package → reduziert SerDes-Verluste dramatisch
▸ Co-Packaged Optics (CPO): Optik direkt in den Switch-ASIC integriert — kein Steckmodul mehr
▸ Timeline: CPO-Produkte 2025–2026 (Broadcom, Marvell, Intel)'}, + ]}, + +{id:'troubleshooting', icon:'🔧', title:'Troubleshooting — Häufige Probleme', level:'intermediate', duration:'7 min', + category:'Praxis', tags:['Troubleshooting','Fehler','BER','Loopback','DOM'], + paths:['engineer','expert'], + content: [ + {h:'Symptom: Port kommt nicht hoch (Link Down)', + p:'Checkliste:
1. DOM prĂźfen: TX Power und RX Power im Datenblatt-Bereich?
2. Faser-Poleritaät: TX↔RX vertauscht? (Bei Duplex: eine Faser TX, eine RX)
3. Glasfaser-Typ: MMF-Transceiver auf SMF oder umgekehrt?
4. Stecker-Sauberkeit: Mit Inspektionsmikroskop/Video-Endoscope prĂźfen
5. Kompatibilitäts-Warnung: Logdatei des Switches auf Vendor-Blocking prßfen
6. FEC-Mismatch: Bei 400G PAM4 — FEC-Mode auf beiden Seiten prüfen'}, + {h:'Symptom: Hohe BER / Fehlerrate', + p:'1. RX Power zu niedrig: Streckendämpfung größer als Budget → OTDR messen
2. Faserverschmutzung: #1 Fehlerquelle — LC-Stecker reinigen
3. Faserschäden: Knickradien unter 30mm (SMF) oder Zugbeanspruchung
4. Reflektionen: Beschädigter Ferrule-Kontakt → APC-Stecker für SMF-LR
5. PAM4-Signal-Qualität: Eye-Diagram mit Oszilloskop messen
6. Laser-Degradation: TX Bias Current erhöht → Modultausch'}, + {h:'Symptom: Transceiver überhitzt', + p:'1. Temperatur via DOM prüfen: show interfaces X transceiver
2. Luft-Zirkulation im Switch-Chassis prĂźfen (blockierte LĂźfter?)
3. Nachbarlports belegt? Thermische Kopplung mĂśglich
4. Modul-Typ: IND statt COM wenn Umgebungstemperatur >30°C Raumtemperatur
5. Hot-Plug-Protokoll: Modul heiß abziehen kann zu ESD-Schaden führen'}, + {h:'Diagnose-Befehle — Referenz', + table:{head:['Plattform','Befehl'], + rows:[['Cisco IOS','show interfaces Gi0/1 transceiver detail'], + ['Cisco NX-OS','show interface Ethernet1/1 transceiver'], + ['Juniper JunOS','show interfaces xe-0/0/0 diagnostics optics'], + ['Arista EOS','show interfaces Et1/1 transceiver'], + ['Linux (ethtool)','ethtool -m eth0'], + ['Linux (OSFP/CMIS)','ethtool --json -m eth0 | python3 -m json.tool']]}, + p:''}, + {h:'Loopback-Test', + p:'Ein optischer Loopback-Stecker (Faser vom TX zurück zum RX) ermöglicht den Test des Transceivers ohne Gegenport:
▸ Konfig: loopback local oder channel-group loopback
▸ Verkehrstest mit traffic-generator
▸ Wenn Loopback OK: Transceiver ist gut → Problem liegt in der Faser oder beim Gegenport'}, + ]}, + +]; + +// ── QUIZ DATA ─────────────────────────────────────────────────────────────── +var QUIZ_QUESTIONS = [ + {q:'Wieviele elektrische Lanes hat ein QSFP28?',o:['1','2','4','8'],a:2,lesson:'ff-101', + e:'QSFP = Quad SFP = 4 Lanes. Bei QSFP28 transportiert jede Lane 25 Gbps → 4×25G = 100 Gbps gesamt.'}, + {q:'Welcher Formfaktor verwendet 8 elektrische Lanes (8×50G PAM4) für 400G?',o:['QSFP28','SFP56','QSFP-DD','CFP2'],a:2,lesson:'ff-101', + e:'QSFP-DD = QSFP Double Density = 8 Lanes. Bei 50G PAM4 pro Lane = 400G. OSFP auch 8 Lanes.'}, + {q:'Was ist der Kerndurchmesser einer typischen Singlemode-Faser?',o:['9 µm','50 µm','62,5 µm','125 µm'],a:0,lesson:'fiber-101', + e:'SMF hat einen 9 µm Kern. MMF-OM3/OM4 hat 50 µm. 62,5 µm war OM1/OM2 (veraltet). 125 µm ist der Außendurchmesser des Glasmantels bei allen Typen.'}, + {q:'Welche Farbe hat typischerweise ein OM4-Fasermantel?',o:['Gelb','Orange','Aqua / Türkis','Violett / Lime'],a:3,lesson:'fiber-101', + e:'OM3 = Aqua/Türkis. OM4 = Violett (oder manchmal auch Aqua, je nach Hersteller). OM5 = Limettengrün. SMF = Gelb.'}, + {q:'Was bedeutet "LR" bei einem Ethernet-Transceiver (z.B. 100GBASE-LR4)?',o:['Low Range','Long Reach (~10km SMF)','Laser-Ready','Lane-Redundant'],a:1,lesson:'standards-ieee', + e:'LR = Long Reach, standardisiert auf ~10 km Reichweite über SMF. ER = Extended Reach (40km), ZR = Ultra Long Range (80km+), SR = Short Reach (MMF, bis 300m).'}, + {q:'Welches IEEE Amendment hat 400G Ethernet eingeführt?',o:['802.3bs (2017)','802.3ba (2010)','802.3ck (2022)','802.3ae (2002)'],a:0,lesson:'standards-ieee', + e:'IEEE 802.3bs (2017) definierte 200G und 400G Ethernet. 802.3ba = 40G/100G, 802.3ck = 100G/200G/400G mit höheren Lane-Rates.'}, + {q:'Wieviele Kanäle hat ein typisches DWDM-System im C-Band?',o:['4','18','48–96','256'],a:2,lesson:'wdm-101', + e:'DWDM im C-Band: bis zu 96 Kanäle bei 100 GHz Abstand, bis 192 Kanäle bei 50 GHz. CWDM hat 18 Kanäle bei 20nm Abstand. LAN-WDM (LWDM) hat 4 Kanäle.'}, + {q:'Welchen Wellenlängenbereich nutzt CWDM?',o:['850–950 nm (850nm-Fenster)','1270–1610 nm','1530–1565 nm (C-Band)','1310 nm nur'],a:1,lesson:'wdm-101', + e:'CWDM nutzt 1270–1610 nm mit 20 nm Kanalabstand. Das C-Band (1530–1565 nm) ist DWDM-Terrain. 850 nm ist das MMF-Fenster (SR-Transceiver).'}, + {q:'Wieviele Bits kodiert PAM4 pro Symbol?',o:['1','2','4','8'],a:1,lesson:'modulation-101', + e:'PAM4 = 4 Pegelstufen → log₂(4) = 2 Bits pro Symbol. NRZ = 1 Bit/Symbol (2 Pegel). Das erlaubt bei gleicher Symbolrate doppelten Datendurchsatz.'}, + {q:'Was ist der Hauptnachteil von PAM4 gegenüber NRZ?',o:['Geringere Reichweite','Höhere BER vor FEC','Mehr Steckerpins nötig','Nur für MMF geeignet'],a:1,lesson:'modulation-101', + e:'PAM4 hat dichter beeinanderliegende Signalpegel → schlechteres SNR → höhere BER vor FEC (~10⁻⁴ statt 10⁻¹²). Deshalb ist FEC bei PAM4 Pflicht.'}, + {q:'Wie berechnet sich das optische Link-Budget?',o:['TX Power × Reichweite','TX Power [dBm] − RX Sensitivity [dBm]','Max. Faserverlust × Streckenlänge','(TX + RX) / 2'],a:1,lesson:'linkbudget', + e:'Link Budget = TX Power − RX Sensitivity. Beispiel: TX = 0 dBm, RX Sens = −14 dBm → Budget = 14 dB. Alle Streckenverluste + Systemmargin (3 dB) müssen kleiner als dieses Budget sein.'}, + {q:'Wieviel Dämpfung verursacht OS2 SMF-Glasfaser typischerweise?',o:['0.1 dB/km','0.35–0.4 dB/km','1.0 dB/km','3.0 dB/km'],a:1,lesson:'linkbudget', + e:'OS2 SMF: 0.35–0.4 dB/km. OS1: ~0.4–1.0 dB/km. OM4 MMF bei 850nm: 2.5–3.0 dB/km. Ultra-Low-Loss (G.654): 0.17 dB/km.'}, + {q:'Was prüft Coherente Optik zusätzlich zur Intensität?',o:['Temperatur','Phase und Polarisation des Lichts','Wellenlänge und Frequenz','Anzahl der Fasern'],a:1,lesson:'coherent-101', + e:'Coherente Detektion wertet Amplitude (Intensität), Phase UND Polarisation aus. Das erlaubt komplexe Modulationsformate wie QPSK und QAM mit deutlich mehr Bits pro Lichtsymbol.'}, + {q:'Was ist OpenZR+?',o:['Ein Steckverbinder-Standard','Ein MSA für 400G interoperables Coherent-DWDM','Ein IEEE-Standard für 800G','Ein Formfaktor-Standard'],a:1,lesson:'coherent-101', + e:'OpenZR+ ist ein MSA (Multi-Source Agreement) das 400G coherente DWDM-Module zwischen verschiedenen Herstellern interoperabel macht — wichtig für Multi-Vendor Data-Center-Interconnect.'}, + {q:'Welcher MSA-Standard definiert das Management-Interface für 400G Module (OSFP, QSFP-DD)?',o:['SFF-8472','SFF-8636','CMIS (SFF-8120)','SFF-8024'],a:2,lesson:'msa-dom', + e:'CMIS (Common Management Interface Specification, SFF-8120) ist der MSA-Standard für Module ab 400G. QSFP-DD und OSFP nutzen CMIS. Ältere Module nutzen SFF-8472 (SFP) oder SFF-8636 (QSFP+).'}, + {q:'Was misst DOM im Bereich "TX Bias Current"?',o:['Die Versorgungsspannung des Moduls','Den Betriebsstrom des Lasers','Die empfangene optische Leistung','Die Umgebungstemperatur'],a:1,lesson:'msa-dom', + e:'TX Bias Current = Betriebsstrom des Laser-Diodes. Steigt der Bias-Strom über die Zeit an (bei gleichbleibender TX Power), deutet das auf Laser-Degradation hin — wichtiger Wartungsindikator.'}, + {q:'Was ermöglicht Cisco IOS den Betrieb mit nicht-Cisco-Modulen?',o:['no ip ospf verify','service unsupported-transceiver','logging console disable','interface override allow-3rdparty'],a:1,lesson:'compatibility', + e:'Der Cisco IOS Befehl "service unsupported-transceiver" schaltet den Cisco-spezifischen Kompatibilitätscheck aus und erlaubt Third-Party-Module zu betreiben — gegen eine Support-Warnung.'}, + {q:'Welche Temperaturklasse gilt für −40°C bis +85°C?',o:['COM (Commercial)','EXT (Extended)','IND (Industrial)','HI (High-Industrial)'],a:2,lesson:'temperature-classes', + e:'IND (Industrial) = −40°C bis +85°C. EXT (Extended) = −20°C bis +85°C. COM (Commercial) = 0°C bis +70°C. Für Outdoor-Anlagen ist mindestens IND erforderlich.'}, + {q:'Welcher Formfaktor wird bevorzugt für 800G AI-Fabric-Switches eingesetzt (z.B. NVIDIA Spectrum-4)?',o:['SFP-DD','QSFP28','QSFP-DD','OSFP'],a:3,lesson:'400g-800g', + e:'OSFP (Octal SFP) bietet mehr Platz für bessere Wärmeableitung bei 800G/3.5W+ pro Port. QSFP-DD ist ebenfalls 400G/800G fähig, aber thermisch limitierter. NVIDIA InfiniBand NDR nutzt OSFP.'}, + {q:'Was ist der erste Schritt beim Troubleshooting eines "Link Down" Problems?',o:['Transceiver tauschen','DOM-Werte prüfen (TX/RX Power)','Kabel-Routing überprüfen','FEC-Konfiguration ändern'],a:1,lesson:'troubleshooting', + e:'DOM (Digital Optical Monitoring) zeigt sofort ob TX Power und RX Power im Soll-Bereich sind. Das eliminiert schnell die häufigsten Ursachen (Faserschäden, falsche Stecker, Dämpfung) ohne Hardware-Tausch.'}, + // 20 more + {q:'Was sind Co-Packaged Optics (CPO)?',o:['Optik auf einem separaten Board neben dem Switch','Optik direkt in den Switch-ASIC integriert','Eine neue Form des LC-Steckers','Ein Coherent-MSA-Standard'],a:1,lesson:'400g-800g', + e:'Co-Packaged Optics (CPO) integriert optische Sender/Empfänger direkt neben dem Switch-ASIC auf demselben Gehäuse. Eliminiert verlustbehaftete SerDes + PCB-Leitungen. Bedeutet: keine steckbaren Module mehr bei CPO-Switches (ab ~2026).'}, + {q:'Was ist der Kanalabstand bei 100 GHz DWDM?',o:['20 nm','0.8 nm (~100 GHz)','0.4 nm','1310 nm'],a:1,lesson:'wdm-101', + e:'100 GHz entspricht ~0.8 nm im C-Band. Das ITU-T G.694.1 Grid definiert 100 GHz und 50 GHz Kanalraster für DWDM. CWDM hat 20 nm Kanalabstand.'}, + {q:'Welches Modul-Format ist typisch für 10G Legacy-Anwendungen und gilt heute als veraltet?',o:['SFP','SFP+','XFP','GBIC'],a:2,lesson:'ff-101', + e:'XFP war ein früher 10G-Standard (2002), größer als SFP+. SFP+ (2003) löste XFP ab und ist heute der Standard-Formfaktor für 10G. GBIC war 1G-Legacy.'}, + {q:'Welchen Vorteil hat SMF gegenüber MMF?',o:['Günstigere Laser','Einfachere Handhabung','Keine Modendispersion → extreme Reichweite','Breiterer Kern erleichtert Verbindung'],a:2,lesson:'fiber-101', + e:'SMF hat nur einen Ausbreitungsweg → keine Modendispersion. Damit sind Reichweiten bis tausende km (mit Verstärkern) möglich. MMF-Modendispersion begrenzt auf max. ~400m bei 100G.'}, + {q:'Was ist FEC und warum ist es bei PAM4 Pflicht?',o:['Frequency Extension Coding — für DWDM','Forward Error Correction — korrigiert PAM4s höhere Rohfehlerrate','Fast Ethernet Control — Speed-Aushandlung','Fiber Error Check — DOM-Alarm-Funktion'],a:1,lesson:'modulation-101', + e:'FEC (Forward Error Correction) fügt Redundanz-Bits hinzu die der Empfänger nutzt um Übertragungsfehler zu korrigieren. PAM4 hat nativ BER ~10⁻⁴ (zu hoch). FEC KP4/RS(544,514) drückt das auf 10⁻¹⁵.'}, + {q:'Welcher Steckverbinder ist Standard für QSFP-Module?',o:['SC Duplex','MPO-8','LC Duplex','FC'],a:1,lesson:'fiber-101', + e:'QSFP+ (40G) nutzt MPO-8 für SR4 (4×10G parallel). QSFP28 (100G-SR4) nutzt MPO-12. Für Single-Mode (LR4, FR4) nutzen QSFP-Module LC Duplex über WDM.'}, + {q:'Welche Distanz ist typisch für 400GBASE-DR4?',o:['100m','500m','2km','10km'],a:1,lesson:'standards-ieee', + e:'400GBASE-DR4 = 4×100G parallel über 4 SMF-Fasern (MPO-12), Reichweite 500m. Häufig für Intra-DC-Verbindungen. FR4 = 2km (LWDM, LC Duplex). LR4 = 10km.'}, + {q:'Was misst OTDR in einem Netzwerk?',o:['Optische Sendeleistung des Transceivers','Reflexionen und Dämpfungspunkte entlang einer Glasfaserstrecke','DOM-Alarm-Schwellwerte','Elektrische BER eines Ports'],a:1,lesson:'troubleshooting', + e:'OTDR (Optical Time-Domain Reflectometer) sendet Lichtpulse in die Faser und misst Rückreflexionen. Damit können Faserschäden, Spleiß-Verluste, Stecker-Qualität und die genaue Position von Problemen bestimmt werden.'}, + {q:'Was bedeutet ein sehr niedriger TX Bias Current bei steigender TX Power?',o:['Guter Zustand — effiziente Laserdiode','Mögliche Kalibrierungs-Problem oder Laserdegradation','Normaler Betrieb im oberen Temperaturbereich','Hinweis auf Faserbruch'],a:1,lesson:'msa-dom', + e:'Wenn TX Bias Current niedrig ist aber TX Power normal: Das kann ein Indikator für einen veralteten Kalibrierungs-Datensatz oder frühe Laserdegradation sein. Historischer Trend via DOM überwachen.'}, + {q:'Welches Betriebstemperatur-Maximum teilen EXT und IND?',o:['+70°C','+75°C','+85°C','+95°C'],a:2,lesson:'temperature-classes', + e:'Sowohl EXT (Extended) als auch IND (Industrial) haben +85°C als Maximum. Der Unterschied ist das Minimum: EXT beginnt bei −20°C, IND bei −40°C.'}, + {q:'Warum ist ein Systemmargin von 3 dB beim Link-Budget wichtig?',o:['Gesetzliche Vorschrift','Reserve für Alterung, Spleißreparaturen und Temperatureffekte','Kompensation für PAM4 SNR-Verlust','Für DWDM-Verstärker-Effizienz'],a:1,lesson:'linkbudget', + e:'Der Systemmargin (Typ. 3 dB) schützt vor: Laser-Alterung (TX Power sinkt über Jahre), zukünftige Spleißstellen bei Reparaturen, Temperatureffekte auf Laser-Wellenlänge/Leistung, und Stecker-Verschmutzung.'}, + {q:'Was ist der Unterschied zwischen 100GBASE-CWDM4 und 100GBASE-LR4?',o:['Speed ist verschieden (40G vs 100G)','CWDM4 nutzt 4 CWDM-Wellenlängen (2km), LR4 nutzt LWDM (10km)','LR4 ist für MMF, CWDM4 für SMF','Formfaktor ist verschieden'],a:1,lesson:'wdm-101', + e:'Beide sind 100G auf SMF mit 4 Wellenlängen. CWDM4: 4 CWDM-Wellenlängen (1271/1291/1311/1331nm), Reichweite 2km. LR4: 4 LWDM-Wellenlängen (1295/1300/1304/1309nm), Reichweite 10km. LC Duplex bei beiden.'}, + {q:'Was ist DP-QPSK in Coherenter Optik?',o:['Dual Port - Quad Phase Shift Keying (2 Stecker)','Dual Polarization - QPSK (4 Bits/Symbol, 2 Polarisations-Ebenen)','Direct Propagation Signal Quality Protocol','Dense Phase - Quadrature Polarization Standard'],a:1,lesson:'coherent-101', + e:'DP-QPSK = Dual Polarization QPSK. Nutzt 2 orthogonale Polarisationsebenen (X+Y) je mit QPSK (2 Bits/Symbol) → 4 Bits/Symbol gesamt. Standard für 100G Coherent Transport.'}, + {q:'Was ist ein typischer Wert für einen LC-Stecker-Verlust?',o:['0.01 dB','0.1 dB','0.5 dB','2.0 dB'],a:2,lesson:'linkbudget', + e:'LC-Stecker: typisch 0.3–0.5 dB, Maximum 0.75 dB. Bei verschmutzten oder schlecht ausgerichteten Steckern können es 1–3 dB werden. Faserverbinder sind nach Glasfaser-Streckendämpfung die größte Verlustquelle.'}, + {q:'Welches Encoding nutzt NRZ?',o:['2 Pegel, 2 Bits/Symbol','2 Pegel, 1 Bit/Symbol','4 Pegel, 2 Bits/Symbol','8 Pegel, 3 Bits/Symbol'],a:1,lesson:'modulation-101', + e:'NRZ = Non-Return-to-Zero: 2 Spannungspegel (0 und 1) → 1 Bit pro Symbol. Simple, robust, kein FEC zwingend nötig. Bei ≤25G pro Lane ausreichend.'}, + {q:'Was bedeutet "MSA" im Transceiver-Kontext?',o:['Multi-Speed Adapter','Manufacturing Standard Agreement','Multi-Source Agreement (Herstellerübergreifende Standardisierung)','Module Signal Analyzer'],a:2,lesson:'msa-dom', + e:'MSA = Multi-Source Agreement: freiwillige Vereinbarung zwischen mehreren Herstellern die mechanische, elektrische und optische Parameter standardisiert — ohne IEEE-Prozess. Ermöglicht Interoperabilität und verhindert Monopole.'}, + {q:'Welche Faser-Kategorie empfiehlt sich für ein neues Rechenzentrum?',o:['OM1 (62.5µm) — bewährt','OM3 Aqua — Standard','OM4 oder OM5 für MMF, OS2 für SMF','OS1 — günstiger als OS2'],a:2,lesson:'fiber-101', + e:'Für neue RZ-Deployments: OM4 oder OM5 für Kurzstrecken-MMF (bis 400m 100G), OS2 für alles mit >500m oder hoher Zukunftssicherheit. OM1/OM2 sind obsolet, OS1 hat höhere Dämpfung als OS2.'}, + {q:'Was macht ein VCSEL-Laser besonders geeignet für MMF (SR) Transceiver?',o:['Sehr schmale Linienbreite, für DWDM geeignet','Günstig, direkt modulierbar, breite Abstrahlcharakteristik passt zum MMF-Kern','Unterstützt Coherente Modulation','Kann 100km ohne Verstärker überbrücken'],a:1,lesson:'fiber-101', + e:'VCSEL (Vertical-Cavity Surface-Emitting Laser): günstig in der Herstellung, direkt mit Datenstrom modulierbar (kein externes Modulator nötig), breites Strahlprofil passt gut zum 50µm MMF-Kern. Für SMF zu viel Modendispersion.'}, + {q:'Was bedeutet RS(544,514) FEC?',o:['Reed-Solomon Code: 544 Gesamtbits, 514 Datenbits (30 Paritätsbits)','FEC für 544G-Transceiver','Root-Sequence FEC für PAM4 Kalibrierung','Reed-Solomon für 514 Kanäle'],a:0,lesson:'modulation-101', + e:'RS(544,514) = Reed-Solomon Code mit 544 Symbolen gesamt, davon 514 Datensymbole und 30 Paritätssymbole. Auch als KP4-FEC bekannt. Korrigiert Rohfehlerraten bis 2.4×10⁻⁴ und liefert <10⁻¹⁵ nach Korrektur.'}, + {q:'Welche Linux-Kommandozeile liest DOM-Daten eines Transceivers aus?',o:['ifconfig eth0 transceiver','ethtool -m eth0','netstat -i eth0 dom','ip link show eth0 optics'],a:1,lesson:'troubleshooting', + e:'ethtool -m eth0 (--module-info) liest die EEPROM-DOM-Daten des Transceivers in eth0 aus. Für CMIS-Module (400G): ethtool --json -m eth0. Auf Cisco: show interfaces transceiver detail.'}, +]; + +// ── LEARNING PATHS ────────────────────────────────────────────────────────── +var PATHS = { + beginner: ['ff-101','fiber-101','standards-ieee','temperature-classes','selection-guide'], + engineer: ['ff-101','fiber-101','standards-ieee','wdm-101','modulation-101','linkbudget','msa-dom','compatibility','troubleshooting'], + buyer: ['ff-101','fiber-101','standards-ieee','compatibility','temperature-classes','selection-guide'], + expert: ['ff-101','fiber-101','standards-ieee','wdm-101','modulation-101','linkbudget','coherent-101','msa-dom','compatibility','temperature-classes','selection-guide','400g-800g','troubleshooting'], + all: LESSONS.map(function(l){return l.id;}) +}; + +// ── PROGRESS TRACKING ─────────────────────────────────────────────────────── +function getProgress() { + try { return JSON.parse(localStorage.getItem('tip_training_progress') || '{}'); } catch(e) { return {}; } +} +function saveProgress(p) { try { localStorage.setItem('tip_training_progress',JSON.stringify(p)); } catch(e) {} } + +function resetTrainingProgress() { + if (!confirm('Gesamten Trainingsfortschritt zurücksetzen?')) return; + try { localStorage.removeItem('tip_training_progress'); } catch(e) {} + renderLessonList(); + updateProgressBar(); +} + +function updateProgressBar() { + var p = getProgress(); + var completed = Object.keys(p).filter(function(k){ return p[k] && p[k].done; }).length; + var total = LESSONS.length; + var pct = Math.round(completed / total * 100); + var fill = el('tr-progress-fill'); + var label = el('tr-progress-label'); + if (fill) fill.style.width = pct + '%'; + if (label) label.textContent = completed + ' / ' + total + ' abgeschlossen'; +} + +function markLessonComplete() { + var lesson = LESSONS[window._currentLessonIdx]; + if (!lesson) return; + var p = getProgress(); + p[lesson.id] = { done: true, date: new Date().toISOString().slice(0,10) }; + saveProgress(p); + var btn = el('tr-complete-btn'); + if (btn) { btn.textContent = '✓ Abgeschlossen'; btn.style.background = '#16a34a'; } + updateProgressBar(); +} + +// ── LESSON RENDERING ──────────────────────────────────────────────────────── +function initTraining() { + window._trainingLoaded = true; + window._currentPath = 'all'; + renderLessonList(); + updateProgressBar(); +} + +function selectPath(pathId) { + window._currentPath = pathId; + ['beginner','engineer','buyer','expert'].forEach(function(p) { + var card = el('tr-path-' + p); + if (!card) return; + var active = p === pathId; + card.style.opacity = active ? '1' : '0.5'; + card.style.transform = active ? 'scale(1.02)' : 'scale(1)'; + }); + renderLessonList(); +} + +function renderLessonList() { + var container = el('tr-lesson-list'); + if (!container) return; + var p = getProgress(); + var pathIds = PATHS[window._currentPath] || LESSONS.map(function(l){return l.id;}); + var filtered = LESSONS.filter(function(l){ return pathIds.indexOf(l.id) !== -1; }); + + var levelColors = { beginner:'#22c55e', intermediate:'#f59e0b', advanced:'#ef4444' }; + var levelLabels = { beginner:'Einsteiger', intermediate:'Fortgeschritten', advanced:'Expert' }; + + var html = filtered.map(function(lesson, idx) { + var done = p[lesson.id] && p[lesson.id].done; + var color = levelColors[lesson.level] || '#6366f1'; + var globalIdx = LESSONS.indexOf(lesson); + return '
' + + '
' + (done ? '✅' : lesson.icon) + '
' + + '
' + + '
' + + '' + esc(lesson.title) + '' + + '' + (levelLabels[lesson.level]||lesson.level) + '' + + '
' + + '
' + + esc(lesson.category) + ' ¡ ' + esc(lesson.duration) + + (lesson.tags ? ' ¡ ' + lesson.tags.slice(0,3).map(function(t){ return '' + esc(t) + ''; }).join(', ') : '') + + '
' + + '
' + + (done ? '✓ Fertig' : '→ Start') + + '
'; + }).join(''); + buildDOM(container, html || '
Keine Lektionen fĂźr diesen Pfad.
'); +} + +function openLesson(idx) { + window._currentLessonIdx = idx; + var lesson = LESSONS[idx]; + if (!lesson) return; + var home = el('tr-home'); + var view = el('tr-lesson-view'); + var content = el('tr-lesson-content'); + if (home) home.style.display = 'none'; + if (view) view.style.display = ''; + + var p = getProgress(); + var done = p[lesson.id] && p[lesson.id].done; + var btn = el('tr-complete-btn'); + if (btn) { btn.textContent = done ? '✓ Bereits abgeschlossen' : '✓ Als abgeschlossen markieren'; btn.style.background = done ? '#16a34a' : '#22c55e'; } + + var prevBtn = el('tr-prev-btn'); + var nextBtn = el('tr-next-btn'); + if (prevBtn) prevBtn.style.visibility = idx > 0 ? '' : 'hidden'; + if (nextBtn) nextBtn.style.visibility = idx < LESSONS.length - 1 ? '' : 'hidden'; + + var levelColors = { beginner:'#22c55e', intermediate:'#f59e0b', advanced:'#ef4444' }; + var levelLabels = { beginner:'Einsteiger', intermediate:'Fortgeschritten', advanced:'Expert' }; + var color = levelColors[lesson.level] || '#6366f1'; + + var html = '
' + + '
' + + '' + lesson.icon + '' + + '
' + + '
' + esc(lesson.title) + '
' + + '
' + + '' + (levelLabels[lesson.level]||lesson.level) + '' + + '' + esc(lesson.category) + ' ¡ ' + esc(lesson.duration) + '' + + '
'; + + (lesson.content || []).forEach(function(section) { + html += '
'; + html += '

' + esc(section.h) + '

'; + if (section.p) { + html += '
' + section.p + '
'; + } + if (section.table) { + html += '
' + + '' + section.table.head.map(function(h){ return ''; }).join('') + '' + + '' + section.table.rows.map(function(row,ri){ return '' + row.map(function(cell){ return ''; }).join('') + ''; }).join('') + '' + + '
' + esc(h) + '
' + cell + '
'; + } + html += '
'; + }); + + if (content) buildDOM(content, html); + + // Wire link-budget calculator if it's on this lesson + if (lesson.id === 'linkbudget') { + setTimeout(function() { calcLinkBudget(); }, 100); + } +} + +function calcLinkBudget() { + var tx = parseFloat(el('lb-tx') ? el('lb-tx').value : 0); + var rx = parseFloat(el('lb-rx') ? el('lb-rx').value : -14); + var km = parseFloat(el('lb-km') ? el('lb-km').value : 10); + var att = parseFloat(el('lb-fiber') ? el('lb-fiber').value : 0.35); + var con = parseInt (el('lb-connectors') ? el('lb-connectors').value : 4); + var spl = parseInt (el('lb-splices') ? el('lb-splices').value : 1); + var res = el('lb-result'); + if (!res) return; + var budget = tx - rx; + var fiberLoss = km * att; + var connLoss = con * 0.5; + var splLoss = spl * 0.1; + var margin = 3.0; + var totalLoss = fiberLoss + connLoss + splLoss + margin; + var reserve = budget - totalLoss; + var ok = reserve >= 0; + res.style.background = ok ? 'rgba(34,197,94,0.1)' : 'rgba(239,68,68,0.1)'; + res.style.border = '1px solid ' + (ok ? '#22c55e44' : '#ef444444'); + res.innerHTML = (ok ? '✓ Strecke realisierbar' : '✗ Budget zu knapp') + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Link-Budget' + budget.toFixed(1) + ' dB
Faser ' + km + 'km × ' + att + ' dB/km−' + fiberLoss.toFixed(2) + ' dB
' + con + ' Stecker × 0.5 dB−' + connLoss.toFixed(2) + ' dB
' + spl + ' Splices × 0.1 dB−' + splLoss.toFixed(2) + ' dB
Systemmargin−' + margin.toFixed(1) + ' dB
Reserve' + (reserve >= 0 ? '+' : '') + reserve.toFixed(2) + ' dB
'; +} + +function closeLessonView() { + var home = el('tr-home'); + var view = el('tr-lesson-view'); + if (home) home.style.display = ''; + if (view) view.style.display = 'none'; + renderLessonList(); +} + +function navLesson(dir) { + var newIdx = window._currentLessonIdx + dir; + if (newIdx >= 0 && newIdx < LESSONS.length) openLesson(newIdx); +} + +// ── QUIZ ENGINE ───────────────────────────────────────────────────────────── +function startQuiz() { + var home = el('tr-home'); + var quiz = el('tr-quiz-view'); + if (home) home.style.display = 'none'; + if (quiz) quiz.style.display = ''; + var shuffled = QUIZ_QUESTIONS.slice().sort(function(){ return Math.random() - 0.5; }); + window._quizState = { questions: shuffled, current: 0, answers: [], score: 0 }; + renderQuizQuestion(); +} + +function closeQuizView() { + var home = el('tr-home'); + var quiz = el('tr-quiz-view'); + if (home) home.style.display = ''; + if (quiz) quiz.style.display = 'none'; + window._quizState = null; +} + +function renderQuizQuestion() { + var qs = window._quizState; + var content = el('tr-quiz-content'); + if (!qs || !content) return; + + if (qs.current >= qs.questions.length) { + renderQuizResult(); + return; + } + + var q = qs.questions[qs.current]; + var total = qs.questions.length; + var pct = Math.round(qs.current / total * 100); + + var html = '
' + + '
' + + 'Frage ' + (qs.current+1) + ' von ' + total + '' + + '' + qs.score + ' richtig' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + esc(q.q) + '
' + + '
' + + q.o.map(function(opt, i) { + return ''; + }).join('') + + '
'; + buildDOM(content, html); +} + +function answerQuiz(chosen) { + var qs = window._quizState; + var content = el('tr-quiz-content'); + if (!qs || !content) return; + + var q = qs.questions[qs.current]; + var correct = chosen === q.a; + if (correct) qs.score++; + qs.answers.push({ q: q, chosen: chosen, correct: correct }); + + // Show feedback + var buttons = content.querySelectorAll('button'); + buttons.forEach(function(btn, i) { + btn.onclick = null; + btn.style.cursor = 'default'; + btn.onmouseover = null; btn.onmouseout = null; + if (i === q.a) { btn.style.background = 'rgba(34,197,94,0.15)'; btn.style.borderColor = '#22c55e'; btn.style.color = '#22c55e'; } + else if (i === chosen && !correct) { btn.style.background = 'rgba(239,68,68,0.12)'; btn.style.borderColor = '#ef4444'; btn.style.color = '#ef4444'; } + }); + + // Explanation + var expDiv = document.createElement('div'); + expDiv.style.cssText = 'margin-top:1rem;padding:0.75rem 1rem;border-radius:8px;font-size:0.82rem;line-height:1.6;background:' + (correct?'rgba(34,197,94,0.1)':'rgba(239,68,68,0.08)') + ';border:1px solid ' + (correct?'#22c55e44':'#ef444444') + ';color:var(--text-muted)'; + expDiv.innerHTML = '' + (correct?'✓ Richtig!':'✗ Falsch.') + ' ' + esc(q.e) + + (q.lesson ? ' → Lektion ansehen' : ''); + var card = content.querySelector('.card'); + if (card) card.appendChild(expDiv); + + var nextBtn = document.createElement('button'); + nextBtn.textContent = qs.current + 1 >= qs.questions.length ? 'Ergebnis anzeigen →' : 'Nächste Frage →'; + nextBtn.style.cssText = 'margin-top:0.75rem;background:var(--accent);color:#fff;border:none;padding:8px 20px;border-radius:8px;cursor:pointer;font-size:0.85rem;font-weight:600;width:100%'; + nextBtn.onclick = function() { + qs.current++; + renderQuizQuestion(); + }; + if (card) card.appendChild(nextBtn); +} + +function renderQuizResult() { + var qs = window._quizState; + var content = el('tr-quiz-content'); + if (!qs || !content) return; + + var total = qs.questions.length; + var score = qs.score; + var pct = Math.round(score / total * 100); + var grade = pct >= 90 ? { label: '🏆 Exzellent', color: '#22c55e' } + : pct >= 70 ? { label: '✅ Gut', color: '#3b82f6' } + : pct >= 50 ? { label: '📚 Ausreichend', color: '#f59e0b' } + : { label: '📖 Wiederholen', color: '#ef4444' }; + + var wrongOnes = qs.answers.filter(function(a){ return !a.correct; }); + + var html = '
' + + '
' + grade.label + '
' + + '
' + score + ' / ' + total + '
' + + '
' + pct + '%
' + + '
' + + '
' + + '
' + + '' + + '' + + '
'; + + if (wrongOnes.length) { + html += '
Falsch beantwortet (' + wrongOnes.length + '):
' + + wrongOnes.map(function(a) { + return '
' + + '
' + esc(a.q.q) + '
' + + '
Deine Antwort: ' + esc(a.q.o[a.chosen]) + ' ¡ Richtig: ' + esc(a.q.o[a.q.a]) + '
' + + '
' + esc(a.q.e) + '
' + + '
'; + }).join('') + + '
'; + } + + buildDOM(content, html); + + // Save score to progress + var p = getProgress(); + p['__quiz__'] = { score: score, total: total, pct: pct, date: new Date().toISOString().slice(0,10) }; + saveProgress(p); +} +