Format des données d'exercice¶
Référence rapide des structures JSON acceptées pour donnees_json selon
le sous-type. La validation se fait via JSON Schema, voir
exercises/schemas.py pour la définition stricte.
Tous les sous-types acceptent en option "shuffle_choix": true
(qcm_unique, qcm_multiple uniquement) qui permute les choix à chaque
tirage.
qcm_unique¶
{
"type": "qcm_unique",
"consigne": "...",
"choix": ["A", "B", "C", "D"],
"reponse_index": 0,
"explication": "(optionnel)",
"shuffle_choix": true
}
qcm_multiple¶
{
"type": "qcm_multiple",
"consigne": "...",
"choix": ["A", "B", "C", "D"],
"reponses_index": [0, 2],
"explication": "(optionnel)",
"shuffle_choix": true
}
Scoring : (bonnes - fausses) / total_attendu, clampé à 0.
vrai_faux¶
{
"type": "vrai_faux",
"consigne": "...",
"affirmations": [
{"texte": "...", "vrai": true},
{"texte": "...", "vrai": false}
]
}
Scoring : corrects / total.
trous¶
{
"type": "trous",
"texte_avec_trous": "Paris est [TROU:1] et Rome [TROU:2].",
"reponses": ["la capitale de la France", "celle de l'Italie"],
"casse_sensible": false
}
Marqueur [TROU:N] à partir de 1. Comparaison textuelle normalisée.
calcul¶
reponse accepte int, float, ou string numérique. tolerance permet
les approximations (utile pour les fractions). L'élève peut saisir
5/2, 2,5, 2.5 — tous parseés vers 2.5.
reponse_libre¶
{
"type": "reponse_libre",
"consigne": "Explique pourquoi ...",
"correction_modele": "(modèle de réponse)",
"mots_cles": ["loi", "constitution"]
}
Correction manuelle par le prof (pas auto-corrigible).
drag_drop¶
{
"type": "drag_drop",
"consigne": "Place chaque item dans la bonne zone :",
"items": ["item1", "item2", "item3"],
"zones": ["zone A", "zone B"],
"associations_correctes": [0, 1, 0]
}
associations_correctes[i] = index de la zone dans laquelle item i
doit être placé.
association¶
{
"type": "association",
"consigne": "Associe chaque pays à sa capitale :",
"paires": [
{"gauche": "France", "droite": "Paris"},
{"gauche": "Italie", "droite": "Rome"}
]
}
redaction, upload_fichier, schema_annote¶
Voir exercises/schemas.py pour le détail.
Ces types nécessitent une correction manuelle.
Variables paramétriques¶
Tous les champs string acceptent les placeholders {{var}} ou
{{expr}}. Si une string entière est {{expr}}, elle est convertie
en valeur typée (int / float / Fraction). Voir
guide d'authoring pour le détail.