Skip to main content

5. Payloads en datacontract

5.1 Configuratiepayload

Het onderstaande JSON-object beschrijft de functionele configuratie die bij een concrete oefening op basis van deze module opgeslagen kan worden. De exacte technische opslag mag base64-gecodeerd zijn, maar functioneel blijft de structuur leidend voor modulevalidatie en vraaggeneratie.

{
"moduleKey": "OptellenAftrekken_Simple_v1",
"schemaVersion": "0.9",
"operationMode": "Both",
"display": {
"exerciseName": "Optellen en aftrekken t/m 20",
"icon": "plus"
},
"addition": {
"enabled": true,
"number1": {
"mode": "Range",
"min": 1,
"max": 20,
"exactValues": []
},
"number2": {
"mode": "ExactValues",
"min": null,
"max": null,
"exactValues": [1, 2, 4, 6, 8]
},
"result": {
"min": 2,
"max": 40
}
},
"subtraction": {
"enabled": true,
"number1": {
"mode": "Range",
"min": 5,
"max": 20,
"exactValues": []
},
"number2": {
"mode": "Range",
"min": 1,
"max": 15,
"exactValues": []
},
"result": {
"min": 0,
"max": 20
},
"avoidNegativeResults": true
},
"balance": {
"additionMinimumPercentage": 40,
"subtractionMinimumPercentage": 40,
"fillRemainingRandomly": true
},
"questionCount": {
"default": 15,
"min": 10,
"max": 40,
"systemMax": 100
},
"generationRules": {
"limitOneOperandQuestions": false,
"maxOneOperandQuestions": 2,
"limitRoundTensQuestions": false,
"maxRoundTensQuestions": 4
},
"runtimeOptions": {
"allowMarkAsDunno": false,
"showAnswerAfterSubmit": false
}
}

5.1.1 Functionele betekenis

JSON-padBetekenis
moduleKeyTechnische modulesleutel waarmee de configuratie aan de juiste module-implementatie wordt gekoppeld.
schemaVersionVersie van het modulespecifieke configuratieschema.
operationModeBepaalt of optellen, aftrekken of beide typen sommen gegenereerd mogen worden.
display.exerciseNameFunctionele naam van de concrete oefening; deze waarde moet synchroon blijven met de generieke oefeningnaam wanneer beide apart worden vastgelegd.
display.iconIcoonreferentie van de concrete oefening; deze waarde moet synchroon blijven met de generieke oefeningicoonkeuze wanneer beide apart worden vastgelegd.
addition.enabledAfgeleide beschikbaarheid van optelvragen op basis van operationMode.
addition.number1Configuratie voor het eerste getal bij optelsommen.
addition.number2Configuratie voor het tweede getal bij optelsommen.
addition.resultUitkomstgrenzen voor optelsommen.
subtraction.enabledAfgeleide beschikbaarheid van aftrekvragen op basis van operationMode.
subtraction.number1Configuratie voor het eerste getal bij aftreksommen.
subtraction.number2Configuratie voor het tweede getal bij aftreksommen.
subtraction.resultUitkomstgrenzen voor aftreksommen.
subtraction.avoidNegativeResultsFunctionele afleiding uit minimale uitkomst; voorkomt het genereren van negatieve aftrekuitkomsten.
balance.additionMinimumPercentageMinimumaandeel optelvragen bij gemengde oefeningen.
balance.subtractionMinimumPercentageMinimumaandeel aftrekvragen bij gemengde oefeningen.
balance.fillRemainingRandomlyBepaalt dat resterende vragen random worden ingevuld binnen alle geldige regels.
questionCount.defaultStandaard aantal vragen bij het starten van een run.
questionCount.minMinimum aantal vragen dat een leerling mag kiezen.
questionCount.maxMaximum aantal vragen dat een leerling mag kiezen.
questionCount.systemMaxAbsoluut platformmaximum voor gegenereerde vragen.
generationRules.limitOneOperandQuestionsBeperkt het aantal vragen waarin 1 als operand voorkomt.
generationRules.limitRoundTensQuestionsBeperkt het aantal vragen waarin een heel tiental als operand voorkomt.
runtimeOptions.allowMarkAsDunnoBepaalt of Geen idee beschikbaar is tijdens oefenen.
runtimeOptions.showAnswerAfterSubmitBepaalt of directe feedback zichtbaar wordt na beantwoording.

5.2 Vraag- en antwoordstate

De module moet per gegenereerde vraag voldoende state opslaan om vraagweergave, validatie, feedback, hervatten en live meekijken te ondersteunen. De generieke engine hoeft de betekenis van deze modulespecifieke state niet relationeel uit te splitsen.

{
"questionId": "run-question-0001",
"sequenceNumber": 1,
"operator": "+",
"operandA": 17,
"operandB": 9,
"correctAnswer": 26,
"submittedAnswer": null,
"isCorrect": null,
"isDunno": false,
"feedbackState": "Input",
"firstShownAtUtc": null,
"answeredAtUtc": null
}
JSON-padBetekenis
questionIdModulespecifieke vraagidentificatie binnen de runpayload.
sequenceNumberVolgnummer van de vraag binnen de run; moet overeenkomen met ExerciseRunProgress.SequenceNumber.
operator+ of -, gegenereerd binnen de gekozen operation mode.
operandAEerste operand van de som.
operandBTweede operand van de som.
correctAnswerCorrecte uitkomst zoals door de module berekend.
submittedAnswerLaatst bevestigde leerlinginvoer.
isCorrectModulespecifieke correctheidsuitkomst, uniform doorgezet naar ExerciseRunProgress.IsCorrect.
isDunnoMarkering dat de leerling Geen idee heeft gebruikt, uniform doorgezet naar ExerciseRunProgress.IsDunno.
feedbackStateWeergavestate: Input, Correct, Incorrect of Dunno.
firstShownAtUtcMoment waarop de vraag voor het eerst is getoond; uniform beschikbaar in ExerciseRunProgress.
answeredAtUtcMoment waarop de vraag server-side is verwerkt; uniform beschikbaar in ExerciseRunProgress.