5. Nieuwe oefening
Dit hoofdstuk beschrijft de flow waarmee een docent binnen een gekozen niveau/categorie een nieuwe concrete oefening toevoegt. De mockup bevat bewust twee opeenvolgende views: eerst de generieke modulekeuze en daarna de generieke configuratiecontainer die door een technische oefenmodule gevuld moet worden. De concrete inhoud van individuele oefenmodules wordt niet in dit hoofdstuk uitgewerkt, maar hoort thuis in de aparte documentatiestructuur voor Oefenmodules. Het generieke contract staat in Moduleplatform en contract; de eerste concrete rekenmodule staat in Optellen & Aftrekken (simpel).
5.1 Nieuwe oefening toevoegen
5.1.1 Schermafbeelding

5.1.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-DOC-03-01 |
| Schermnaam | Nieuwe oefening — Modulekeuze |
| Doelgroep / onderdeel | Docent |
| Bronbestand | oefenhub_docent_03_nieuwe_oefening_v1_22.html |
| Mockupversie | V1.22 |
| Screenshotbestand | oefenhub_docent_03_nieuwe_oefening_v1_22.png |
| Processtap / context | Docent voegt binnen een reeds gekozen niveau/categorie een nieuwe concrete oefening toe door eerst een technische module te selecteren. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en afgeleide architectuur-/databroncontext. |
| Opmerkingen | Deze view beschrijft alleen de generieke modulekeuze. De configuratiecontainer na Selecteer en configureer wordt apart beschreven in hoofdstuk 5.2. Concrete technische module-inhoud wordt apart onder Oefenmodules gedocumenteerd. |
| Route / URL-patroon | Functioneel routepatroon binnen docentcontext: Oefenaanbod > gekozen niveau > gekozen categorie > actie Nieuwe oefening. |
| Autorisatie / vereiste rol-context | Actieve docentcontext. Een actieve collaborator op het niveau mag deze inhoudelijke beheerflow gebruiken, maar krijgt hiermee geen toegang tot leerlingen, resultaten, geschiedenis of live meekijken. |
| Primair domeinobject / hoofdentiteit | Selectie van een ExerciseModules-record als basis voor een nieuw Exercises-record binnen de huidige categoriecontext. |
| Gerelateerde schermen / navigatie | 03_niveaus_en_categorieen, 04_niveau_categorie_modals, 05.2_oefening_configureren, Oefenmodules. |
| Data-karakter | Eerst databasegedreven modulelijst vanuit ExerciseModules; daarna strategy-/library-gedreven modulebeschrijving en configuratieflow. |
5.1.3 Functionele beschrijving
Deze view vormt de eerste stap van de flow Nieuwe oefening toevoegen. De docent bevindt zich al binnen een gekozen docentcontext, niveau en categorie. Vanuit die context kiest de docent welke technische module gebruikt wordt als basis voor de nieuwe concrete oefening.
Bovenaan staat een breadcrumb met Home > Oefenaanbod > Nieuwe oefening. Daarna volgt een introductieblok met de titel Nieuwe oefening toevoegen. De tekst maakt duidelijk dat de docent eerst een technische module kiest die door beheer beschikbaar is gesteld en daarna de configuratie opent om een concrete oefening samen te stellen voor leerlingen.
De hoofdsectie Selecteer een technische module bestaat uit twee functionele delen:
-
Beschikbare modules
Links staat een scrollbare lijst met technisch beschikbare modules. Per module worden minimaal de technische referentie en de functionele weergavenaam getoond. Deze lijst is administratief/databasegedreven en komt uitExerciseModules. -
Detailoverzicht geselecteerde module
Rechts staat de detailinformatie van de gekozen module. De mockup benoemt expliciet dat de beschrijving, beschikbare configuraties en verdere modal-/paginaopbouw via een strategy pattern uit de gekozen library worden opgehaald en niet uit de database komen.
De actie Selecteer en configureer is de overgang naar de tweede view in dit hoofdstuk. Functioneel betekent dit nog niet dat er al een concrete oefening is opgeslagen. De docent heeft op dat moment alleen een module gekozen en opent daarna de generieke configuratiecontainer waar de gekozen technische module zijn configuratie-UI in moet renderen.
Belangrijke uitgangspunten voor deze view:
- Alleen modules die administratief beschikbaar zijn gesteld, mogen in de lijst verschijnen.
- De modulelijst zelf is databasegedreven via
ExerciseModules. - De inhoudelijke beschrijving van de geselecteerde module komt uit de technische module-library.
- Een concrete oefening kan pas ontstaan nadat de configuratieview succesvol is ingevuld en opgeslagen.
- Bij opslaan vormt de gekozen module een verplichte verwijzing op het nieuwe
Exercises-record. - De pagina mag geen modulespecifieke invoervelden bevatten; die horen in de configuratiecontainer of in de aparte module-documentatie.
5.1.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-DOC-03-01-S01 | S | Pagina | Hoofdview voor het starten van de flow Nieuwe oefening. | Nieuwe oefening toevoegen | Generieke modulekeuze binnen docentcontext. | CreateExerciseModuleSelectionView |
| SCH-DOC-03-01-F01 | F | Breadcrumb | Huidige paginapositie binnen de docentflow. | Home > Oefenaanbod > Nieuwe oefening | Read-only navigatie-/oriëntatie-element. | CreateExerciseBreadcrumb |
| SCH-DOC-03-01-S02 | S | Introblok | Introductieblok met titel en begeleidende tekst. | Nieuwe oefening toevoegen | Legt de volgorde modulekeuze → configuratie uit. | CreateExerciseIntroSection |
| SCH-DOC-03-01-F02 | F | Introblok > titel | Hoofdtitel van de view. | Nieuwe oefening toevoegen | Read-only schermtekst. | CreateExerciseTitle |
| SCH-DOC-03-01-F03 | F | Introblok > tekst | Korte uitleg over het selecteren van een technische module. | Kies eerst een technische module ... | Read-only begeleidende tekst. | CreateExerciseIntroText |
| SCH-DOC-03-01-S03 | S | Hoofdsectie | Sectie waarin de technische module wordt geselecteerd. | Selecteer een technische module | Databasegedreven selectieblok. | ModuleSelectionSection |
| SCH-DOC-03-01-F04 | F | S03 > toelichting | Uitleg over de modulelijst en detailinformatie. | Links staat de lijst ... | Benoemt expliciet dat de beschrijving uit de library komt. | ModuleSelectionExplanation |
| SCH-DOC-03-01-T01 | T | Linkerkolom | Scrollbare lijst met beschikbare technische modules. | Beschikbare modules | Bevat technische referentie en displaynaam per regel. | AvailableModulesList |
| SCH-DOC-03-01-F05 | F | T01 > lijsttoelichting | Uitleg boven de lijst met modules. | Technische weergavenaam en referentie zoals door beheer beschikbaar gesteld. | Read-only toelichting. | AvailableModulesHelpText |
| SCH-DOC-03-01-A01 | A | T01 > module-item | Selecteert één technische module en ververst de detailweergave. | OptellenAftrekken_Simple_v1 / ... | Label verschilt per module. | SelectExerciseModuleAction |
| SCH-DOC-03-01-F06 | F | T01 > module-item | Technische referentie / codewaarde van de module. | OptellenAftrekken_Simple_v1 | Read-only waarde uit ExerciseModules. | ExerciseModuleCodeReferenceField |
| SCH-DOC-03-01-F07 | F | T01 > module-item | Functionele weergavenaam van de module. | Optellen & Aftrekken (simpel) | Read-only waarde uit ExerciseModules. | ExerciseModuleDisplayNameField |
| SCH-DOC-03-01-S04 | S | Rechterkolom | Detailweergave van de geselecteerde technische module. | Detailoverzicht geselecteerde module | Wordt gevuld op basis van de geselecteerde module. | SelectedModuleDetailSection |
| SCH-DOC-03-01-F08 | F | S04 > toelichting | Tekst die aangeeft wanneer de detailweergave gevuld wordt. | Dit detailoverzicht wordt gevuld zodra een docent een module selecteert. | Read-only helpertekst. | SelectedModuleDetailHelpText |
| SCH-DOC-03-01-F09 | F | S04 > detailkaart | Titel van de geselecteerde module. | Optellen & Aftrekken (simpel) | Runtime waarde bij modulekeuze. | SelectedModuleTitle |
| SCH-DOC-03-01-F10 | F | S04 > detailkaart | Inhoudelijke modulebeschrijving. | Deze module is in staat om sommen te genereren ... | Komt uit de technische module-library, niet uit de database. | SelectedModuleDescription |
| SCH-DOC-03-01-M01 | M | S04 > detailkaart | Architectuurtoelichting over herkomst van beschrijving en configuratie. | De concrete beschrijving ... komen dus niet uit de database. | Informatieve melding. | ModuleStrategyExplanationMessage |
| SCH-DOC-03-01-B01 | B | S04 > detailkaart | Start de configuratieview voor de gekozen module. | Selecteer en configureer | Opent hoofdstuk 5.2 / ModuleConfigurationView. | OpenModuleConfigurationButton |
5.1.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-DOC-03-01-F01 | Breadcrumb | Home > Oefenaanbod > Nieuwe oefening | CreateExerciseBreadcrumb | Geen persistente domeinbron; route-/navigatiecontext | Afgeleid uit huidige docentroute en geselecteerde context | Navigatietekst | Nee | Moet overeenkomen met de actuele routecontext. |
| SCH-DOC-03-01-S03 | Hoofdsectie | Selecteer een technische module | ModuleSelectionSection | Geen zelfstandige tabel; UI-container boven op ExerciseModules-selectie | Runtime viewmodel voor modulekeuze | Section / container | Nee | Alleen beschikbaar binnen actieve docent- of collaboratorcontext. |
| SCH-DOC-03-01-T01 | Linkerkolom | Beschikbare modules | AvailableModulesList | ExerciseModules | Query op administratief beschikbare modules voor docentgebruik; gefilterd op actieve/beschikbare records | Collectie | Nee direct; selectie per regel | Alleen inzetbare modules mogen kiesbaar zijn. Test-only modules zijn alleen zichtbaar wanneer de rolcontext dat toestaat. |
| SCH-DOC-03-01-A01 | Module-item | OptellenAftrekken_Simple_v1 / ... | SelectExerciseModuleAction | Geen persistente zelfstandige databron; selectie verwijst naar bestaand ExerciseModules-record | Tijdelijke UI-state met gekozen ExerciseModuleId / CodeReference | Action / selection state | Ja | Selectie wordt pas persistent bij opslaan van de nieuwe oefening. |
| SCH-DOC-03-01-F06 | Module-item | OptellenAftrekken_Simple_v1 | ExerciseModuleCodeReferenceField | ExerciseModules.CodeReference | Uitleeswaarde uit het geselecteerde module-record | String | Nee | Stabiele technische referentie voor strategy/library-resolutie. |
| SCH-DOC-03-01-F07 | Module-item | Optellen & Aftrekken (simpel) | ExerciseModuleDisplayNameField | ExerciseModules.DisplayName | Uitleeswaarde uit het geselecteerde module-record | String | Nee | Functionele naam voor docentweergave. |
| SCH-DOC-03-01-F09 | Detailkaart | Optellen & Aftrekken (simpel) | SelectedModuleTitle | ExerciseModules.DisplayName | Afgeleid uit huidige module-selectie | String | Nee | Alleen gevuld wanneer één module geselecteerd is. |
| SCH-DOC-03-01-F10 | Detailkaart | Modulebeschrijving | SelectedModuleDescription | Geen primaire databasebron; technische module-library / strategy-component | Runtime gerenderde beschrijvingscomponent van de gekozen module | Rich text / component-output | Nee | Beschrijving moet via de module-interface opgehaald kunnen worden; database bevat alleen de modulemetadata. |
| SCH-DOC-03-01-M01 | Detailkaart | Strategy-toelichting | ModuleStrategyExplanationMessage | Geen persistente domeinbron; schermuitleg / code-content | Vaste toelichting in de mockup / documentatiecontext | Informatiemelding | Nee | Moet het onderscheid tussen databasegedreven modulelijst en librarygedreven module-inhoud verduidelijken. |
| SCH-DOC-03-01-B01 | Detailkaart | Selecteer en configureer | OpenModuleConfigurationButton | Geen persistente databron | Runtime command op basis van geselecteerde module | Action / command | Ja | Alleen bruikbaar wanneer een geldige module geselecteerd is; opent de configuratiecontainer zonder direct op te slaan. |
5.1.6 Schermtrace naar SRS en acceptatiecriteria
De onderstaande tabel legt per schermrequirement de koppeling naar het centrale schermrequirements-trace-register, SRS-requirements en acceptatiecriteria vast. De normatieve requirementtekst staat in de SRS; dit schermdocument beschrijft alleen de lokale schermcontext.
Deze tabel bevat alleen schermtraceability. De normatieve requirementtekst en acceptatiecriteria staan centraal in de SRS.
| Schermrequirement | Dekt | Schermcontext |
|---|---|---|
REQ-SCH-DOC-03-01-01 | SRS-TCH-001 AC-TCH-001 | Vanuit een gekozen categorie een view tonen waarmee een docent de flow voor een nieuwe concrete oefening kan starten |
REQ-SCH-DOC-03-01-02 | SRS-TCH-001 AC-TCH-001 | Eerst een databasegedreven lijst van administratief beschikbare technische modules tonen |
REQ-SCH-DOC-03-01-03 | SRS-TCH-001 AC-TCH-001 | Per module in de lijst minimaal technische referentie en functionele weergavenaam zichtbaar zijn |
REQ-SCH-DOC-03-01-04 | SRS-TCH-001 AC-TCH-001 | Alleen modules die functioneel beschikbaar zijn voor de actieve docentcontext mogen kiesbaar zijn |
REQ-SCH-DOC-03-01-05 | SRS-TCH-001 AC-TCH-001 | Na selectie van een module het systeem detailinformatie over die module tonen voordat de docent de configuratie opent |
REQ-SCH-DOC-03-01-06 | SRS-TCH-001 AC-TCH-001 | De modulebeschrijving runtime vanuit de bijbehorende technische module/library geladen kunnen worden en geen als primaire inhoud uit de database komen |
REQ-SCH-DOC-03-01-07 | SRS-TCH-001 AC-TCH-001 | De database voor modulekeuze minimaal de administratieve modulemetadata leveren die nodig is om een technische module te identificeren en beschikbaar te stellen |
REQ-SCH-DOC-03-01-08 | SRS-TCH-001 AC-TCH-001 | De actie Selecteer en configureer de gekozen modulecontext doorgeven aan de configuratieview zonder al een concrete oefening definitief op te slaan |
REQ-SCH-DOC-03-01-09 | SRS-TCH-001 AC-TCH-001 | Een concrete oefening mag pas worden aangemaakt nadat de configuratieview succesvol is gevalideerd en opgeslagen |
REQ-SCH-DOC-03-01-10 | SRS-AUTH-001 SRS-LIVE-002 AC-AUTH-001 AC-LIVE-002 | Een actieve collaborator op het niveau mag deze flow gebruiken voor inhoudelijke niveauconfiguratie, maar krijgt via deze view geen toegang tot leerlingen, resultaten, geschiedenis of live meekijken |
5.2 Oefening configureren
Deze view wordt bereikt door in hoofdstuk 5.1 op Selecteer en configureer te klikken. In de mockup is de technische moduleconfiguratie bewust vervangen door de tekst {Placeholder voor technische oefen modules}. Daarmee documenteert dit hoofdstuk vooral de generieke container, de vereiste module-interface en de uniforme opslag-/validatieregels; concrete modulevelden worden per technische oefenmodule apart uitgewerkt onder Oefenmodules.
5.2.1 Schermafbeelding

