Étude de cas · Établissement d’enseignement supérieur nord-américain confidentiel

Captation automatisée de cours de bout en bout : Canvas + Panopto + orchestration Python

Comment UnlockLive a construit une plateforme entièrement automatisée de capture de cours intégrant Canvas LMS et Panopto avec Python et FastAPI — publiant automatiquement environ 3 000 cours par session, réduisant de 80 % la charge administrative et dotant chaque enregistrement d’une piste d’audit vérifiable.

  • SecteurÉducation
  • Année2024
  • PaysÉtats-Unis
  • Durée6 mois
End-to-End Automated Lecture Capture: Canvas + Panopto + Python Orchestration hero screenshot

Résultats en un coup d'œil

  • 80%Réduction des frais administratifs de soutien pédagogique
  • ~3,000Cours par session publiés automatiquement, de bout en bout
  • 100%Enregistrements journalisés pour audit, de la captation à la publication sur Canvas
  • 4xPublication après les cours plus rapide — en minutes, pas le lendemain

Le défi

Un établissement d’enseignement supérieur nord-américain disposait de Panopto pour la capture de cours et de Canvas LMS pour la diffusion des cours, mais rien ne les reliait à grande échelle. Chaque session, une équipe de conception pédagogique passait environ 600 heures sur la même boucle manuelle : confirmer qu’un enregistrement est terminé, trouver le bon dossier Panopto, nommer correctement l’enregistrement, définir sous-titres et accès, publier un lien dans le bon module Canvas, puis relancer les cours qui n’avaient pas été enregistrés du tout.

Les modes de défaillance étaient frustrants et prévisibles. Enregistrements publiés dans la mauvaise section. Sous-titres retardés de plusieurs jours. Salles de fin de session aux dispositifs de capture défaillants que personne ne remarquait avant les plaintes des étudiants. Et aucune piste d’audit — quand un étudiant demandait « pourquoi le cours de jeudi dernier manquait-il ? », personne ne pouvait répondre avec certitude. L’établissement voulait récupérer les 600 heures de l’équipe, détecter les défaillances dès qu’elles se produisent et disposer d’un système capable de doubler le nombre de salles actuel sans augmenter les effectifs.

Notre solution

Nous avons construit une couche d’orchestration de bout en bout en Python et FastAPI qui écoute les événements de cours Canvas et les événements d’enregistrement Panopto, les relie via un modèle de catalogue local qui connaît les cours, sections, salles et enseignants, et pilote automatiquement tout le workflow de publication.

Le catalogue local est l’idée clé. Au lieu de poser sans cesse les mêmes questions à Canvas et à Panopto, nous maintenons un petit catalogue PostgreSQL faisant autorité : cours, sections, correspondances salle-section, responsabilité enseignant-section et règles de publication choisies par chaque département. Les Canvas Live Events et les webhooks Panopto mettent le catalogue à jour quasiment en temps réel ; un service d’orchestration FastAPI pilote ensuite chaque action en aval : classer l’enregistrement dans le bon dossier Panopto, demander les sous-titres, définir l’accès selon la liste de la section, publier le cours dans le bon module Canvas et écrire un événement d’audit structuré pour chaque étape.

Un filtrage intelligent détecte les défaillances qui étaient auparavant invisibles. Si un cours planifié n’a aucun enregistrement 15 minutes après la fin du cours, le système alerte l’équipe de soutien pédagogique et ouvre un incident suivi. Si les sous-titres manquent encore après le délai du SLA, il escalade. Chaque action de publication — réussie ou non — est consignée avec qui, quoi, quand, pourquoi et les événements amont qui l’ont déclenchée, de sorte que la question « pourquoi le cours de jeudi dernier manquait-il ? » a maintenant une réponse en 30 secondes.

  • Catalogue local des cours, sections, salles, enseignants et règles de publication par département
  • Ingestion des Canvas Live Events + webhooks Panopto via un récepteur selon le modèle inbox
  • Machine à états idempotente par enregistrement : détecté → classé → sous-titré → publié → audité
  • Détection intelligente des enregistrements manquants avec SLA de 15 minutes et création d’incident suivi
  • Surveillance du SLA des sous-titres avec escalade automatique en cas de dépassement
  • Contrôle d’accès par section selon la liste des inscrits, appliqué aux dossiers Panopto et aux publications Canvas
  • Outil de rejeu pour relancer de bout en bout le workflow de publication de tout enregistrement historique
  • Journal d’audit structuré répondant à « pourquoi ce cours manque-t-il ? » en 30 secondes
  • Interface d’administration permettant à l’équipe de conception pédagogique de modifier les règles de publication sans ingénieur

