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 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.
🟢 Le jour où la clé est fournie, l'envoi reprend de lui-même : rien à retirer, rien à redéployer, aucune intervention à ne pas oublier.
admin@ecole.fr chez un fournisseur laxiste ouvrirait le board de cette
école.3 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.
4 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.
5 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.
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.
C'est la même base pour toutes les lignes de cette page, y compris celles du chapitre « Ajouter une école ». L'effet est immédiat et il n'y a rien à redémarrer : la collecte suivante en tient compte.
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 ».6 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.
7 Ajouter une école, un administrateur
Deux lignes suffisent : une pour l'école, une pour la personne qui pourra s'y connecter.
Elles se tapent au même endroit que celles du chapitre précédent — la
console de la base prepa-lw, dans le tableau de bord Cloudflare.
-- une école : `tag` est l'étiquette LearnWorlds qui définit sa promotion
INSERT INTO ecoles (tag, nom, domaine, programme, actif, cree)
VALUES ('ecole-escp', 'ESCP', 'escp.eu', NULL, 1, date('now'));
-- qui peut se connecter, et pour quelle école
INSERT INTO admins (email, ecole_tag, nom, actif, cree)
VALUES ('directeur@escp.eu', 'ecole-escp', 'Prénom Nom', 1, date('now'));
-- retirer un accès sans rien supprimer
UPDATE admins SET actif = 0 WHERE email = 'directeur@escp.eu';ecole-escp), le nom affiché, le domaine e-mail de l'école, puis l'adresse et le
nom de la personne. date('now') inscrit la date du jour toute seule — inutile de
la saisir. NULL à la place du programme 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 »).🔴
actif = 0 plutôt qu'une suppression : on garde la trace de qui avait
accès. Attention toutefois — une session déjà ouverte reste valable jusqu'à son expiration
(12 h).8 Ce qui peut casser
Des comptes de test dans une vraie promotion
Une automatisation associe le domaine boks.app à l'étiquette ESSEC.
Résultat mesuré : 2 des 4 étudiants de la promotion ESSEC sont des
comptes de test, et ils tirent sa moyenne vers le bas. À retirer 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.
Une clé manquante
Sans la clé d'envoi d'e-mail, aucun code ne part — c'est la situation actuelle, décrite au chapitre « Comment on entre ». 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.
9 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 |
| Ajouter une école, un administrateur, ranger un programme sur une page | Vous | Base de données · 1 ligne de SQL |
| 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 |