5.2.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-DOC-03-02 |
| Schermnaam | Nieuwe oefening — Module configureren |
| Doelgroep / onderdeel | Docent |
| Bronbestand | oefenhub_docent_03_nieuwe_oefening_v1_22.html |
| Mockupversie | V1.22 |
| Screenshotbestand | oefenhub_docent_03_nieuwe_oefening_v1_22_knop_selecteer_en_configureer.png |
| Processtap / context | Docent heeft een technische module geselecteerd en opent de generieke configuratiecontainer waarin de gekozen module zijn eigen configuratie-UI moet renderen. |
| Documentatiestatus | Uitgewerkt als generieke moduleconfiguratiecontainer; concrete module-inhoud wordt apart uitgewerkt onder Oefenmodules. |
| Opmerkingen | De placeholder is bewust; dit scherm documenteert niet de inhoud van één specifieke module, maar het uniforme contract waaraan alle technische oefenmodules moeten voldoen. |
| Route / URL-patroon | Functioneel dezelfde flow als 5.1: Oefenaanbod > gekozen niveau > gekozen categorie > Nieuwe oefening > Selecteer en configureer. |
| Autorisatie / vereiste rol-context | Actieve docentcontext of actieve collaborator met bewerkrechten op het geselecteerde niveau. |
| Primair domeinobject / hoofdentiteit | Nieuwe Exercises-createflow met gekozen ExerciseModules-record en nog niet opgeslagen modulespecifieke configuratiepayload. |
| Gerelateerde schermen / navigatie | 05.1_nieuwe_oefening_toevoegen, Oefenmodules, 03_niveaus_en_categorieen. |
| Data-karakter | Generieke container met strategy-/librarygedreven inhoud; opslag via centrale generieke oefeningservice naar Exercises en koppeling via TeacherLevelCategoryExercises. |
5.2.3 Functionele beschrijving
Na het kiezen van een technische module opent de view Module configureren. De modulekeuzesectie wordt verborgen en de docent ziet een grote configuratiecontainer met rechtsboven de actie Terug naar overzicht. In het midden staat binnen de huidige scope alleen de tekst {Placeholder voor technische oefen modules}.
Deze opzet is bewust gekozen omdat de configuratie-inhoud niet door dit generieke scherm zelf bepaald wordt. Het generieke scherm levert alleen:
- de pagina-/containerstructuur;
- de gekozen modulecontext;
- de terugactie naar de modulekeuze;
- de plek waar de technische module zijn configuratie-UI rendert;
- de centrale opslag- en validatieafhandeling rond een nieuwe concrete oefening.
De inhoudelijke afspraken voor technische oefenmodules, zoals het modulecontract, de verdeling tussen generieke engine en modulelogica, de JSON-/payloadopbouw en de documentatie van concrete modules, worden centraal vastgelegd in Oefenmodules. Dit hoofdstuk verwijst daar bewust naar, zodat de docentflow zelf generiek blijft en module-specifieke details niet door de schermdocumentatie van de docentomgeving heen gaan lopen.
Elke technische oefenmodule moet zelf minimaal twee typen informatie kunnen leveren:
-
Module-informatie voor de selectieview
Dit betreft de titel, korte uitleg en/of beschrijvingscomponent die in hoofdstuk 5.1 rechts in het detailoverzicht wordt getoond. -
Configuratiecomponent voor deze view
Dit betreft de volledige UI waarin de docent de oefening configureert. Deze component levert modulespecifieke velden, helperteksten, validatiefeedback en een moduleconfiguratie-DTO/payload.
De generieke applicatielaag blijft verantwoordelijk voor het opslaan van de concrete oefening. De technische module mag dus bepalen welke configuratievelden nodig zijn en hoe deze lokaal gevalideerd worden, maar de uiteindelijke opslag verloopt uniform. Functioneel betekent dit dat de module een gevalideerde configuratiepayload teruggeeft aan de centrale oefeningservice, waarna de applicatie:
- een nieuw
Exercises-record aanmaakt; - de gekozen
ExerciseModules-verwijzing vastlegt; - de generieke oefengegevens vastlegt, zoals naam, icoon en status;
- de modulespecifieke configuratiepayload opslaat;
- de oefening koppelt aan de huidige categoriecontext;
- audit-/historie-informatie vastlegt voor de aanmaak.
Een nieuw aangemaakte oefening start functioneel in In onderhoud. Leerlingen mogen de oefening pas zien wanneer deze expliciet actief is gemaakt. Dit voorkomt dat een half geconfigureerde of nog niet geteste oefening direct beschikbaar komt voor normale leerlingruns.
De technische richting sluit aan bij een strategy-/plugin-achtige modulearchitectuur. De database bevat de administratieve modulemetadata en de verwijzing naar de gekozen module, maar niet de volledige UI-opbouw van iedere module. De runtime koppelt op basis van de technische referentie of module-id naar de juiste strategy/library. Die module levert vervolgens beschrijving, configuratiecomponent, configuratie-DTO, validatie en waar nodig module-specifieke conversie naar de generieke opslagpayload.
De placeholder in deze mockup moet daarom niet als lege functionaliteit worden gelezen, maar als een expliciete markering dat de concrete moduleconfiguratie een eigen documentatie- en implementatielaag krijgt onder Oefenmodules.
5.2.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-DOC-03-02-S01 | S | Configuratieview | Generieke view/container voor het configureren van de gekozen technische module. | Module configureren | Wordt zichtbaar na Selecteer en configureer. | ModuleConfigurationView |
| SCH-DOC-03-02-F01 | F | Configuratieview > titel | Titel van de configuratiecontainer. | Module configureren | Read-only containertekst. | ModuleConfigurationTitle |
| SCH-DOC-03-02-B01 | B | Configuratieview > kopactie | Sluit de configuratiecontainer en toont de modulekeuze opnieuw. | Terug naar overzicht | Annuleert nog niet opgeslagen configuratie. | ReturnToModuleSelectionButton |
| SCH-DOC-03-02-S02 | S | Configuratieview > body | Inhoudsgebied waar de technische module zijn configuratiecomponent moet renderen. | {Placeholder voor technische oefen modules} | Placeholder voor moduleconfiguraties die onder de oefenmodule-documentatie worden uitgewerkt. | TechnicalModuleConfigurationHost |
| SCH-DOC-03-02-M01 | M | S02 > placeholdertekst | Informatieve placeholdertekst in plaats van concrete modulevelden. | {Placeholder voor technische oefen modules} | Geeft aan dat concrete module-UI onder Oefenmodules wordt gedocumenteerd. | TechnicalModulePlaceholderMessage |
| SCH-DOC-03-02-FORM01 | FORM | S02 > toekomstige modulecomponent | Formuliercontext die door de gekozen technische module geleverd wordt. | Afhankelijk van module | Niet zichtbaar in huidige mockup; contractueel wel vereist. | ModuleProvidedConfigurationForm |
| SCH-DOC-03-02-F02 | F | FORM01 > toekomstige generieke oefenidentiteit | Generieke basisgegevens die onderdeel van elke concrete oefening moeten zijn. | Naam / icoon / status | Concrete positie kan per module-UI verschillen, maar opslag blijft uniform. | GenericExerciseIdentityFields |
| SCH-DOC-03-02-F03 | F | FORM01 > toekomstige modulepayload | Modulespecifieke configuratiewaarden die door de module worden verzameld. | Afhankelijk van module | Wordt als DTO/payload teruggegeven aan centrale opslagflow. | ModuleSpecificConfigurationPayload |
| SCH-DOC-03-02-M02 | M | FORM01 > toekomstige validatiefeedback | Modulespecifieke validatie- en foutmeldingen. | Afhankelijk van module | Module valideert inhoudelijk; shell verwerkt resultaat uniform. | ModuleValidationFeedback |
| SCH-DOC-03-02-A01 | A | FORM01 > toekomstige submitactie | Slaat de nieuwe concrete oefening op via de centrale generieke opslagactie. | Opslaan / toevoegen | Niet zichtbaar in placeholdermockup, maar vereist voor iedere concrete moduleconfiguratie. | SaveConfiguredExerciseAction |
5.2.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-DOC-03-02-S01 | Configuratieview | Module configureren | ModuleConfigurationView | Geen zelfstandige tabel; runtime view bovenop gekozen ExerciseModules-record en nieuwe Exercises-createflow | UI-state na klik op Selecteer en configureer met geselecteerde modulecontext | View state / container | Nee | Alleen openen wanneer één geldige module geselecteerd is. |
| SCH-DOC-03-02-B01 | Kopactie | Terug naar overzicht | ReturnToModuleSelectionButton | Geen persistente databron | Runtime UI-command | Action / command | Ja | Sluit de configuratiecontainer zonder persistente wijziging en toont de modulekeuze opnieuw. |
| SCH-DOC-03-02-S02 | Body | {Placeholder voor technische oefen modules} | TechnicalModuleConfigurationHost | Geen vaste domeintabel; hostcontainer voor technische modulecomponent | Strategy-/libraryresolutie op basis van gekozen ExerciseModules.CodeReference of vergelijkbare technische sleutel | Component host | Nee | Host moet modulecomponent dynamisch kunnen laden; bij ontbreken/fout moet een fouttoestand getoond kunnen worden. |
| SCH-DOC-03-02-M01 | Body | {Placeholder voor technische oefen modules} | TechnicalModulePlaceholderMessage | Geen persistente domeinbron; tijdelijke mockuptekst | Statische placeholder in HTML/mockup | Informatiemelding | Nee | Mag in productie vervangen worden door modulecomponent of fallbackmelding; concrete modulewerking wordt beschreven onder Oefenmodules. |
| SCH-DOC-03-02-FORM01 | Toekomstige modulecomponent | Afhankelijk van module | ModuleProvidedConfigurationForm | Technische module-library; geen generiek relationeel veldschema | Door module gerenderde configuratiecomponent en configuratie-DTO | Form object / component-output | Ja | Elke module moet zijn eigen invoer kunnen verzamelen en valideren binnen het uniforme contract zoals centraal beschreven onder Oefenmodules. |
| SCH-DOC-03-02-F02 | Generieke oefenidentiteit | Naam / icoon / status | GenericExerciseIdentityFields | Exercises | Directe docentinput of defaults binnen generieke opslagflow | Samengesteld object | Ja | Elke concrete oefening moet minimaal herkenbare generieke identiteit krijgen; nieuwe oefening start standaard in onderhoud. |
| SCH-DOC-03-02-F03 | Modulepayload | Afhankelijk van module | ModuleSpecificConfigurationPayload | Exercises configuratiepayloadveld | Gevalideerde DTO/payload afkomstig uit de gekozen module | JSON/base64 payload / object | Ja | Payload is module-specifiek, uitbreidbaar en wordt generiek opgeslagen; validatie gebeurt module-specifiek. |
| SCH-DOC-03-02-M02 | Validatiefeedback | Afhankelijk van module | ModuleValidationFeedback | Geen persistente bron voor normale feedback; validatieresultaat uit module | Resultaat van modulespecifieke validatie | Validatieresultaat / melding | Nee | Opslaan mag niet doorgaan wanneer de module validatiefouten teruggeeft. |
| SCH-DOC-03-02-A01 | Submitactie | Opslaan / toevoegen | SaveConfiguredExerciseAction | Exercises + TeacherLevelCategoryExercises + ExerciseHistory / auditlaag + gekozen ExerciseModules | Centrale applicatieservice ontvangt generieke oefengegevens en gevalideerde modulepayload | Action / command | Ja | Opslag verloopt uniform; module levert configuratie en validatie, niet de persistente opslagafhandeling zelf. |
5.2.6 Schermtrace naar SRS en acceptatiecriteria
De onderstaande tabel legt per schermrequirement de koppeling naar het centrale schermrequirements-trace-register, SRS-requirements en acceptatiecriteria vast. De normatieve requirementtekst staat in de SRS; dit schermdocument beschrijft alleen de lokale schermcontext.
Deze tabel bevat alleen schermtraceability. De normatieve requirementtekst en acceptatiecriteria staan centraal in de SRS.
| Schermrequirement | Dekt | Schermcontext |
|---|---|---|
REQ-SCH-DOC-03-02-01 | SRS-TCH-001 AC-TCH-001 | Na klik op Selecteer en configureer een generieke configuratieview tonen voor de gekozen technische module |
REQ-SCH-DOC-03-02-02 | SRS-TCH-001 AC-TCH-001 | De configuratieview de modulekeuze uit hoofdstuk 5.1 behouden als runtime context voor verdere configuratie en opslag |
REQ-SCH-DOC-03-02-03 | SRS-TCH-001 AC-TCH-001 | De configuratieview een uniforme host/container bieden waarin technische oefenmodules hun eigen configuratiecomponent kunnen renderen |
REQ-SCH-DOC-03-02-04 | SRS-TCH-001 AC-TCH-001 | Technische module: minimaal module-informatie kunnen leveren voor de selectie-/detailview uit hoofdstuk 5.1 |
REQ-SCH-DOC-03-02-05 | SRS-TCH-001 AC-TCH-001 | Technische module: minimaal een configuratiecomponent kunnen leveren voor de configuratieview uit hoofdstuk 5.2 |
REQ-SCH-DOC-03-02-06 | SRS-TCH-001 AC-TCH-001 | Technische module: zijn configuratie kunnen omzetten naar een gevalideerde configuratie-DTO of payload die generiek opgeslagen kan worden |
REQ-SCH-DOC-03-02-07 | SRS-TCH-001 AC-TCH-001 | Modulespecifieke validatie door de technische module uitgevoerd kunnen worden, terwijl de generieke applicatielaag bepaalt of opslaan wel of niet doorgaat |
REQ-SCH-DOC-03-02-08 | SRS-TCH-001 AC-TCH-001 | Opslaan van een nieuwe oefening via één centrale generieke opslagactie verlopen, ongeacht welke technische module gekozen is |
REQ-SCH-DOC-03-02-09 | SRS-TCH-001 AC-TCH-001 | Opslaan: een nieuw Exercises-record aanmaken met een verplichte verwijzing naar precies één ExerciseModules-record |
REQ-SCH-DOC-03-02-10 | SRS-TCH-001 AC-TCH-001 | Opslaan: de modulespecifieke configuratiepayload opslaan zonder voor iedere module een apart relationeel configuratieschema te vereisen |
REQ-SCH-DOC-03-02-11 | SRS-TCH-008 AC-TCH-008 | Opslaan: de nieuwe oefening koppelen aan de actuele niveau-/categoriecontext via de daarvoor bestemde koppelingstabel |
REQ-SCH-DOC-03-02-12 | SRS-TCH-008 AC-TCH-008 | Een nieuw aangemaakte oefening standaard de status In onderhoud krijgen en geen direct zichtbaar zijn voor leerlingen |
REQ-SCH-DOC-03-02-13 | SRS-NFR-AUD-001 SRS-TCH-001 AC-NFR-AUD-001 AC-TCH-001 | Aanmaak en latere wijzigingen van concrete oefeningen auditbaar vastleggen, inclusief uitvoerende gebruiker en wijzigingsmoment |
REQ-SCH-DOC-03-02-14 | SRS-NFR-AUD-001 SRS-TCH-001 AC-NFR-AUD-001 AC-TCH-001 | De technische module mag de inhoud en vorm van de configuratie-UI bepalen, maar mag de centrale opslag-, audit- en koppelingsregels niet omzeilen |
REQ-SCH-DOC-03-02-15 | SRS-TCH-001 AC-TCH-001 | Wanneer een technische module niet geladen kan worden, het systeem een duidelijke fouttoestand kunnen tonen en opslaan blokkeren |
REQ-SCH-DOC-03-02-16 | SRS-TCH-001 AC-TCH-001 | De actie Terug naar overzicht de configuratieview sluiten en terugkeren naar de modulekeuze zonder onbedoelde persistente wijziging |
REQ-SCH-DOC-03-02-17 | SRS-TCH-001 AC-TCH-001 | De moduleconfiguratie uitbreidbaar blijven zodat latere moduleversies nieuwe optionele configuratievelden kunnen toevoegen zonder bestaande configuraties te breken |
REQ-SCH-DOC-03-02-18 | SRS-TCH-001 AC-TCH-001 | Concrete modulevelden, defaults, validatieregels en renderdetails per technische oefenmodule apart gedocumenteerd kunnen worden onder Oefenmodules |
5.3 Technische koppeling
Voor technische uitwerking zijn vooral relevant:
- 05 Autorisatie, policies en server-side contextcontrole voor server-side controle op docentcontext, niveau, categorie en beheerbevoegdheid.
- 08 Oefencatalogus, niveaus, categorieën, oefeningen en modules voor oefenmetadata, status, categorieplaatsing en beheerbare configuratie.
- 09 Oefenmodulecontract en dynamische module-integratie voor modulekeuze, configuratieschema en modulepayloads.
- Oefenmodules — moduleplatform en contract voor generieke moduleverantwoordelijkheden, dossierstructuur en modulecontractcontext.
- Oefenmodule — Optellen & Aftrekken (simpel) als eerste concrete invulling van de placeholderconfiguratie in deze flow.
- 10 Oefenruns, voortgang, resultaten, statistieken en PDF-brondata voor de scheiding tussen oefeningconfiguratie, testruns en productie-runs.
- 17 Readmodels, tellers, badges, caching en materialisatie voor afgeleide aantallen en statusindicatoren na aanmaak of wijziging.
- 24 Frontend, Blazor, routing, state en componentopbouw voor configuratiestappen, wizardstate en modulecomponenten.