1 Le principe
Le board est un écran unique où l'administrateur d'une école partenaire voit où en est sa promotion : combien d'étudiants, qui avance, qui n'a jamais validé son adresse, quels contenus accrochent.
2 Ce que l'écran montre
L'écran répond à une question dans l'ordre où elle se pose : où la promotion se perd-elle, puis que faire, puis qui et quoi.
Le parcours, plutôt que des chiffres sans lien
Quatre marches — comptes rattachés, adresse validée, ont commencé, ont terminé un cours — et la perte affichée entre chacune. Chaque marche est un sous-ensemble de la précédente : c'est ce qui autorise à parler de perte. Les invitations n'y figurent donc pas — un invité n'est pas encore un compte, et la marche remonterait.
Une perte nulle ne s'affiche pas : la signaler partout transformerait un parcours sain en suite d'alertes, et l'œil cesserait de distinguer celle qui compte.
« À faire » : chaque carte porte un verbe
Adresses à valider, étudiants à relancer, cours auxquels il manque un accès, invitations sans réponse. Un constat sans action est une inquiétude ; avec le bouton, c'est une tâche. Le bloc entier disparaît quand il n'y a rien à faire — un « tout va bien » permanent apprend à ne plus regarder la zone.
« À relancer » croise deux signaux au lieu d'en trier un seul : absent depuis 30 à 60 jours et moins de la moitié du parcours. Absent depuis 40 jours mais à 90 %, il a fini ce qu'il avait à faire ; à 10 % mais connecté hier, il travaille. Au-delà de 60 jours, ce n'est plus un risque mais un départ déjà consommé : le mélanger noierait la liste sur laquelle l'école peut encore agir.
Une répartition, parce qu'une moyenne ne suffit pas
30 % décrit aussi bien une promotion groupée autour de 30 qu'une promotion coupée en deux — et les deux n'appellent pas la même réaction. L'histogramme montre la forme ; la moyenne reste à côté, avec sa fiabilité, qui ne s'affiche que si elle est en défaut.
Trois onglets : Étudiants, Cours, Qui a ouvert quoi
Cours : une barre par cours, découpée sur l'effectif de l'école — terminé, commencé, jamais ouvert. « Commencé par 2 » ne disait pas 2 sur combien, et c'était le défaut : 2 sur 4 est une alerte, 2 sur 200 en est une autre.
Qui a ouvert quoi : la seule vue qui montre le croisement. Une ligne entièrement vide est un étudiant qui n'a pas démarré ; une colonne entièrement vide, un cours que la promotion n'a pas lancé. Ni la liste des étudiants ni celle des cours ne fait apparaître cela.
3 Comment on entre
Pas de mot de passe. L'administrateur saisit son adresse, reçoit un code à six chiffres, et le saisit. C'est tout.
L'adresse doit figurer dans la liste
Une adresse qui n'y figure pas ne reçoit aucun code. Mais l'écran affiche exactement le même message dans les deux cas, que l'adresse ait accès ou non. Répondre « cette adresse n'a pas accès » reviendrait à confirmer, à qui essaierait des adresses au hasard, lesquelles sont celles des administrateurs.
Le code vaut 3 heures et ne sert qu'une fois
Cinq tentatives au maximum : à la cinquième erreur, le code est détruit et il faut en redemander un.
C'est ce plafond de cinq essais qui protège, pas la durée de vie du code. Un code à six chiffres, ce sont 900 000 combinaisons possibles ; en cinq essais, la probabilité de tomber sur la bonne est de 5 sur 900 000 — soit une sur 180 000. Allonger la durée n'y changerait rien : celui qui essaie n'a que cinq coups à jouer, que le code reste valable dix minutes ou trois heures.
La session dure 12 heures
Passé ce délai, il faut redemander un code. Ce n'est pas figé : si c'est trop court à l'usage, la durée se change en une ligne.
⚠️ Contrepartie à connaître : le mode d'installation, qui déposait le code dans le journal de la base faute de pouvoir l'envoyer, ne s'active plus. Si Brevo refuse un envoi, c'est son motif qui est consigné — jamais le code en clair. Un code qui n'arrive pas se cherche donc dans le journal des incidents (« État du système »), pas dans la base.
admin@ecole.fr chez un fournisseur laxiste ouvrirait le board de cette
école.4 D'où viennent les chiffres
Le board ne calcule rien quand on l'ouvre : il lit un relevé déjà calculé. Et il affiche toujours de quand il date.
Une collecte chaque nuit à 3 h
Elle interroge LearnWorlds école par école et écrit un relevé.
Et un rafraîchissement quand quelqu'un regarde
Si le relevé a plus de 15 minutes, le board sert l'existant immédiatement et relance une collecte en arrière-plan. Des chiffres quasi frais pour qui consulte, zéro requête quand personne ne consulte.
Un verrou de 5 minutes
Cinq administrateurs qui ouvrent le board à la même minute ne lancent pas cinq collectes.
5 Ce que les chiffres veulent dire
Trois règles, et elles sont écrites à un seul endroit dans le code pour qu'un graphique ne puisse pas contredire le chiffre du haut de page.
Un invité et un accès retiré sont listés, mais hors des chiffres
Compter un invité à 0 % ferait baisser la moyenne de l'école à chaque invitation envoyée — cela punirait exactement le geste qu'on veut encourager. Un accès retiré n'est plus de la promotion, mais sa progression est conservée : l'action est réversible.
0 % et « inconnu » ne sont pas la même chose
Un étudiant à 0 % est un fait sur la promotion : il pèse dans la moyenne. Un étudiant dont la progression n'a pas pu être lue est une lacune de mesure : il en sort, et l'encart annonce alors sur quelle part de la promotion la moyenne porte.
« Jamais connecté » n'est pas « actif ce mois »
Un étudiant qui n'a jamais ouvert son compte n'a aucune date de dernière connexion. L'absence de date se laisse facilement confondre avec une date récente, et il se retrouverait alors compté parmi les actifs du mois — le chiffre que l'école regarde en premier serait gonflé par ceux qui ne sont jamais venus. Ce cas est traité à part, et un test empêche l'erreur de revenir.
6 Les pages et les programmes
Les cours sont regroupés comme sur le site : Cours, Études de cas, Fiches secteur, Fiches cabinet, S'entraîner, Compétences, Webinars. Un administrateur d'école ne connaît pas les programmes LearnWorlds ; il connaît les pages que ses étudiants ouvrent.
⚠️ Ces chiffres changent à chaque publication : ils sont recomptés à chaque collecte, personne ne les saisit. Ceux qui figurent ici ne sont qu'un repère de lecture.
Presque tout se met à jour tout seul. Les noms de cours, les cours ajoutés à un programme, les nouveaux cours, les étudiants qui arrivent ou partent : tout est relu à chaque collecte. Rien n'est figé dans le code.
Une seule chose se déclare à la main : quelle page affiche quel programme. Et ce n'est pas un oubli. Cette correspondance n'existe nulle part ailleurs que dans le Site Builder : chaque page compose ses cartes au moment où l'étudiant l'ouvre, si bien qu'aucune lecture automatique de LearnWorlds ne peut la retrouver. Il faut donc la déclarer une fois — et une seule, puisqu'elle ne change que si vous réorganisez le site.
Elle est rangée dans la base plutôt que dans le code, ce qui veut dire qu'elle se modifie sans nous et sans mise à jour du site :
prepa-lw (rubrique D1), puis son onglet Console :
on y colle le texte et on l'exécute, sans rien installer.
L'effet est immédiat et il n'y a rien à redémarrer : la collecte suivante en tient compte.
⚠️ C'est le seul réglage du board qui passe encore par du SQL. Créer une école ou un accès, lui, se fait à l'écran (chapitre 8) — cette table-ci n'a pas d'écran parce qu'elle change une fois par réorganisation du site, pas une fois par client.
Si vous préférez la ligne de commande, l'équivalent est
npx wrangler d1 execute prepa-lw --remote --command "…".-- ranger un nouveau programme sur une page
INSERT INTO pages (programme_id, page, ordre) VALUES ('mon-programme', 'Cours', 1);
-- le déplacer
UPDATE pages SET page = 'Compétences' WHERE programme_id = 'mon-programme';
-- voir l'état actuel
SELECT page, programme_id FROM pages ORDER BY ordre, page;programme_id est le champ id de l'API
d'administration, pas titleId : ce dernier est vide en lecture
(mesuré sur 12 programmes sur 12). S'y tromper met tous les programmes
« sans page ».
🔴 Deux identifiants dont le nom trompe :
etudes-de-cas est « Tout
Savoir sur les Études de Cas », qui vit sur Compétences et non sur la page
Cas ; et introduction est « Business Sense ».7 Les versions anglaises
Un cours et sa version anglaise forment une seule ligne, avec deux jeux de chiffres. Présenter deux lignes reviendrait à montrer deux fois le même contenu à une école, et un étudiant inscrit aux deux versions pèserait double.
L'appariement se déduit, sans table à maintenir, par deux règles :
Le nom du programme
X EN est la version anglaise de X. À l'intérieur, les cours
s'apparient par leur numéro de niveau, présent dans les deux titres
(Niveau #1 ↔ Level #1).
Le suffixe du titre
Un cours nommé … EN rejoint celui du même nom sans le suffixe.
⚠️ C'est aussi ce qui explique le chiffre du chapitre 10 : au 24 août, la plupart des 44 cours hors programme sont des versions anglaises. Sans programme, la première règle ne s'applique pas ; leurs titres étant traduits, la seconde non plus.
8 Ajouter une école, un administrateur
Ce que l'écran demande, dans l'ordre :
Le nom affiché et l'identifiant
L'identifiant est l'étiquette LearnWorlds qui définit la promotion
(ecole-escp). Il ne se modifie plus ensuite : c'est
l'identité du board. Votre automatisation doit poser exactement cette
étiquette ; si les deux diffèrent, le board reste vide et rien ne le signalera.
Les adresses de l'école
Les domaines e-mail, séparés par des virgules. Ce sont les adresses que l'école a le droit
d'inviter depuis son board. Inutile d'écrire les sous-domaines :
student.essec.edu est reconnu par essec.edu.
Sans domaine, aucune invitation n'est possible.
« L'école prend en charge ses étudiants »
Cochée, ces adresses partent vers l'inscription gratuite sur la page d'entrée du site. Décochée, l'école peut toujours inviter, mais chacun paie son abonnement. Cette case oriente, elle n'ouvre aucun cours : l'accès vient de l'étiquette posée par l'automatisation.
Le programme de référence — ou rien
Laissé vide, cela signifie « cette école n'a pas de programme attitré » : c'est le cas de l'ESSEC aujourd'hui, et cela change la base de calcul des pourcentages (voir « Ce que les chiffres veulent dire »).
Qui peut s'y connecter
Une ou plusieurs adresses. Une même personne peut avoir plusieurs boards — un directeur qui suit deux écoles est une seule adresse, deux accès.
🔴 On désactive un accès, on ne le supprime pas : on garde la trace de qui l'avait. Attention toutefois — une session déjà ouverte reste valable jusqu'à son expiration (12 h).
⏳ Un changement de domaine ou de case met jusqu'à 5 minutes à être pris en compte par le site.
9 Emporter les chiffres
Trois sorties, et elles portent le même tableau : il est écrit une seule fois, à la collecte. Trois calculs séparés finiraient par diverger, et c'est le client qui lirait l'écart en recoupant son classeur avec son e-mail.
Recevoir le rapport par e-mail
Un bouton, et le rapport part. Aucune adresse n'est demandée : il est envoyé à celle de la session. Si le navigateur pouvait choisir le destinataire, une session valide suffirait à expédier les chiffres d'une école n'importe où, depuis un domaine signé — et si le navigateur pouvait fournir le texte, le board deviendrait un relais d'envoi. Le corps est donc construit côté serveur.
Dix minutes entre deux envois : de quoi renvoyer après une faute de frappe, pas de quoi inonder une boîte.
Le classeur Excel et le PDF
Le classeur ouvre sur la feuille « Compte rendu » et contient ensuite le détail par étudiant et par cours. Le PDF est la même chose, mise en page pour être transmise.
Le compte rendu, en cours commencés
Sept lignes : combien d'inscrits, combien ont commencé au moins un cours, combien en ont commencé au moins trois (« apprenant actif »), et les totaux et moyennes correspondants.
On compte des cours, pas des pages. Une page est une unité au poids variable — nos cours vont de quelques unités à plusieurs dizaines — si bien que « 40 pages vues » ne dit ni combien de sujets ont été abordés, ni quelle part du parcours a été touchée. Un cours compte comme commencé dès qu'une de ses pages est terminée, exactement comme dans l'onglet Cours.
10 Ce qui peut casser
Des comptes de test dans une vraie promotion
Une automatisation associe le domaine boks.app à l'étiquette ESSEC, pour
pouvoir éprouver le parcours gratuit sans compte universitaire.
Relevé le 24 août : 7 comptes @boks.app portent cette
étiquette, contre 3 adresses @essec.edu — la promotion ESSEC est
donc majoritairement composée de comptes de test, et ils tirent sa moyenne vers
le bas. À retirer dans l'automatisation LearnWorlds avant qu'une vraie école ne
regarde.
Des cours hors programme
Un cours qu'aucun programme ne contient n'apparaît sur aucune page du site : aucun étudiant ne peut le trouver. Le board les compte, ce qui permet de s'en apercevoir. Relevé le 24 août : 44 cours sur 229 n'appartiennent à aucun programme — pour l'essentiel des versions anglaises (fiches secteur et cabinet traduites, entraînements). Elles ne sont donc visibles nulle part sur le site, et l'appariement automatique ne les rattache à aucune version française puisque leurs titres ont été retraduits. Elles apparaissent en lignes séparées plutôt que d'être rattachées au hasard.
Une clé manquante
Sans la clé d'envoi d'e-mail, aucun code ne part. Elle est en place depuis le 10 août, et les deux parcours ont été éprouvés : un code reçu sur le board comme sur le configurateur. Contrepartie à connaître : le mode installation, qui déposait le code dans le journal faute de pouvoir l'envoyer, ne s'active plus — un refus de Brevo est désormais consigné avec son motif, jamais le code en clair. Sans la clé qui signe les sessions, aucune connexion n'est acceptée du tout : devant une configuration incomplète, le board se ferme au lieu de s'ouvrir par accident.
11 Qui fait quoi
| Ce qu'il faut faire | Qui | Où |
|---|---|---|
| Créer les cours et les programmes, poser les étiquettes d'école | Vous | LearnWorlds |
Corriger l'automatisation qui associe boks.app à l'ESSEC |
Vous | LearnWorlds |
| Créer une école, ses domaines, ses accès, ses textes | Vous | Configurateur → Administration → Boards écoles |
| Ranger un programme sur une page | Vous | Base de données · 1 ligne de SQL (chapitre 6) |
| Lire les étudiants, leur progression, les noms de cours, l'appartenance aux programmes | Le code | À chaque collecte |
| Apparier les versions anglaises, calculer les chiffres, signaler ce qu'il ne sait pas ranger | Le code | À chaque collecte |