M. Histoire du projet - uha-fr/endyear_2025_gr11_back GitHub Wiki
Objectif initial
- Mettre à disposition des enseignant·e·s une application web permettant de
- suivre et d’évaluer automatiquement le travail des étudiant·e·s,
- conserver une certaine liberté méthodologique (hors statistiques Git classiques),
- 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.
- afficher la répartition des contributions,
- comparer les livrables dans le temps,
- 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).`