M. Histoire du projet - uha-fr/endyear_2025_gr11_back GitHub Wiki

Objectif initial

  1. Mettre à disposition des enseignant·e·s une application web permettant de
  1. suivre et d’évaluer automatiquement le travail des étudiant·e·s,
  1. conserver une certaine liberté méthodologique (hors statistiques Git classiques),
  1. produire des indicateurs pertinents pour la notation et le suivi pédagogique.

Besoins fonctionnels initiaux

Suivi des contributions :

  • Identifier qui a travaillé sur chaque projet/TD (chaque TD étant un livrable).
  • Quantifier la quantité de code produite (lignes, fichiers, commits).
  • Distinguer le travail individuel du travail collaboratif (commits multiples sur une même partie, merge requests, branches).
  • Vérifier la complémentarité des apports ou le cas où un travail remplace entièrement celui d’un·e autre.

Analyse de l’évolution des livrables :

  • Comparer chaque version de livrable pour mesurer l’évolution (ajouts, suppressions, refactorings).
  • Suivre l’évolution des bases de données (schéma, migrations, modifications).
  • Détecter les patterns de code récurrents et les extraits partagés entre repos.

Indicateurs de collaboration :

  • Nombre de merge requests et d’issues utilisées.
  • Répartition des contributions au sein de chaque groupe.
  • Degré de travail collaboratif par livraison.

Approche automatique :

  • Téléchargement (clonage) de tous les dépôts en local pour analyses plus fines (patterns, recherche textuelle).
  • Génération d’un rapport synthétique rassemblant toutes les statistiques sans appel GitHub en temps réel.

Propositions techniques

Accès aux données :

  • Création d’un token SSH (ou OAuth) pour interroger l’API GitHub/GitLab et cloner les dépôts.`
  • Patch ou script de pré-calcul pour générer toutes les statistiques en une seule passe, afin de limiter les appels API.`

Gestion des groupes et des étudiant·e·s :

  • Modéliser les groupes d’élèves :
  • Création/modification manuelle (interface) ou import via un fichier (CSV, JSON).
  • Attribution d’un·e étudiant·e à un groupe, gestion des paramètres individuels.

Architecture de l’application :

  • Backend capable de lancer des jobs d’analyse (clonage, parsing, comparaison).
  • Base de données pour stocker les métriques historiques.
  • Frontend web pour :
  1. afficher la répartition des contributions,
  1. comparer les livrables dans le temps,
  1. exporter des rapports de notation.

Processus d’analyse comparatives

Clonage des dépôts :

  • Récupération en local de l’ensemble des projets d’une promotion ou d’une classe.

Extraction des données factuelles :

  • Statistiques de commits (auteur, date, taille).
  • Historique des branches, merge requests et issues.

Analyse des patterns :

  • Recherche de motifs de code similaires dans plusieurs dépôts.
  • Identification d’extraits réutilisés ou copiés.

Synthèse et comparaison

  • Dashboard regroupant tous les indicateurs clés.`
  • Comparaisons intra-projet (versions successives) et inter-projet (tous les groupes de la même classe).`