Episoden und Video-Tracking
Teile einen Kurs in mehrere Video-Episoden, wenn ein langes Video nicht reicht. Der Teilnehmer sieht die Episoden als Checkliste; jede Episode wird einzeln getrackt und die naechste spielt automatisch ab, sobald die aktuelle fertig ist.
Voraussetzung: Der Kurs existiert (siehe Kurs anlegen) und ist in der Detailansicht unter Kurse → Kurs auswaehlen geoeffnet.
Wann Episoden sinnvoll sind
- Der Kurs hat natuerliche Kapitel (z.B. vier Vortraege zu je 15 Minuten).
- Der Kurs hat optionale Intro-/Outro-Segmente, die du separat zeigen willst.
- Du willst Fortschritt pro Kapitel statt eines grossen Balkens anzeigen.
Ist der Kurs ein einzelnes Video, lass die Episoden-Liste leer und nutze Video-URL auf dem Allgemein-Tab.
1. Episoden-Sub-Tab oeffnen
Wechsle in der Kurs-Detailansicht auf den Sub-Tab Episoden. Ohne Episoden zeigt die Liste einen leeren Zustand.

2. Episode anlegen
Klick Neue Episode. Ein Modal mit drei Feldern oeffnet sich.

| Feld | Zweck |
|---|---|
| Titel | Wird als Kapitel-Ueberschrift im Player gezeigt. |
| Video-URL (m3u8) | HLS-Stream-URL der Episode. |
| Dauer (Sekunden) | Episodenlaenge in Sekunden. Grundlage fuer Fortschritt und die 95-Prozent-Completion-Schwelle. |
Klick Speichern. Die Episode erscheint ans Ende der Liste.
3. Episoden sortieren
Nutze die Pfeiltasten in der ersten Spalte, um eine Episode zu verschieben. Die Position wird sofort uebernommen — kein zusaetzliches Speichern noetig.

4. Bearbeiten oder Loeschen
Das Stift-Icon oeffnet das Modal erneut, das rote Muell-Icon loescht. Beim Loeschen verschwindet die Episode dauerhaft; Tracking-Eintraege im Audit-Log bleiben erhalten, zaehlen aber nicht mehr in den Fortschritt.
Wie das Tracking funktioniert
Der Frontend-Player sendet alle 30 Sekunden ein Heartbeat (alle 60 Sekunden gebatcht). Der Server speichert:
watched_seconds— Gesamtzeit, die der Teilnehmer tatsaechlich geschaut hat.max_watched_position— weiteste Position. Schuetzt vor Vorspulen.- Eine Zeile im append-only Tracking-Log.
Ein Fortschritts-Update wird nur akzeptiert, wenn mindestens 15 Sekunden seit dem letzten vergangen sind. Der neue watched-seconds-Wert darf maximal 5 Prozent schneller wachsen als die reale Zeitspanne — das blockiert Client-seitige Manipulation.
Eine Episode gilt als abgeschlossen, wenn watched_seconds mindestens 95 Prozent der konfigurierten Dauer erreicht (pro Episode oder des Hauptvideos, wenn der Kurs keine Episoden hat). Der Kurs gilt als abgeschlossen, wenn alle Episoden abgeschlossen sind.
Wenn der Teilnehmer den Tab wechselt
Der Player pausiert das Tracking, waehrend der Tab verdeckt ist. Watched-seconds gehen nicht verloren, aber der Server zaehlt keinen Fortschritt hoch.
Fortschritts-Anzeige im Backend
Du kannst den Fortschritt eines Teilnehmers nicht editieren. Fuer einen Kurs-Ueberblick nutze den Statistiken-Tab — dort siehst du Summen fuer Verkaeufe, durchschnittliches Pruefungsergebnis und ausgestellte Zertifikate.
Haeufige Fehler
Die naechste Episode spielt nicht automatisch ab. Pruef das Feld Dauer (Sekunden). Bei 0 kann der Player die 95-Prozent-Schwelle nicht berechnen und triggert die naechste Episode nicht.
Ein Teilnehmer meldet, sein Fortschritt sei zurueckgesetzt. Der Fortschritt ist serverseitig append-only. Zeigt der Player Position 0, hat der Browser den lokalen Cache verloren — der Server kennt max_watched_position weiter. Bitte den Teilnehmer, die Detailseite neu zu laden.
Zertifikat wird nicht ausgestellt. Der Zertifikat-Endpoint verlangt watched_seconds >= 95 Prozent der konfigurierten Inhaltsdauer fuer jede Episode (oder des Hauptvideos, wenn keine Episoden existieren). Hat der Teilnehmer Teile vorgespult, erreicht watched-seconds die Schwelle nie.
Siehe auch
- Kurs anlegen — Anleitung
- Pruefungsfragen — Anleitung
- Zertifikate — Anleitung