Die Herausforderung
Eine nordamerikanische Hochschule setzte Panopto für Vorlesungsaufzeichnungen und Canvas LMS für die Kursbereitstellung ein, doch nichts verband beides im großen Maßstab. In jedem Semester verbrachte ein Instructional-Design-Team rund 600 Stunden mit demselben manuellen Ablauf: bestätigen, dass eine Aufzeichnung fertig ist, den richtigen Panopto-Ordner finden, die Aufzeichnung korrekt benennen, Untertitel und Zugriff festlegen, einen Link im richtigen Canvas-Modul posten und dann den Vorlesungen nachjagen, die gar nicht aufgezeichnet wurden.
Die Fehlerbilder waren frustrierend und vorhersehbar. Aufzeichnungen wurden im falschen Kurs veröffentlicht. Untertitel kamen um Tage verspätet. Räume mit defekten Aufnahmegeräten fielen spät im Semester auf, erst wenn sich Studierende beschwerten. Und es gab keinen Audit-Trail – wenn ein Studierender fragte „Warum fehlte die Vorlesung vom letzten Donnerstag?“, konnte niemand eine sichere Antwort geben. Die Hochschule wollte die 600 Stunden des Teams zurück, die Fehlerbilder in dem Moment erkennen, in dem sie auftreten, und ein System, das auf die doppelte Raumzahl skalieren kann, ohne mehr Personal zu brauchen.
Unsere Lösung
Wir haben eine durchgängige Orchestrierungsschicht in Python und FastAPI gebaut, die auf Canvas-Kursereignisse und Panopto-Aufzeichnungsereignisse lauscht, sie über ein lokales Katalogmodell verknüpft, das Kurse, Abschnitte, Räume und Dozenten kennt, und den gesamten Veröffentlichungs-Workflow automatisch steuert.
Der lokale Katalog ist die Kernidee. Statt Canvas und Panopto immer wieder dieselben Fragen zu stellen, pflegen wir einen kleinen, maßgeblichen PostgreSQL-Katalog mit Kursen, Abschnitten, Raum-zu-Abschnitt-Zuordnungen, Dozenten-zu-Abschnitt-Zuständigkeiten und den Veröffentlichungsregeln, die jede Abteilung gewählt hat. Canvas Live Events und Panopto-Webhooks aktualisieren den Katalog nahezu in Echtzeit; ein FastAPI-Orchestrierungsdienst steuert dann jede nachgelagerte Aktion: die Aufzeichnung im richtigen Panopto-Ordner ablegen, Untertitel anfordern, den Zugriff anhand der Teilnehmerliste des Abschnitts setzen, die Vorlesung im richtigen Canvas-Modul posten und für jeden Schritt ein strukturiertes Audit-Ereignis schreiben.
Intelligentes Filtern erfasst die Fehlerbilder, die früher unsichtbar waren. Wenn eine geplante Vorlesung 15 Minuten nach Ende des Unterrichts keine Aufzeichnung hat, alarmiert das System das Instructional-Support-Team und eröffnet einen nachverfolgten Vorfall. Fehlen Untertitel nach Ablauf des SLA-Fensters weiterhin, eskaliert es. Jede einzelne Veröffentlichungsaktion – erfolgreich oder nicht – wird protokolliert: wer, was, wann, warum und welche vorgelagerten Ereignisse sie ausgelöst haben, sodass die Frage „Warum fehlte die Vorlesung vom letzten Donnerstag?“ jetzt in 30 Sekunden beantwortet ist.
- Lokaler Katalog mit Kursen, Abschnitten, Räumen, Dozenten und Veröffentlichungsregeln pro Abteilung
- Canvas Live Events + Panopto-Webhook-Ingestion über einen Empfänger nach dem Inbox-Muster
- Idempotente Zustandsmaschine pro Aufzeichnung: erkannt → abgelegt → untertitelt → gepostet → auditiert
- Intelligente Erkennung fehlender Aufzeichnungen mit 15-Minuten-SLA und Erstellung nachverfolgter Vorfälle
- Überwachung des Untertitel-SLA mit automatischer Eskalation bei Fristüberschreitung
- Zugriffskontrolle anhand der Teilnehmerliste pro Abschnitt, angewendet auf Panopto-Ordner und Canvas-Beiträge
- Replay-Tool, um den Veröffentlichungs-Workflow für jede historische Aufzeichnung durchgängig erneut auszuführen
- Strukturiertes Audit-Log, das „Warum fehlt diese Vorlesung?“ in 30 Sekunden beantwortet
- Admin-Oberfläche, mit der das Instructional-Design-Team Veröffentlichungsregeln ohne Entwickler bearbeiten kann