Ce projet répond à plusieurs limites fonctionnelles de Google Classroom dans le cadre du suivi pédagogique des élèves.
En particulier :
- Absence de périodes pédagogiques personnalisables : Google Classroom ne permet pas de définir des périodes d’évaluation (par exemple : trimestre, semestre ou période libre) basées sur une plage de dates. Cela limite la capacité à analyser les résultats sur des segments temporels cohérents.
- Manque de flexibilité dans le calcul des moyennes : Les moyennes sont généralement exprimées en pourcentage, ce qui ne correspond aux systèmes de notation utilisés (ex : notes sur 10, 20, 40, etc.).
- Absence de normalisation des résultats : Il n’existe pas de mécanisme natif permettant d’agréger et de normaliser les notes provenant de devoirs hétérogènes afin de produire une moyenne cohérente et comparable.
Ce projet apporte une couche de traitement permettant :
- de définir des périodes d’analyse personnalisées
- de normaliser les notes
- de calculer des moyennes adaptées au contexte pédagogique
| Technologie | Version |
|---|---|
| FrankenPHP | 1.12.x |
| PHP | 8.4.x |
| Symfony | 8.x |
| MySQL | 8.x |
| PHPUnit | 13 |
| Google Classroom API, Google Docs API, Google Drive API | — |
- Docker et Docker Compose installés.
- Un compte Google avec accès à Google Classroom.
make buildPour que l'application puisse communiquer avec Google, vous devez configurer vos identifiants dans le fichier .env.
- Allez sur la Console Google Cloud.
- Créez un nouveau projet.
- Assurez-vous d'avoir bien activé les APIs mentionnées https://console.cloud.google.com/apis/library
:
- Google Classroom API
- Google Docs API
- Google Drive API
- Configurez l'écran de consentement OAuth (choisissez "Externe" ou "Interne" selon vos besoins).
- Ajoutez le scope :
https://www.googleapis.com/auth/classroom.courses.readonly - Ajoutez le scope :
https://www.googleapis.com/auth/classroom.coursework.me.readonly - Ajoutez le scope :
https://www.googleapis.com/auth/classroom.coursework.students.readonly - Ajoutez le scope :
https://www.googleapis.com/auth/classroom.topics.readonly - Ajoutez le scope :
https://www.googleapis.com/auth/classroom.rosters.readonly - Ajoutez le scope :
https://www.googleapis.com/auth/drive.file - Ajoutez le scope :
https://www.googleapis.com/auth/documents
- Ajoutez le scope :
- Allez dans Identifiants > Créer des identifiants > ID de client OAuth.
- Sélectionnez Application de bureau.
- Copiez votre
Client IDet votreClient Secretdans votre fichier.envdu projet :GOOGLE_CLIENT_ID=votre_id GOOGLE_CLIENT_SECRET=votre_secret GOOGLE_BULLETIN_TEMPLATE_DOCUMENT_ID=id_du_document_modele GOOGLE_BULLETIN_OUTPUT_FOLDER_ID=id_du_dossier_de_destination
Une fois le ID et Secret configurés, utilisez la commande intégrée pour obtenir votre token de rafraîchissement permanent :
php bin/console app:google:generate-refresh-token- Ouvrez l'URL affichée dans votre navigateur.
- Connectez-vous et validez les autorisations.
- Copiez le code fourni par Google et collez-le dans votre terminal.
- Copiez le
Refresh Tokenobtenu et ajoutez-le à votre.env:GOOGLE_REFRESH_TOKEN=votre_refresh_token
make runL’application est disponible sur : http://localhost:8001
L'application permet de générer des bulletins scolaires au format Google Docs à partir d'un modèle.
- Préparation du modèle : Créez un Google Doc contenant des placeholders comme
{{student_fullname}},{{lecture_average}},{{rank}}, etc. - Configuration : Renseignez
GOOGLE_BULLETIN_TEMPLATE_DOCUMENT_IDetGOOGLE_BULLETIN_OUTPUT_FOLDER_IDdans votre.env. - Génération : Depuis l'interface web, cliquez sur le bouton "Bulletin" en face d'un élève.
Affiche la liste de tous vos cours Google Classroom avec leurs IDs.
php bin/console app:classroom:list-coursesAffiche les élèves d'un cours spécifique et les enregistre/met à jour en base de données locale.
php bin/console app:classroom:list-students [courseId]Calcule la moyenne par matière et la moyenne générale.
php bin/console app:classroom:compute-average "Nom de l'élève" --courseId=[ID] --start-date=[DATE_DEBUT] --end-date=[DATE_FIN]Note sur le cache : Si un calcul a déjà été effectué pour un élève sur la même période, l'application récupérera le résultat en base de données au lieu d'appeler l'API Google.
