Skip to main content

6. Technisch ontwerp

Dit hoofdstuk beschrijft de module-specifieke technische invulling. De centrale technische regels voor module-integratie, projectgrenzen, payloadopslag, frontendopbouw en tests blijven vastgelegd in het Technisch Ontwerp.

6.1 Centrale technische koppelingen

OnderwerpCentrale bron
Oefencatalogus, niveaus, categorieën en modulesTechnisch Ontwerp hoofdstuk 08
Oefenmodulecontract en dynamische module-integratieTechnisch Ontwerp hoofdstuk 09
Oefenruns, voortgang en resultatenTechnisch Ontwerp hoofdstuk 10
Frontend, Blazor, routing, state en componentopbouwTechnisch Ontwerp hoofdstuk 24

6.2 Modulecontract

ContractonderdeelVerwacht gedrag voor deze module
GetModuleDescriptionComponent()Levert de beschrijving die docenten helpt begrijpen wat de module doet voordat zij deze kiezen.
GetModuleConfigureComponent(DefaultModuleConfig moduleConfig)Levert de configuratiecomponent voor nieuwe oefeningen, inclusief generieke basisvelden die in de moduleflow zichtbaar zijn en modulespecifieke configuratievelden.
GetModuleEditConfigureComponent(ModuleEditConfigureContext context)Levert dezelfde configuratie in bewerkcontext, gevuld vanuit de opgeslagen modulepayload van een bestaande oefening.
GenerateModuleExercises(GenerateModuleExercisesContext context)Genereert een set vragen die voldoet aan operation mode, getalconfiguraties, uitkomstgrenzen, balansregels, vraagcount en generatiebeperkingen.
ShowModuleQuestionComponent(ShowModuleQuestionContext context)Renderet de huidige vraag, inputstate, feedbackstate en optionele Geen idee-actie op basis van de vraagstate en runtimeopties.

De module moet deterministisch genoeg zijn om een opgeslagen run opnieuw te kunnen tonen vanuit de opgeslagen vraagstate. De module mag na het genereren van een run niet afhankelijk zijn van een opnieuw uitgevoerde randomgeneratie om bestaande vragen te reconstrueren.

6.3 Module-identiteit

VeldWaarde
Documentatiedatum24-04-2026
DocumentatiestatusUitgewerkt op basis van HTML-mockups, PNG-screenshots, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification, database-informatie en ondersteunende modulearchitectuur.
ModulefamilieRekenen
ModulefunctieEenvoudige optel- en aftreksommen met twee operanden
Verwachte administratieve modulebronExerciseModules
Verwachte technische referentieOptellenAftrekken_Simple_v1
Verwachte schema-identificatieschemaVersion = 0.9
Generieke opslagvorm configuratieExercises.ModuleConfigurationJsonBase64
Generieke opslagvorm runvragenExerciseRuns.QuestionDataJsonBase64 en ExerciseRunProgress.QuestionStateJsonBase64
Module-entrypointsGetModuleDescriptionComponent, GetModuleConfigureComponent, GetModuleEditConfigureComponent, GenerateModuleExercises, ShowModuleQuestionComponent

De module wordt niet runtime ontdekt. De module moet administratief beschikbaar zijn via ExerciseModules. De technische implementatie wordt pas aangesproken wanneer de generieke applicatie op basis van ExerciseModules.CodeReference en het strategy pattern de juiste modulecomponent nodig heeft.

Voor deze module geldt dat de betekenis van de configuratievelden modulespecifiek is. OefenHub slaat uniforme platformdata relationeel op, maar slaat de interne configuratie en vraagtoestand van deze module op als JSON/base64-payload. Alleen gegevens die platformbreed querybaar, autorisatiegevoelig, historisch verplicht of domeinbreed herbruikbaar zijn, horen relationeel buiten de modulepayload te staan.