Comment nous l'avons construit

  1. 01

    Cartographier honnêtement le workflow manuel

    Nous avons suivi l'équipe de conception pédagogique pendant deux semaines pour documenter chaque clic du processus manuel existant, y compris ce qu'ils n'avaient pas pensé à mentionner tant ces gestes étaient devenus habituels. L'audit a produit un flux de 47 étapes par enregistrement, dont 41 étaient basées sur des règles et pouvaient être automatisées en toute sécurité, et 6 nécessitaient un jugement humain (et resteraient manuelles).

  2. 02

    Conception du catalogue local et du modèle d’événements

    Nous avons conçu un catalogue PostgreSQL qui contient les cours, les sections, les associations salle-section, la responsabilité des instructeurs et les règles de publication par département. Le schéma a été volontairement réduit et fortement normalisé pour que la logique de publication reste lisible. Les Canvas Live Events et les webhooks Panopto sont devenus les seules entrées qui modifient l’état du catalogue.

  3. 03

    Création du service d’orchestration FastAPI

    Le service d’orchestration est une application Python/FastAPI avec des workers Celery et une machine à états idempotente par enregistrement : détecté, classé, sous-titrage demandé, sous-titré, accès appliqué, publié dans Canvas, audit terminé. Chaque transition est une étape distincte et réessayable, avec des journaux structurés et une gestion des files de lettres mortes. L’ensemble du pipeline peut rejouer de bout en bout n’importe quel enregistrement passé à la demande.

  4. 04

    Pilote, mise à l’échelle et amélioration continue

    Nous avons mené un pilote avec un département universitaire pendant un trimestre entier, en comparant chaque semaine les résultats automatisés à la référence manuelle. Après zéro divergence sur 12 semaines, nous avons déployé la plateforme département par département au cours du trimestre suivant. L'équipe de conception pédagogique a conservé la maîtrise des règles de publication : elle peut modifier le catalogue et les définitions de règles via une petite interface d'administration, sans ingénieur dans la boucle.

Stack technique

  • Python
  • FastAPI
  • Canvas LMS API
  • Panopto REST API
  • PostgreSQL
  • Celery
  • Redis
  • AWS S3
  • AWS EventBridge
  • Datadog
  • Intégration d’API et de systèmes
  • Python et FastAPI
  • Automatisation des workflows
  • Solutions cloud
“Notre équipe a récupéré 600 heures par trimestre, nos étudiants reçoivent leurs cours le jour même et, lorsqu'un problème survient, nous le savons avant l'arrivée du premier e-mail. Cela a changé ce que nous pouvons offrir aux enseignants de cet établissement.”
Directrice de la conception pédagogique · Établissement d’enseignement supérieur (nom confidentiel)

Questions fréquentes

Comment automatiser de façon fiable le flux de captation de cours Canvas + Panopto ?

N’essayez pas de piloter Canvas et Panopto directement avec des règles : cela devient fragile très vite. Maintenez plutôt un petit catalogue local de cours, de sections, de salles et d’instructeurs, mis à jour par les Canvas Live Events et les webhooks Panopto. Exécutez ensuite une machine à états idempotente par enregistrement, qui pilote chaque action en aval à partir du catalogue. Le catalogue devient la source de vérité unique et le reste du système n’est qu’un orchestrateur léger et rejouable.

Comment détectez-vous les cours qui auraient dû être enregistrés mais ne l'ont pas été ?

Comparez les cours planifiés issus de votre association salle-section aux événements d’enregistrement Panopto reçus, avec un SLA de 15 minutes. Si une séance planifiée n’a aucun enregistrement associé, alertez l’équipe de soutien pédagogique et ouvrez un incident suivi avec la salle, la section, l’instructeur et les événements amont qui ont (ou n’ont pas) été vus. C’est l’automatisation à plus forte valeur de la plateforme.

L’API Panopto peut-elle gérer une orchestration à l’échelle de la production ?

Oui : l’API REST de Panopto est bien documentée et stable pour les opérations qui comptent (création de dossiers, métadonnées de téléversement des enregistrements, contrôle d’accès, flux de sous-titrage). La question de la fiabilité se pose de votre côté : appels idempotents, nouvelles tentatives exponentielles et machine à états par enregistrement pour pouvoir rejouer toute étape en échec sans coordination. Nous traitons Panopto exactement comme n’importe quelle API tierce dans une intégration en production.

Comment permettre aux équipes de conception pédagogique de garder la maîtrise des règles de publication sans impliquer l'ingénierie ?

Sortez les règles du code et placez-les dans le catalogue. Nous donnons à l'équipe une petite interface d'administration au-dessus des tables de règles PostgreSQL : ce qui est publié dans quel module Canvas, la politique d'accès souhaitée par chaque département, le SLA des sous-titres. L'ingénierie possède l'orchestrateur ; l'équipe possède les règles. Les changements de règles ne nécessitent jamais de déploiement.

Combien coûte et combien de temps prend généralement un projet d'automatisation Canvas + Panopto de bout en bout ?

16 à 26 semaines pour un déploiement de niveau production dans une institution de taille moyenne à grande. Les 4 à 6 premières semaines portent sur la découverte des workflows et la conception du catalogue : bien faire cette étape rend le reste bien moins coûteux. Une fois un département sur la plateforme, l'ajout des suivants prend des jours, pas des semaines.

Envie d'un résultat comme celui-ci ?

Parlez à l'équipe qui a construit Captation automatisée de cours de bout en bout : Canvas + Panopto + orchestration Python. Nous définirons le périmètre de votre projet, vous remettrons une proposition à prix fixe et vous présenterons l'exemple le plus proche de notre portfolio.

Réserver un appel stratégique