Outils pour utilisateurs

Outils du site


blocks:usestats:algorithm

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

blocks:usestats:algorithm [2026/01/13 08:19] – créée - modification externe 127.0.0.1blocks:usestats:algorithm [2026/10/18 00:22] (Version actuelle) – admin
Ligne 1: Ligne 1:
 <html><!-- nomoodle --></html>{{ :blocks:logo-apl.png?nolink |}}<html><!-- /nomoodle --></html> <html><!-- nomoodle --></html>{{ :blocks:logo-apl.png?nolink |}}<html><!-- /nomoodle --></html>
  
-===== Modèle de calcul du  block Use Stats =====+===== Modèle de calcul du bloc Use Stats =====
  
-Cet article documente sur ce que fait effectivement le bloc Use Stats. +Cet article documente ce que fait effectivement le bloc Use Stats.
  
-Le bloc Use Stats est un compilateur de "temps d'usage". Il essaie de déterminer au mieux le temps qu'à passé l'utilisateur dans les différents contextes de Moodle. +Le bloc Use Stats est un compilateur de "temps d'usage". Il détermine au mieux le temps passé par l'utilisateur dans les différents contextes de Moodle.
  
-Pour se faire, il analyse les traces des utilisateurs, et calcule en premier lieu un délai différentiel par rapport à la dernière trace connue du même utilisateur. C'est la fonction de "tracking" des traces standard qui fait ce calcul au fil de l'eau en "suivant" la table de trace standard aussi près que possible. +Pour cela, il analyse les traces (logs) des utilisateurs. Il calcule en premier lieu, pour chaque trace, le délai qui la sépare de la trace suivante du même utilisateur (//lap// ou //timegap//). Ce délai est mémorisé au fil de l'eau par la tâche planifiée de compilation, qui "suit" la table de trace standard au plus près (voir [[:blocks:usestats:technique:db|Modèle de données]]). Le délai attribué à une trace est le temps que l'utilisateur est supposé avoir passé dans le contexte de cette trace.
  
-==== Les problèmes à résoudre ==== +==== Les problèmes à résoudre ====
  
-Les deux problèmes principaux à résoudre dans l'analyse et la compilation des temps passés sont : +Deux problèmes principaux se posent pour compiler les temps passés :
  
-   * Le problème des déconnexions ou rupture de sessions +   * le problème des déconnexions ou ruptures de session, 
-   * Le problème du choix d'agrégation des temps +   * le problème du choix d'agrégation des temps.
  
 ==== Les ruptures de session ==== ==== Les ruptures de session ====
  
-La rupture de session est loin d'être un événement "explicite", marqué par une action duement enegistrée dans les traces d'usage. L'observation de la pratique montre en effet que très peu d'utilisateurs actionnent une déconnexion explicite de Moodle lorsqu'ils ont terminé leur session d'usage. Le plus souvent, le navigateur est refermé sur la dernière fenêtre utilisée, ou l'ordinateur est arrêté par la commande système, lorsque d'autres événements comme une mise en veille forcée ne sont pas déclenchés. +La rupture de session n'est presque jamais un événement explicite, marqué par une action enregistrée dans les traces. L'observation de la pratique montre que très peu d'utilisateurs se déconnectent explicitement de Moodle lorsqu'ils ont terminé leur travail. Le plus souvent, le navigateur est refermé sur la dernière fenêtre utilisée, l'ordinateur est arrêté, ou une mise en veille est déclenchée.
  
-Pour cette raison, il est nécessaire de mettre en place un dispositif "heuristique" qui va "deviner" dans quelle condition on doit considérer qu'un utilisateur a quitté la session de travail, par le seul examen des données tangibles dont le bloc dispose : les traces.+Pour cette raison, le bloc met en œuvre un dispositif heuristique qui "devine" dans quelles conditions l'utilisateur a quitté la session de travail, par le seul examen des traces.
  
-==== Approche par keep_alive ====+=== Règles appliquées à chaque trace ===
  
-Une nouvelle approche de la résolution de l'intégrité des ruptures de session a été implémentée sous forme d'un ajout Javascript à toutes les pages de Moodle. Cet ajout émet une requête automatique (toutes les 10 minutes par défaut) entrainant la création d'un événement de trace renseigné du contexte de la page d'où elle est émise. Ce dispositif doit être intégré dans le thème (par exemple, dans la partie qui spécialise un pied de page spécifique) sous forme de l'appel suivant : +Pour chaque trace d'un utilisateur, le bloc applique dans l'ordre : 
 + 
 +   - **Délai :** le délai jusqu'à la trace suivante du même utilisateur. Les traces de notation d'un utilisateur par un tiers (événements //graded//) ne sont pas une activité de l'utilisateur : elles sont sautées, et leur délai est rattaché à la trace en cours. Pour la dernière trace connue, il n'y a pas de trace suivante : le délai est le crédit de fin de session, limité au temps réellement écoulé depuis la trace. 
 +   - **Dépassement du seuil :** si le délai dépasse le //seuil// (en minutes, réglage central), le bloc conclut à une rupture de session. Le délai n'est pas compté en entier : il est remplacé par le //crédit exceptionnel de fin de session// (en minutes, réglage central). Ainsi, l'heure passée entre deux traces lointaines n'est pas attribuée à l'utilisateur. 
 +   - **Traces non significatives :** une déconnexion explicite (//logout//) ou une tentative de connexion échouée ne comptent pas de temps. 
 +   - **Connexion explicite :** une connexion (//login//) démarre une nouvelle session et remet à zéro le temps en attente. 
 +   - **Modules ignorés et modules capturés :** voir ci-dessous. 
 +   - **Toute autre trace :** le délai est ajouté à la session courante, puis agrégé (voir plus loin). 
 + 
 +=== Modules ignorés et capturés === 
 + 
 +Deux réglages centraux permettent de traiter à part certains modules : 
 + 
 +   * un module **ignoré** est exclu du calcul : le délai de ses traces est perdu, il n'est ajouté à aucun compteur ; 
 +   * un module **capturé** (par défaut ''learningtimecheck'') n'est pas comptabilisé pour lui-même : le délai de ses traces est mis en attente et ajouté au délai de la première trace significative suivante. Le temps passé sur ces modules n'est donc pas perdu, il est imputé à l'activité qui suit. 
 + 
 +Voir [[:blocks:usestats:includeignoremodules|Exclusion, inclusion de modules]]. 
 + 
 +=== Les sessions === 
 + 
 +Les sessions de travail sont reconstituées au fil du calcul : 
 + 
 +   * une session commence sur une connexion explicite, ou à la première trace en l'absence de connexion ; 
 +   * en mode normal, une session peut traverser plusieurs cours : la liste des cours traversés est mémorisée ; 
 +   * avec le réglage //Une session par cours//, une nouvelle session démarre chaque fois que la trace change de cours. 
 + 
 +Les sessions sont enregistrées dans la table ''block_use_stats_session'' (début, fin estimée, cours traversés), sans doublon. 
 + 
 +==== Le choix d'agrégation des temps ==== 
 + 
 +Chaque délai est affecté à un ou plusieurs agrégats : 
 + 
 +   * **Activités** (''activities'') : le temps des traces qui se rapportent à un module d'activité d'un cours, agrégé par module et par section du cours ; 
 +   * **Cours** (''course'') : le temps des traces du cours qui ne relèvent d'aucune activité (page d'accueil du cours, rapports, blocs...) ; 
 +   * **Autre** (''other'') : le temps des traces du cours qui ne se rapportent ni au cours lui-même ni à un module ; 
 +   * **Total du cours** (''coursetotal'') : la somme des trois précédents pour un cours donné. Le bloc vérifie cette égalité et signale les écarts dans sa trace de diagnostic. 
 + 
 +Les traces qui n'appartiennent à aucun cours (connexion, déconnexion, pages hors cours) sont rangées sous l'identifiant de cours 0, et les traces de la page d'accueil du site sous l'identifiant du cours du site. C'est de là que viennent les temps "hors cours" et "temps complémentaires" des rapports. 
 + 
 +Lorsque le calcul porte sur un cours précis, seules les traces de ce cours sont résolues au niveau module : les traces des autres cours sont comptées pour le total de leur cours, sans détail. 
 + 
 +Si le module [[:mod:learningtimecheck|Learning Time Check]] est installé avec le réglage qui l'y autorise, les temps du contrat pédagogique peuvent remplacer les temps mesurés. Les valeurs mesurées d'origine (''coursetotalraw'', ''courseraw'') sont conservées. 
 + 
 +Pour limiter le coût des calculs répétés, le résultat d'un affichage du bloc est mémorisé dans le [[:blocks:usestats:technique:cache|cache d'agrégats]]. 
 + 
 +==== Approche par keep_alive (PRO) ==== 
 + 
 +Une approche complémentaire de la résolution des ruptures de session a été implémentée sous forme d'un ajout JavaScript à toutes les pages de Moodle. Cet ajout émet une requête automatique (toutes les 10 minutes par défaut), entraînant la création d'un événement de trace renseigné du contexte de la page d'où elle est émise. L'écart maximal entre deux traces d'une page restée ouverte est ainsi borné par la période d'émission, ce qui évite de perdre le temps passé sur une page longue sans clic. 
 + 
 +Ce dispositif doit être intégré dans le thème (par exemple dans la partie qui spécialise un pied de page) par l'appel suivant, dans la partie "footer" des "layouts" du thème :
  
     include_once $CFG->dirroot.'/blocks/use_stats/lib.php';     include_once $CFG->dirroot.'/blocks/use_stats/lib.php';
     echo block_use_stats_setup_theme_notification();     echo block_use_stats_setup_theme_notification();
  
-dans la partie "footer" des "layouts" du thème. +Le dispositif est activé et réglé dans la configuration centrale du bloc (voir [[:blocks:usestats:technique:settings|Configuration générale]]), qui permet aussi de restreindre l'émission à certains utilisateurs. Une alternative d'intégration est indiquée dans le [[:blocks:usestats:install|guide d'installation]].
- +
-Une alternative est indiquée dans la partie "installation" de cette documentation.+
  
-A l'heure actuelle, l'approche par "keep_alive" ne gère pas les situations d'usage avec de nombreuses navigations parallèles du même utilisateur.+À l'heure actuelle, l'approche par "keep_alive" ne gère pas les situations d'usage avec de nombreuses navigations parallèles du même utilisateur.
  
 ------------- -------------
  
 <html><!-- nomoodle --></html> <html><!-- nomoodle --></html>
-[[:Blocks:UseStats:UserGuide|Revenir à l'index du guide d'utilisation]] - +[[:blocks:usestats:userguide|Revenir à l'index du guide d'utilisation]] -
 [[:plugins|Revenir à l'index des plugins]] - [[:start|Retour au catalogue]] [[:plugins|Revenir à l'index des plugins]] - [[:start|Retour au catalogue]]
  
 <html><!-- /nomoodle --></html> <html><!-- /nomoodle --></html>
blocks/usestats/algorithm.txt · Dernière modification : de admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki