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âŚ
+
+
+
+
+
+
+
Fortschritt
+
+
0 / 12 abgeschlossen
+
+
+
+
+
+
+
+
+
đ˘
+
Einsteiger
+
4 Lektionen ¡ ~20 Min ¡ Grundlagen Transceiver
+
+
+
đľ
+
Netzwerk-Engineer
+
8 Lektionen ¡ ~50 Min ¡ Link Budget, WDM, PAM4
+
+
+
đĄ
+
Einkäufer
+
5 Lektionen ¡ ~25 Min ¡ Kompatibilität, Preisfaktoren
+
+
+
đ´
+
Expert
+
Alle 12 Lektionen ¡ ~75 Min ¡ Coherent, 800G+
+
+
+
+
+
+
+
+
+
+
đ Wissens-Quiz
+
40 Fragen ¡ alle Themen gemischt ¡ Ergebnis mit Erklärungen
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -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:''},
+ ]},
+
+{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 '| ' + esc(h) + ' | '; }).join('') + '
'
+ + '' + section.table.rows.map(function(row,ri){ return '' + row.map(function(cell){ return '| ' + cell + ' | '; }).join('') + '
'; }).join('') + ''
+ + '
';
+ }
+ 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);
+}
+