Notre projet est développé en JavaScript (Node.js) dans le cadre du cours GL02 – Fondements de l'ingénierie logicielle.
Le code est structuré pour répondre directement au cahier des charges d'une application console "Sujet B : Outil de gestion еt dе génération d’еxamеns au format GIFT" de l'équipe Team SoftMakers.
Avant d'utiliser l'application, assurez-vous d'avoir :
- Node.js 18+ installé : https://nodejs.org/
Option A — Utilisation directe via Node.js
npm install # installe les dépendances
cd src/cli
node questionCli.js <commande>Option B — Installation globale (npm)
npm install # installe les dépendances
npm i -g
npm link # rend les commandes bin accessibles depuis le terminal
gift <commande>├── documents/ # livrables et documentation
├── src/
│ ├── classes/ # Modèles de données
│ ├── parsers/ # Extraction du texte en Objets JS
│ ├── cli/ # Interface utilisateur
│ └── data/ # fichiers GIFT de test
│ ├── logging / # Journalisation
│ ├── profiling / # Analyse Vega-lite
│ ├── utils / # Fichiers utilitaires à QuestionCli.js
│ └── exports/ # Génération de sorties (visualisations)
├── spec/ # Tests unitaires JasmineDans le cadre des TD de GL02, les fichiers caporalCli.js et POI.js sont conservés dans le repository car ils faisaient partie des supports pédagogiques fournis. Ils ne sont toutefois pas utilisés dans l’implémentation finale du projet.
Chef d'équipe: Héléna Chevalier
Membres: Sacha Himber; Jules Andrea; Fadi-Farhat; Emeline Nerot
Si vous utilisez npm i -g, vous pouvez utiliser à la racine du repository avec "gift" suivi des commandes. Sinon, allez dans le dossier "src/cli" et exécutez "node questionCli.js" suivi des commandes.
Pour afficher le menu d'aide :
node questionCli.js
# ou
node questionCli.js menuVisualiser une question
node questionCli.js view <répertoire> <id>Exemple :
node questionCli.js view data "U5 p49 GR2.5"Rechercher une question
node questionCli.js search <répertoire> <texte>Exemple :
node questionCli.js search data "Ultimate"Sélectionner une question
node questionCli.js select <répertoire> <id>Exemple :
node questionCli.js select data "U5 p49 GR2.5"Afficher la sélection actuelle
node questionCli.js listVider la sélection
node questionCli.js clearExporter un examen au format GIFT
node questionCli.js export <fichier-sortie>Exemple :
node questionCli.js export ./exports/examen.giftSimuler un examen
node questionCli.js simulate <fichier-examen>Exemple :
node questionCli.js simulate ./exports/examen.giftCréer une carte vCard enseignant
node questionCli.js vcard <version> <prénom> <anniversaire> <email> <téléphone> <organisation> [--out <fichier-sortie>]Exemple :
node questionCli.js vcard "3.0" "Jean" "15/03/1985" "jean.dupont@mail.fr" "0123456789" "UTC" --out ./exports/enseignant.vcfValider un fichier GIFT ou vCard
node questionCli.js validate <fichier>Exemple :
node questionCli.js validate ./exports/examen.giftSécuriser les données d'un fichier GIFT
node questionCli.js secure-gift <fichier>Sécuriser les données d'un fichier vCard
node questionCli.js secure-vcard <fichier>Générer le profil statistique d'un examen
node questionCli.js generate-profile <fichier-ou-répertoire>Exemple :
node questionCli.js generate-profile ./dataComparer deux profils d'examen
node questionCli.js compare-profiles <fichier1> <fichier2>Exemple :
node questionCli.js compare-profiles ./exports/examen.gift ./dataNote : Les graphiques Vega-Lite sont générés dans ./outputs/ et visualisables sur https://vega.github.io/editor/
L’application inclut une suite de tests unitaires fondée sur Jasmine (vu en TD), conformément aux exigences de Robustesse (NF3) du cahier des charges.
En installation :
npm install --save-dev jasmine
npx jasmine initA la racine du projet :
npm testProjet développé dans un contexte académique — diffusion restreinte aux étudiants du module GL02.