Specialty
Suivi de la progression des apprenants par spécialité (séquence ordonnée de projets). Une spécialité = une liste de projets à terminer dans un ordre défini.
Source :
src/api/v1/specialty.ts,src/services/projects.ts(constantespecialties).
Lister les spécialités disponibles
Réponse 200
[
{
"name": "cybersecurity",
"totalProjects": 11,
"projects": [
"Passive", "Inspector-Image", "Active", "Local",
"Web-Hack", "Injector", "Hole-In-Bin", "Mal-Track",
"Evasion", "Obfuscator", "Malware"
]
},
{
"name": "ai",
"totalProjects": 5,
"projects": [
"Kaggle-Titanic", "NLP-Scrapper", "Emotions-Detector",
"SP500-Strategies", "Credit-Scoring"
]
}
]Spécialités existantes
| Slug | Nb de projets |
|---|---|
cybersecurity | 11 |
ai | 5 |
blockchain | 4 |
devops | 7 |
game | 9 |
mobile-application | 6 |
Étudiants d’une spécialité
Renvoie la liste des étudiants ayant un avancement détecté sur les projets de la spécialité, avec leur progression calculée (projet courant inclus).
Paramètres
| Nom | Type | Localisation | Description |
|---|---|---|---|
name | string | path | Slug de la spécialité (cf. tableau ci-dessus) |
eventId | number | query | (optionnel) Filtre sur l’event.id 01 Edu |
Réponse 200
{
"specialty": "cybersecurity",
"totalProjects": 11,
"projectsList": ["Passive", "Inspector-Image", "..."],
"studentsCount": 7,
"students": [
{
"login": "alice",
"firstName": "Alice",
"lastName": "Martin",
"completedProjects": ["Passive", "Inspector-Image"],
"currentProject": "Active",
"progression": { "current": 3, "total": 11 },
"projects": [
{ "name": "Passive", "grade": 1, "status": "finished" },
{ "name": "Inspector-Image", "grade": 1, "status": "finished" },
{ "name": "Active", "grade": null, "status": "working" }
]
}
]
}Calcul de la progression
completedProjects= projets terminés avecstatus=finishedETgrade > 0.currentProject= dernier projet rencontré avecstatus ∈ {working, setup, audit}.progression.current=len(completedProjects) + (1 si currentProject)(cap àtotalProjects).
Erreurs
| Code | Cause |
|---|---|
| 400 | name absent |
| 404 | Spécialité inconnue (le payload renvoie la liste valide) |
| 500 | Erreur GraphQL 01 Edu |
Exemple
curl $API/api/v1/specialties/cybersecurity/students?eventId=72