12. Modules
12.0 Schermbrede uitgangspunten
Deze pagina beschrijft het centrale beheer van technische oefenmodules. Een technische module is de administratieve registratie van een moduleversie die door concrete oefeningen gebruikt kan worden. De pagina beheert dus de module-identiteit, beschikbaarheid, testzichtbaarheid, migratie en historie op moduleniveau.
Deze pagina beheert niet de inhoud van individuele oefenmodules. Module-specifieke configuratie, vraag- en antwoordstructuren, oefeniconen, docentgebonden oefennamen en de JSON/base64-configuratiepayload van concrete oefeningen blijven onderdeel van het oefen- en docentdomein. Wanneer een technische module inhoudelijk wordt gebruikt, wordt de juiste implementatie via ExerciseModules.CodeReference en het strategy pattern aangesproken.
Voor alle views in dit document geldt:
- header, beheerdernavigatie, berichteningang, profielmenu en footer vallen buiten scope;
- zichtbare mockupwaarden zoals namen, aantallen, datums, versies en badges zijn voorbeelddata;
- server-side autorisatie op actieve beheerdercontext is verplicht;
- frontend-zichtbaarheid is geen beveiliging;
- wijzigen, uitschakelen en migreren vereisen server-side validatie;
- migraties wijzigen actieve concrete oefeningen vooruit, maar herschrijven historische exercise runs, resultaten, geschiedenis en gedeelde oefeningen niet;
- mutaties worden auditbaar vastgelegd met actor, tijdstip en, waar vereist, reden.
12.1 Landingspagina
12.1.1 Schermafbeelding

12.1.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-BEH-11-01 |
| Schermnaam | Modules — Landingspagina |
| Doelgroep / onderdeel | Beheerder |
| Bronbestand | oefenhub_beheerder_12_modules_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | oefenhub_beheerder_12_modules_v1_4.png |
| Processtap / context | Beheerder opent via Content > Modules beheren het centrale moduleoverzicht en selecteert daarna één technische module voor detailbeheer. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | De pagina beheert technische moduleversies. Concrete oefenconfiguraties van docenten worden hier niet aangepast. |
| Route / URL-patroon | Functioneel routepatroon: /beheer/content/modules of gelijkwaardige route binnen beheer > content > modules. |
| Autorisatie / vereiste rol-context | Actieve beheerdercontext. |
| Primair domeinobject / hoofdentiteit | ExerciseModules |
| Gerelateerde schermen / navigatie | Categorieën, Docent ondersteuning, oefenmodule-overzicht, concrete oefenconfiguratie bij docenten, modulebeheer-tabs. |
| Data-karakter | Samengesteld read model over technische moduleversies, gebruiksimpact en recente modulehistorie. |
12.1.3 Functionele beschrijving
De landingspagina is het centrale selectiescherm voor technische oefenmodules. De beheerder zoekt of bladert door bestaande moduleversies, selecteert één module en bekijkt rechts een compacte read-only samenvatting. Pas daarna wordt via Open beheer de verdiepende beheerweergave voor die module geopend.
De lijst toont module-identiteit en inzetbaarheid, zoals weergavenaam, technische code reference, versie, actiefstatus, testzichtbaarheid, aantal actieve docenten en aantal actieve oefenkoppelingen. Deze waarden zijn dynamisch en worden afgeleid uit ExerciseModules, concrete oefeningen en gekoppelde docentcontexten. De zichtbare mockupwaarden, zoals Basisrekenen, 2.3.1, 12 actieve docenten en 46 oefenkoppelingen, zijn voorbeelddata.
De knop Nieuwe module start de registratie van een nieuwe technische moduleversie. Een nieuwe module is geen runtime-discovery van code, maar een administratieve registratie van een moduleversie die technisch al beschikbaar moet zijn. Bij registratie zijn minimaal DisplayName, CodeReference, Version, IsActive en IsVisibleForTesting relevant. De combinatie CodeReference + Version moet uniek blijven. Waar technisch beschikbaar moet een eenvoudige connectiviteits- of healthcheck op de strategy-interface uitgevoerd kunnen worden voordat de module beschikbaar wordt gemaakt.
De landingspagina wijzigt zelf geen concrete oefeningen. De actie Selecteer activeert alleen de rechter samenvatting. Open beheer is pas functioneel bruikbaar wanneer exact één module is geselecteerd. Bij geen resultaten toont de pagina een leegstaat. Bij een fout in het ophalen van modulegegevens blijft er geen gedeeltelijke mutatie mogelijk; de beheerder krijgt een foutmelding en kan opnieuw laden of later opnieuw proberen.
12.1.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-BEH-11-01-S01 | S | Hero / introductie | Introductie van het modulebeheerdomein. | Modules beheren | Beschrijft dat concrete docent-oefenconfiguraties buiten deze pagina vallen. | ModuleManagementHeroSection |
| SCH-BEH-11-01-S02 | S | Overzicht | Linkerpaneel met modulelijst, zoekveld en nieuwe-moduleactie. | Overzicht | Startpunt van de tweestapsflow: selecteren en daarna beheren. | ModuleOverviewSection |
| SCH-BEH-11-01-B01 | B | Nieuwe module | Start registratie van een nieuwe technische moduleversie. | Nieuwe module | Alleen voor technisch beschikbare modules; geen vrije runtime-discovery. | CreateExerciseModuleButton |
| SCH-BEH-11-01-F01 | F | Zoek module | Vrij zoekveld voor filtering op moduleweergavenaam, code reference of versie. | Zoek module | De waarde is niet persistent. | ModuleSearchInput |
| SCH-BEH-11-01-T01 | T | Modules overzicht | Selecteerbare lijst met modulekaarten. | Modules | Toont module-identiteit, statusbadges en impacttellers. | ExerciseModuleCardList |
| SCH-BEH-11-01-A01 | A | Selecteer | Selecteert één module als actieve context voor de samenvatting rechts. | Selecteer | Geen mutatie; alleen contextselectie. | SelectExerciseModuleAction |
| SCH-BEH-11-01-S03 | S | Geselecteerde module | Rechterpaneel met read-only modulesamenvatting. | Geselecteerde module | Toont identiteit, impact, audit en recente wijzigingen. | SelectedExerciseModuleSummarySection |
| SCH-BEH-11-01-F02 | F | Weergave naam | Read-only naam van de geselecteerde module. | Weergave naam | Dynamische waarde uit ExerciseModules.DisplayName. | SelectedModuleDisplayNameValue |
| SCH-BEH-11-01-F03 | F | Versie | Read-only versie van de geselecteerde module. | Versie | Dynamische waarde uit ExerciseModules.Version. | SelectedModuleVersionValue |
| SCH-BEH-11-01-F04 | F | Status | Read-only actiefstatus van de geselecteerde module. | Status | Afgeleid uit ExerciseModules.IsActive. | SelectedModuleStatusValue |
| SCH-BEH-11-01-F05 | F | Zichtbaar voor testdocenten | Read-only testzichtbaarheid. | Zichtbaar voor testdocenten | Afgeleid uit ExerciseModules.IsVisibleForTesting. | SelectedModuleTestVisibilityValue |
| SCH-BEH-11-01-F06 | F | Actieve docenten | Telling van docenten met actieve concrete oefeningen die deze module gebruiken. | Actieve docenten | Dynamische impactwaarde. | ActiveTeachersUsingModuleCount |
| SCH-BEH-11-01-F07 | F | Actieve oefenkoppelingen | Telling van actieve concrete oefeningen die naar deze moduleversie verwijzen. | Actieve oefenkoppelingen | Belangrijk voor uitschakelen en migratie. | ActiveExerciseLinksUsingModuleCount |
| SCH-BEH-11-01-F08 | F | Aangemaakt door | Auditweergave van aanmaakactor en datum. | Aangemaakt door | Samengestelde weergave uit module-auditvelden en Users. | ModuleCreatedAuditValue |
| SCH-BEH-11-01-F09 | F | Laatst gewijzigd | Auditweergave van laatste wijziging. | Laatst gewijzigd | Samengestelde weergave uit module-auditvelden en Users. | ModuleUpdatedAuditValue |
| SCH-BEH-11-01-T02 | T | Recente wijzigingen | Lijst met recente modulewijzigingen. | Recente wijzigingen (laatste 60 dagen) | Read-only; toont alleen de geselecteerde module. | RecentModuleChangesList |
| SCH-BEH-11-01-B02 | B | Open beheer | Opent de verdiepende beheerweergave voor de geselecteerde module. | Open beheer | Alleen beschikbaar bij exact één geselecteerde module. | OpenExerciseModuleManagementButton |
12.1.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-BEH-11-01-B01 | Nieuwe module | Nieuwe module | CreateExerciseModuleButton | ExerciseModules | Gebruikersactie voor nieuwe administratieve moduleversie | action | Ja | Alleen beheerder; CodeReference + Version moet uniek zijn; optionele healthcheck moet slagen voordat de module actief beschikbaar wordt gemaakt. |
| SCH-BEH-11-01-F01 | Zoek module | Zoek module | ModuleSearchInput | Geen persistente databron | Runtime filter op DisplayName, CodeReference en Version | string | Ja | Wijzigt geen data; lege zoekterm toont de standaardlijst. |
| SCH-BEH-11-01-T01 | Modules overzicht | Modules | ExerciseModuleCardList | ExerciseModules, Exercises, Users | Samengesteld read model met module-identiteit, status, testzichtbaarheid en impacttellers | collection | Nee | Alleen bestaande moduleversies worden getoond; soft-deleted of technisch verwijderde records horen niet als actieve beheeroptie terug te komen. |
| SCH-BEH-11-01-F02 | Weergave naam | Weergave naam | SelectedModuleDisplayNameValue | ExerciseModules.DisplayName | Database | string | Nee | Mockupwaarde is voorbeelddata. |
| SCH-BEH-11-01-F03 | Versie | Versie | SelectedModuleVersionValue | ExerciseModules.Version | Database | string | Nee | Versie is onderdeel van de unieke moduleversie-identiteit. |
| SCH-BEH-11-01-F04 | Status | Status | SelectedModuleStatusValue | ExerciseModules.IsActive | Afgeleid uit booleanstatus | bool / label | Nee | IsActive=false betekent niet inzetbaar voor reguliere nieuwe oefeningen. |
| SCH-BEH-11-01-F05 | Zichtbaar voor testdocenten | Zichtbaar voor testdocenten | SelectedModuleTestVisibilityValue | ExerciseModules.IsVisibleForTesting | Afgeleid uit booleanstatus | bool / label | Nee | Alleen relevant voor gebruikers met de niet-publieke rol TestDocent. |
| SCH-BEH-11-01-F06 | Actieve docenten | Actieve docenten | ActiveTeachersUsingModuleCount | Exercises, TeacherLevels, Users | Berekend | int | Nee | Telt docenten met actieve concrete oefeningen die deze moduleversie gebruiken. |
| SCH-BEH-11-01-F07 | Actieve oefenkoppelingen | Actieve oefenkoppelingen | ActiveExerciseLinksUsingModuleCount | Exercises.ExerciseModuleId | Berekend | int | Nee | Telt actieve oefeningen die direct naar deze ExerciseModules.Id verwijzen. |
| SCH-BEH-11-01-T02 | Recente wijzigingen | Recente wijzigingen (laatste 60 dagen) | RecentModuleChangesList | ExerciseModuleHistory, ExerciseModuleMigrations, Users | Historisch read model | collection | Nee | Toont recente modulewijzigingen en migraties binnen het venster. |
12.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-BEH-11-01-01 | SRS-RDM-004 SRS-RDM-001 SRS-MOD-003 AC-RDM-004 AC-RDM-001 AC-MOD-003 | Een beheerder een centraal overzicht tonen van bestaande technische moduleversies met minimaal weergavenaam, code reference, versie, actiefstatus, testzichtbaarheid en impacttellers |
REQ-SCH-BEH-11-01-02 | SRS-MOD-003 AC-MOD-003 | Zoeken ondersteunen op minimaal weergavenaam, code reference en versie van technische modules |
REQ-SCH-BEH-11-01-03 | SRS-MOD-003 AC-MOD-003 | Eerst selectie van exact één module vereisen voordat de beheerweergave via Open beheer wordt geopend |
REQ-SCH-BEH-11-01-04 | SRS-MOD-003 AC-MOD-003 | De landingspagina een read-only samenvatting tonen van de geselecteerde module, inclusief aanmaakinfo, laatste wijziging en recente wijzigingen |
REQ-SCH-BEH-11-01-05 | SRS-MOD-003 AC-MOD-003 | Het registreren van een nieuwe moduleversie ondersteunen zonder concrete docent-oefeningen of modulespecifieke configuratiepayloads op deze pagina te beheren |
REQ-SCH-BEH-11-01-06 | SRS-AUTH-001 SRS-MOD-003 AC-AUTH-001 AC-MOD-003 | Bij nieuwe of gewijzigde moduleversies de combinatie CodeReference + Version server-side uniek worden afgedwongen |
REQ-SCH-BEH-11-01-07 | SRS-AUTH-001 SRS-MOD-003 AC-AUTH-001 AC-MOD-003 | Modulebeheer server-side worden beperkt tot gebruikers met actieve beheerdercontext |
12.2 Open Beheer — Intro uitleg
12.2.1 Schermafbeelding

12.2.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-BEH-11-02 |
| Schermnaam | Modules — Open beheer — Intro / uitleg |
| Doelgroep / onderdeel | Beheerder |
| Bronbestand | oefenhub_beheerder_12_modules_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | oefenhub_beheerder_12_modules_v1_4_knop_open_beheer_tab_01_intro_uitleg.png |
| Processtap / context | Beheerder heeft één module geselecteerd en opent de verdiepende beheerweergave op de tab Intro / uitleg. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | Read-only uitlegview met impactinformatie; mutaties vinden plaats op de andere tabs. |
| Route / URL-patroon | Functioneel routepatroon: /beheer/content/modules/{exerciseModuleId}/beheer/intro. |
| Autorisatie / vereiste rol-context | Actieve beheerdercontext. |
| Primair domeinobject / hoofdentiteit | Geselecteerde ExerciseModules-record plus impact-readmodel. |
| Gerelateerde schermen / navigatie | Landingspagina Modules, Open beheer — Module, Migreren — docent, Migreren — alles, Geschiedenis. |
| Data-karakter | Read-only uitleg en dynamische impactwaarden over de geselecteerde module. |
12.2.3 Functionele beschrijving
Deze view legt uit wat een beheerder binnen modulebeheer kan doen. De tab beschrijft het verschil tussen reguliere modulegegevens, docentgerichte migratie, globale migratie en historie. De view is bewust geen mutatiescherm en bevat geen invoer voor ExerciseModules.
De impactkaart toont dynamische samenvattingswaarden, zoals actieve docenten, actieve oefenkoppelingen, actieve docentniveaus, afgeronde runs in een tijdvenster en nog openstaande runs. Deze waarden helpen bij het beoordelen van risico’s voordat de beheerder wijzigingen, testzichtbaarheid of migraties uitvoert.
De uitleg maakt duidelijk dat het uitschakelen van een module een technische beheerhandeling is die pas is toegestaan wanneer actieve oefenkoppelingen naar deze moduleversie zijn verdwenen. Testzichtbaarheid staat daar functioneel los van en kan apart worden beheerd zolang de beheerder daartoe bevoegd is.
Bij fouten in impactberekening mag de applicatie geen mutaties aanbieden op basis van onvolledige impactinformatie. In dat geval wordt de impactkaart als foutstaat getoond en blijven mutatieacties op andere tabs server-side beschermd.
12.2.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-BEH-11-02-TAB01 | TAB | Beheertabs | Tabnavigatie binnen modulebeheer. | Intro / uitleg / Module / Migreren - docent / Migreren - alles / Geschiedenis | Actieve tab: Intro / uitleg. | ModuleManagementTabs |
| SCH-BEH-11-02-S01 | S | Wat kun je hier doen? | Uitlegblok over beschikbare modulebeheeronderdelen. | Wat kun je hier doen? | Read-only functionele uitleg. | ModuleManagementIntroExplanationSection |
| SCH-BEH-11-02-M01 | M | Status van de hele module | Informatieve waarschuwing over uitschakelen. | Status van de hele module | Benadrukt dat uitschakelen pas mag zonder actieve koppelingen. | ModuleStatusImpactMessage |
| SCH-BEH-11-02-M02 | M | Testzichtbaarheid staat hier los van | Informatieve boodschap over testzichtbaarheid. | Testzichtbaarheid staat hier los van | Legt relatie met TestDocent uit. | ModuleTestVisibilityMessage |
| SCH-BEH-11-02-M03 | M | Gescheiden migraties | Informatieve boodschap over docentgerichte en globale migratie. | Gescheiden migraties | Maakt impactafbakening duidelijk. | ModuleMigrationSeparationMessage |
| SCH-BEH-11-02-S02 | S | Gebruik & impact | Rechter impactkaart met dynamische waarden. | Gebruik & impact | Read-only. | ModuleUsageImpactSection |
| SCH-BEH-11-02-F01 | F | Actieve docenten | Aantal actieve docenten dat deze module gebruikt. | Actieve docenten | Dynamisch berekend. | ActiveTeachersCount |
| SCH-BEH-11-02-F02 | F | Actieve oefenkoppelingen | Aantal actieve oefeningen dat naar deze module verwijst. | Actieve oefenkoppelingen | Dynamisch berekend. | ActiveExerciseLinksCount |
| SCH-BEH-11-02-F03 | F | Actieve docentniveaus | Aantal actieve docentniveaus met gekoppelde oefeningen op deze module. | Actieve docentniveaus | Dynamisch berekend. | ActiveTeacherLevelsUsingModuleCount |
| SCH-BEH-11-02-F04 | F | Afgeronde runs (90 dagen) | Runimpact binnen tijdvenster. | Afgeronde runs (90 dagen) | Historische runs worden niet door migratie herschreven. | CompletedRunsLast90DaysValue |
| SCH-BEH-11-02-F05 | F | Openstaande runs | Aantal nog niet afgeronde runs dat naar deze module verwijst. | Openstaande runs | Relevant voor risicobeoordeling. | OpenRunsUsingModuleCount |
12.2.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-BEH-11-02-TAB01 | Beheertabs | Intro / uitleg / Module / Migreren - docent / Migreren - alles / Geschiedenis | ModuleManagementTabs | Geen directe databron | Runtime UI-context | tab selection | Ja | Actieve tab bepaalt welke beheercontext zichtbaar is; geselecteerde module blijft gelijk. |
| SCH-BEH-11-02-S01 | Wat kun je hier doen? | Wat kun je hier doen? | ModuleManagementIntroExplanationSection | Codegedreven beheertekst of beheerbaar contentblok | Read-only uitleg | string / section | Nee | Layout en tabstructuur zijn codegedreven. |
| SCH-BEH-11-02-F01 | Actieve docenten | Actieve docenten | ActiveTeachersCount | Exercises, TeacherLevels, Users | Berekend | int | Nee | Telt alleen relevante actieve docentcontexten met actieve oefeningen op deze module. |
| SCH-BEH-11-02-F02 | Actieve oefenkoppelingen | Actieve oefenkoppelingen | ActiveExerciseLinksCount | Exercises.ExerciseModuleId | Berekend | int | Nee | Moet 0 zijn voordat volledige inactivatie functioneel toegestaan is. |
| SCH-BEH-11-02-F03 | Actieve docentniveaus | Actieve docentniveaus | ActiveTeacherLevelsUsingModuleCount | Exercises, TeacherLevelCategories, TeacherLevels | Berekend | int | Nee | Geeft contextimpact, geen autorisatiewaarde. |
| SCH-BEH-11-02-F04 | Afgeronde runs (90 dagen) | Afgeronde runs (90 dagen) | CompletedRunsLast90DaysValue | ExerciseRuns | Berekend over tijdvenster | int / summary | Nee | Historische runs blijven onveranderd na migratie. |
| SCH-BEH-11-02-F05 | Openstaande runs | Openstaande runs | OpenRunsUsingModuleCount | ExerciseRuns | Berekend | int | Nee | Telt runs met IsCompleted = false die nog naar deze moduleversie verwijzen. |
12.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-BEH-11-02-01 | SRS-MOD-003 AC-MOD-003 | Voor een geselecteerde module een read-only introductieview tonen die de beschikbare beheeronderdelen en hun impact uitlegt |
REQ-SCH-BEH-11-02-02 | SRS-MOD-003 AC-MOD-003 | De introductieview duidelijk maken dat concrete docent-oefenconfiguraties, oefeniconen, oefennamen en JSON/base64-payloads niet op deze centrale modulebeheerpagina worden aangepast |
REQ-SCH-BEH-11-02-03 | SRS-MOD-003 AC-MOD-003 | De introductieview dynamische impactwaarden tonen voor minimaal actieve docenten, actieve oefenkoppelingen, actieve docentniveaus en runimpact |
REQ-SCH-BEH-11-02-04 | SRS-MOD-003 AC-MOD-003 | Bij ontbrekende of foutieve impactinformatie voorkomen dat een beheerder op basis van onvolledige gegevens onveilige modulemutaties uitvoert |
12.3 Open Beheer — Module
12.3.1 Schermafbeelding

12.3.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-BEH-11-03 |
| Schermnaam | Modules — Open beheer — Module |
| Doelgroep / onderdeel | Beheerder |
| Bronbestand | oefenhub_beheerder_12_modules_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | oefenhub_beheerder_12_modules_v1_4_knop_open_beheer_tab_02_module.png |
| Processtap / context | Beheerder bekijkt en wijzigt de centrale technische module-identiteit, versie, testzichtbaarheid en beschikbaarheidsstatus. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | Status uitschakelen is geblokkeerd zolang actieve oefenkoppelingen bestaan; testzichtbaarheid staat functioneel los van actiefstatus. |
| Route / URL-patroon | Functioneel routepatroon: /beheer/content/modules/{exerciseModuleId}/beheer/module. |
| Autorisatie / vereiste rol-context | Actieve beheerdercontext. |
| Primair domeinobject / hoofdentiteit | ExerciseModules |
| Gerelateerde schermen / navigatie | Landingspagina Modules, Intro / uitleg, Migreren — docent, Migreren — alles, Geschiedenis. |
| Data-karakter | Beheerbare modulemetadata, read-only statusimpact, bevestigingsmodal en auditregistratie. |
12.3.3 Functionele beschrijving
Deze view is het primaire mutatiescherm voor één technische moduleversie. De beheerder kan de zichtbare naam, versie en testzichtbaarheid beheren. De code reference wordt zichtbaar getoond als technische koppeling waarmee de applicatie via het strategy pattern de juiste module-implementatie aanspreekt. De code reference is in de GUI alleen wijzigbaar wanneer de functionele beheerflow dit expliciet ondersteunt; de mockup toont het veld als tekstveld, maar server-side blijft gelden dat de combinatie CodeReference + Version uniek en technisch geldig moet zijn.
De actie Opslaan opent een bevestigingsmodal met verplicht veld Reden van wijziging. Pas na bevestigen worden gewijzigde waarden opgeslagen en historisch vastgelegd. De reden wordt onderdeel van de modulehistorie.
De actie Maak onzichtbaar voor testdocenten wijzigt IsVisibleForTesting. Deze instelling staat los van IsActive. Een module kan dus regulier niet actief zijn of nog niet regulier beschikbaar zijn, terwijl testzichtbaarheid voor TestDocenten apart beheerd wordt binnen de geldende server-side regels.
De actie Module uitschakelen probeert de module inactief te maken. Wanneer nog actieve concrete oefeningen naar de moduleversie verwijzen, toont de mockup de modal Module uitschakelen niet beschikbaar. De server moet deze blokkade afdwingen; de frontendmelding is alleen informatief. Pas wanneer er geen actieve oefeningen of relevante actieve koppelingen meer bestaan, mag de status naar inactief worden gewijzigd. Openstaande of historische runs worden niet herschreven door een statuswijziging.
Bij een gelijktijdige wijziging door een andere beheerder moet de opslaanactie een conflict detecteren. De beheerder mag niet ongemerkt oude waarden over actuele waarden heen schrijven.
12.3.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-BEH-11-03-TAB01 | TAB | Beheertabs | Tabnavigatie binnen modulebeheer. | Intro / uitleg / Module / Migreren - docent / Migreren - alles / Geschiedenis | Actieve tab: Module. | ModuleManagementTabs |
| SCH-BEH-11-03-S01 | FORM | Modulegegevens | Formulier met centrale modulemetadata. | Modulegegevens | Beheert module-identiteit, niet concrete oefeningen. | ExerciseModuleDetailsForm |
| SCH-BEH-11-03-F01 | F | Weergave naam | Beheerbare zichtbare modulenaam. | Weergave naam | Wordt in selectielijsten en beheerweergaven gebruikt. | ModuleDisplayNameInput |
| SCH-BEH-11-03-F02 | F | Versie | Beheerbare versieaanduiding van de moduleversie. | Versie | Onderdeel van moduleversie-identiteit. | ModuleVersionInput |
| SCH-BEH-11-03-F03 | F | Code reference | Technische referentie naar module-implementatie. | Code reference | Wordt via strategy pattern gebruikt; server-side gevalideerd. | ModuleCodeReferenceInput |
| SCH-BEH-11-03-F04 | F | Huidige status | Read-only statusbadge van de module. | Huidige status | Afgeleid uit IsActive. | CurrentModuleStatusBadge |
| SCH-BEH-11-03-F05 | F | Zichtbaar voor testdocenten | Read-only of actiegestuurde weergave van testzichtbaarheid. | Zichtbaar voor testdocenten | Afgeleid uit IsVisibleForTesting. | CurrentModuleTestVisibilityBadge |
| SCH-BEH-11-03-B01 | B | Maak onzichtbaar voor testdocenten | Wijzigt testzichtbaarheid. | Maak onzichtbaar voor testdocenten | Caption wisselt afhankelijk van huidige waarde. | ToggleModuleTestVisibilityButton |
| SCH-BEH-11-03-B02 | B | Opslaan | Start bevestigingsmodal voor inhoudelijke wijziging. | Opslaan | Reden verplicht vóór definitieve opslag. | SaveModuleChangesButton |
| SCH-BEH-11-03-MOD01 | MOD | Wijzigingen opslaan | Bevestigingsmodal voor modulewijziging. | Wijzigingen opslaan | Bevat verplicht veld Reden van wijziging. | ConfirmSaveModuleChangesModal |
| SCH-BEH-11-03-F06 | F | Reden van wijziging | Verplicht tekstveld in opslaanmodal. | Reden van wijziging | Wordt historisch vastgelegd. | ModuleChangeReasonInput |
| SCH-BEH-11-03-B03 | B | Bevestig opslaan | Definitieve saveactie in modal. | Bevestig opslaan | Alleen actief bij geldige reden. | ConfirmSaveModuleChangesButton |
| SCH-BEH-11-03-B04 | B | Module uitschakelen | Start statuswijziging naar inactief. | Module uitschakelen | Geblokkeerd bij actieve koppelingen. | DisableModuleButton |
| SCH-BEH-11-03-MOD02 | MOD | Module uitschakelen niet beschikbaar | Informatieve blokkademodal. | Module uitschakelen niet beschikbaar | Wordt getoond wanneer actieve koppelingen bestaan. | DisableModuleBlockedModal |
| SCH-BEH-11-03-S02 | S | Gebruik & impact | Rechter impactkaart bij de modulemutatie. | Gebruik & impact | Toont actieve docenten, koppelingen, niveaus en openstaande runs. | ModuleDetailsImpactSection |
| SCH-BEH-11-03-F07 | F | Actieve docenten gebruiken deze module | Telling van actieve docenten. | Actieve docenten gebruiken deze module | Read-only. | ModuleActiveTeachersImpactValue |
| SCH-BEH-11-03-F08 | F | Actieve oefenkoppelingen aanwezig | Telling van actieve oefenkoppelingen. | Actieve oefenkoppelingen aanwezig | Moet 0 zijn voor volledige inactivatie. | ModuleActiveExerciseLinksImpactValue |
| SCH-BEH-11-03-F09 | F | Actieve docentniveaus gebruiken via gekoppelde oefeningen deze module | Telling van actieve docentniveaus. | Actieve docentniveaus gebruiken via gekoppelde oefeningen deze module | Read-only impactwaarde. | ModuleActiveTeacherLevelsImpactValue |
| SCH-BEH-11-03-F10 | F | Niet-afgeronde runs verwijzen momenteel nog naar deze module | Telling van openstaande runs. | Niet-afgeronde runs verwijzen momenteel nog naar deze module | Informeert over runtime-impact. | ModuleOpenRunsImpactValue |
12.3.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-BEH-11-03-F01 | Weergave naam | Weergave naam | ModuleDisplayNameInput | ExerciseModules.DisplayName | Database | nvarchar(150) | Ja | Verplicht; mag niet leeg zijn. |
| SCH-BEH-11-03-F02 | Versie | Versie | ModuleVersionInput | ExerciseModules.Version | Database | nvarchar(50) | Ja | Verplicht; combinatie met CodeReference moet uniek zijn. |
| SCH-BEH-11-03-F03 | Code reference | Code reference | ModuleCodeReferenceInput | ExerciseModules.CodeReference | Database / technische codekoppeling | nvarchar(200) | Beperkt / server-side gecontroleerd | Verplicht; moet verwijzen naar een ondersteunde module-implementatie via strategy pattern. |
| SCH-BEH-11-03-F04 | Huidige status | Huidige status | CurrentModuleStatusBadge | ExerciseModules.IsActive | Databasewaarde als label | bool / statuslabel | Nee | Statuswijziging verloopt via aparte actie en server-side impactcontrole. |
| SCH-BEH-11-03-F05 | Zichtbaar voor testdocenten | Zichtbaar voor testdocenten | CurrentModuleTestVisibilityBadge | ExerciseModules.IsVisibleForTesting | Databasewaarde als label | bool / statuslabel | Indirect | Testzichtbaarheid is onafhankelijk van reguliere actiefstatus. |
| SCH-BEH-11-03-B01 | Maak onzichtbaar voor testdocenten | Maak onzichtbaar voor testdocenten | ToggleModuleTestVisibilityButton | ExerciseModules.IsVisibleForTesting, ExerciseModuleHistory | Mutatieactie | action | Ja | Vereist beheerderautorisatie en auditregistratie; mag reguliere IsActive niet impliciet wijzigen. |
| SCH-BEH-11-03-B02 | Opslaan | Opslaan | SaveModuleChangesButton | ExerciseModules, ExerciseModuleHistory | Mutatieactie | action | Ja | Bevestiging en reden verplicht; concurrency moet worden gecontroleerd. |
| SCH-BEH-11-03-F06 | Reden van wijziging | Reden van wijziging | ModuleChangeReasonInput | ExerciseModuleHistory.Reason of gelijkwaardige historielaag | Gebruikersinvoer | string | Ja | Verplicht bij opslaan; maximale lengte volgens centrale validatieregel. |
| SCH-BEH-11-03-B04 | Module uitschakelen | Module uitschakelen | DisableModuleButton | ExerciseModules.IsActive, Exercises | Mutatieactie met impactvalidatie | action | Ja | Alleen toegestaan wanneer geen actieve concrete oefeningen of actieve oefenkoppelingen meer naar deze moduleversie verwijzen. |
| SCH-BEH-11-03-F07 | Actieve docenten gebruiken deze module | Actieve docenten gebruiken deze module | ModuleActiveTeachersImpactValue | Exercises, TeacherLevels, Users | Berekend | int | Nee | Read-only impactwaarde. |
| SCH-BEH-11-03-F08 | Actieve oefenkoppelingen aanwezig | Actieve oefenkoppelingen aanwezig | ModuleActiveExerciseLinksImpactValue | Exercises.ExerciseModuleId | Berekend | int | Nee | Blokkeert inactivatie zolang waarde groter dan 0 is. |
| SCH-BEH-11-03-F09 | Actieve docentniveaus gebruiken via gekoppelde oefeningen deze module | Actieve docentniveaus gebruiken via gekoppelde oefeningen deze module | ModuleActiveTeacherLevelsImpactValue | TeacherLevels, TeacherLevelCategoryExercises, Exercises | Berekend | int | Nee | Read-only contextwaarde. |
| SCH-BEH-11-03-F10 | Niet-afgeronde runs verwijzen momenteel nog naar deze module | Niet-afgeronde runs verwijzen momenteel nog naar deze module | ModuleOpenRunsImpactValue | ExerciseRuns.ExerciseModuleId, ExerciseRuns.IsCompleted | Berekend | int | Nee | Informeert over runtimegebruik; historische runcontext blijft behouden. |
12.3.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-BEH-11-03-01 | SRS-MOD-003 AC-MOD-003 | Per geselecteerde module de beheerbare modulegegevens tonen, waaronder minimaal DisplayName, Version, CodeReference, IsActive en IsVisibleForTesting |
REQ-SCH-BEH-11-03-02 | SRS-MOD-003 AC-MOD-003 | CodeReference gebruiken als technische koppeling naar de module-implementatie via het strategy pattern |
REQ-SCH-BEH-11-03-03 | SRS-AUTH-001 SRS-MOD-003 AC-AUTH-001 AC-MOD-003 | De combinatie CodeReference + Version server-side uniek zijn |
REQ-SCH-BEH-11-03-04 | SRS-MOD-003 AC-MOD-003 | Wijzigingen aan modulegegevens pas definitief worden verwerkt na expliciete bevestiging met verplichte reden |
REQ-SCH-BEH-11-03-05 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | Wijzigingen aan modulegegevens, status en testzichtbaarheid historisch herleidbaar zijn met oude waarde, nieuwe waarde, actor, tijdstip en reden |
REQ-SCH-BEH-11-03-06 | SRS-MOD-003 AC-MOD-003 | IsVisibleForTesting onafhankelijk van IsActive kunnen beheren |
REQ-SCH-BEH-11-03-07 | SRS-MOD-003 AC-MOD-003 | De rol TestDocent geen publiek door gebruikers zelf te kiezen zijn en mag alleen via beheer worden toegekend |
REQ-SCH-BEH-11-03-08 | SRS-MOD-003 AC-MOD-003 | Een technische module mag pas inactief worden gemaakt wanneer er geen actieve concrete oefeningen of actieve oefenkoppelingen meer bestaan die naar die moduleversie verwijzen |
REQ-SCH-BEH-11-03-09 | SRS-AUTH-001 SRS-MOD-003 AC-AUTH-001 AC-MOD-003 | De blokkade op module-uitschakeling server-side worden afgedwongen en geen alleen afhankelijk zijn van frontendmeldingen |
REQ-SCH-BEH-11-03-10 | SRS-MOD-003 AC-MOD-003 | De modulebeheerpagina mag geen oefeniconen, docentgebonden oefennamen of modulespecifieke JSON/base64-configuratiepayloads wijzigen |
12.4 Open Beheer — Migreren — docent — Stap 1 — Module
12.4.1 Schermafbeelding

12.4.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-BEH-11-04 |
| Schermnaam | Modules — Open beheer — Migreren — docent — Stap 1 — Module |
| Doelgroep / onderdeel | Beheerder |
| Bronbestand | oefenhub_beheerder_12_modules_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | oefenhub_beheerder_12_modules_v1_4_knop_open_beheer_tab_03_migreren_docent_sub_tab_01_stap_1_module.png |
| Processtap / context | Eerste stap van docentgerichte modulemigratie: beheerder kiest een actieve doelmodule. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | De bronmodule is de geopende module; de doelmodule wordt hier gekozen en meegenomen naar stap 2. |
| Route / URL-patroon | Functioneel routepatroon: /beheer/content/modules/{exerciseModuleId}/beheer/migreren-docent/stap-1. |
| Autorisatie / vereiste rol-context | Actieve beheerdercontext. |
| Primair domeinobject / hoofdentiteit | Migratievoorbereiding tussen bronmodule en doelmodule, gebaseerd op ExerciseModules. |
| Gerelateerde schermen / navigatie | Open beheer — Module, Migreren — docent — Stap 2 — Docent, Migreren — alles, Geschiedenis. |
| Data-karakter | Runtime migratiecontext met read-only bronmodule en selecteerbare actieve doelmodules. |
12.4.3 Functionele beschrijving
Deze view is stap 1 van de docentgerichte modulemigratie. De bronmodule staat vast: dit is de module die vanuit Open beheer is geopend. De beheerder zoekt en selecteert hier een actieve doelmodule waarnaar actieve concrete oefeningen van één docent later kunnen worden overgezet.
Alleen actieve doelmodules mogen selecteerbaar zijn. Migreren naar dezelfde moduleversie als de bronmodule is niet toegestaan. De geselecteerde doelmodule wordt zichtbaar in het rechterpaneel. Daarna activeert de knop Selecteer deze module en ga naar stap 2 de volgende stap, waarin de beheerder een docentcontext kiest.
Deze stap voert nog geen migratie uit. Er wordt alleen een migratiecontext voorbereid. Bij geen geldige doelmodule blijft stap 2 niet uitvoerbaar. Als de doelmodule tussen selectie en uitvoering inactief wordt gemaakt, moet de server de migratie alsnog blokkeren.
12.4.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-BEH-11-04-TAB01 | TAB | Beheertabs | Tabnavigatie binnen modulebeheer. | Migreren - docent | Actieve hoofdtab. | ModuleManagementTabs |
| SCH-BEH-11-04-TAB02 | TAB | Migratiesubtabs | Subtabnavigatie binnen docentgerichte migratie. | Stap 1 - Module / Stap 2 - Docent | Actieve subtab: Stap 1 - Module. | TeacherModuleMigrationStepTabs |
| SCH-BEH-11-04-S01 | S | Selecteer eerst een doelmodule | Linkerpaneel voor doelmoduleselectie. | Selecteer eerst een doelmodule | Toont alleen actieve doelmodules. | TeacherMigrationTargetModuleSelectionSection |
| SCH-BEH-11-04-F01 | F | Zoek actieve doelmodule | Zoekveld voor doelmodule. | Zoek actieve doelmodule | Runtime filter. | TeacherMigrationTargetModuleSearchInput |
| SCH-BEH-11-04-T01 | T | Doelmodulelijst | Lijst met actieve doelmodules. | Doelmodules | Selecteerbare lijst. | TeacherMigrationTargetModuleList |
| SCH-BEH-11-04-A01 | A | Selecteer | Selecteert een doelmodule. | Selecteer | Geen definitieve migratie. | SelectTeacherMigrationTargetModuleAction |
| SCH-BEH-11-04-S02 | S | Geselecteerde doelmodule | Rechterpaneel met bronmodule, doelmodule en impact. | Geselecteerde doelmodule | Toont Nog niet bevestigd totdat selectie is vastgesteld. | SelectedTeacherMigrationTargetModuleSection |
| SCH-BEH-11-04-F02 | F | Bronmodule | Read-only bronmodule. | Bronmodule | De geopende module. | TeacherMigrationSourceModuleValue |
| SCH-BEH-11-04-F03 | F | Doelmodule | Read-only geselecteerde doelmodule. | Doelmodule | Leeg of niet bevestigd vóór selectie. | TeacherMigrationTargetModuleValue |
| SCH-BEH-11-04-F04 | F | Actieve docenten | Impactteller voor bronmodule. | Actieve docenten | Read-only. | TeacherMigrationActiveTeachersValue |
| SCH-BEH-11-04-F05 | F | Actieve oefenkoppelingen | Impactteller voor bronmodule. | Actieve oefenkoppelingen | Read-only. | TeacherMigrationActiveExerciseLinksValue |
| SCH-BEH-11-04-M01 | M | Waarschuwing doelmodule kiezen | Informatieve melding dat eerst een doelmodule gekozen moet worden. | Kies hier eerst de doelmodule... | Verdwijnt of wijzigt na geldige keuze. | SelectTargetModuleFirstMessage |
| SCH-BEH-11-04-B01 | B | Selecteer deze module en ga naar stap 2 | Bevestigt doelmodule en opent stap 2. | Selecteer deze module en ga naar stap 2 | Alleen actief bij geldige doelmodule. | ProceedToTeacherMigrationStep2Button |
12.4.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-BEH-11-04-F01 | Zoek actieve doelmodule | Zoek actieve doelmodule | TeacherMigrationTargetModuleSearchInput | Geen persistente databron | Runtime filter op ExerciseModules.DisplayName, CodeReference en Version | string | Ja | Wijzigt geen data. |
| SCH-BEH-11-04-T01 | Doelmodulelijst | Doelmodules | TeacherMigrationTargetModuleList | ExerciseModules | Gefilterde lijst van actieve doelmodules | collection | Nee | Alleen IsActive = true; bronmodule wordt uitgesloten. |
| SCH-BEH-11-04-A01 | Selecteer | Selecteer | SelectTeacherMigrationTargetModuleAction | ExerciseModules.Id | Runtime selectie van doelmodule | action | Ja | Doelmodule mag niet gelijk zijn aan bronmodule. |
| SCH-BEH-11-04-F02 | Bronmodule | Bronmodule | TeacherMigrationSourceModuleValue | ExerciseModules.Id, DisplayName, Version | Geselecteerde beheercontext | string / reference | Nee | Bronmodule staat vast binnen de geopende beheercontext. |
| SCH-BEH-11-04-F03 | Doelmodule | Doelmodule | TeacherMigrationTargetModuleValue | ExerciseModules.Id, DisplayName, Version | Runtime selectie | string / reference | Nee | Moet geldig en actief zijn bij doorgaan naar stap 2 en opnieuw bij uitvoering. |
| SCH-BEH-11-04-F04 | Actieve docenten | Actieve docenten | TeacherMigrationActiveTeachersValue | Exercises, TeacherLevels, Users | Berekend | int | Nee | Impactteller voor bronmodule. |
| SCH-BEH-11-04-F05 | Actieve oefenkoppelingen | Actieve oefenkoppelingen | TeacherMigrationActiveExerciseLinksValue | Exercises.ExerciseModuleId | Berekend | int | Nee | Telt actieve oefeningen die de bronmodule gebruiken. |
| SCH-BEH-11-04-B01 | Selecteer deze module en ga naar stap 2 | Selecteer deze module en ga naar stap 2 | ProceedToTeacherMigrationStep2Button | Runtime migratiecontext | Navigatieactie | action | Ja | Alleen beschikbaar bij geldige actieve doelmodule. |
12.4.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-BEH-11-04-01 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Docentgerichte modulemigratie starten met een stap waarin de beheerder een actieve doelmodule selecteert |
REQ-SCH-BEH-11-04-02 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | De bronmodule in docentgerichte migratie vastliggen op de module die vanuit Open beheer is geopend |
REQ-SCH-BEH-11-04-03 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Alleen actieve doelmodules mogen selecteerbaar zijn voor modulemigratie |
REQ-SCH-BEH-11-04-04 | SRS-MOD-003 AC-MOD-003 | Migreren naar dezelfde module als de bronmodule wordt geblokkeerd |
REQ-SCH-BEH-11-04-05 | SRS-MOD-003 AC-MOD-003 | De stap naar docentselectie mag pas beschikbaar zijn nadat een geldige doelmodule is gekozen |
REQ-SCH-BEH-11-04-06 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | De server de geldigheid en actiefstatus van de doelmodule opnieuw controleren op het moment van migratie-uitvoering |
12.5 Open Beheer — Migreren — docent — Stap 2 — Docent
12.5.1 Schermafbeelding

12.5.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-BEH-11-05 |
| Schermnaam | Modules — Open beheer — Migreren — docent — Stap 2 — Docent |
| Doelgroep / onderdeel | Beheerder |
| Bronbestand | oefenhub_beheerder_12_modules_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | oefenhub_beheerder_12_modules_v1_4_knop_open_beheer_tab_03_migreren_docent_sub_tab_02_stap_2_docent.png |
| Processtap / context | Tweede stap van docentgerichte modulemigratie: beheerder kiest één docentcontext en voert de migratie na bevestiging uit. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | De definitieve actie is uitgeschakeld zolang stap 1 geen doelmodule heeft opgeleverd. |
| Route / URL-patroon | Functioneel routepatroon: /beheer/content/modules/{exerciseModuleId}/beheer/migreren-docent/stap-2. |
| Autorisatie / vereiste rol-context | Actieve beheerdercontext. |
| Primair domeinobject / hoofdentiteit | ExerciseModuleMigrations met ScopeType = PerTeacher. |
| Gerelateerde schermen / navigatie | Migreren — docent — Stap 1 — Module, Migreren — alles, Geschiedenis. |
| Data-karakter | Runtime migratiecontext, docentselectie, verplichte bevestigingsmodal en auditregistratie. |
12.5.3 Functionele beschrijving
Deze view beperkt de modulemigratie tot één docentcontext. De lijst toont uitsluitend docenten die minimaal één actieve concrete oefening hebben die op de bronmodule draait. Daardoor kan de beheerder geen docent kiezen waarvoor de migratie geen effect heeft.
De rechter samenvatting toont bronmodule, doelmodule, docent en het aantal te migreren oefenkoppelingen. Wanneer stap 1 nog geen geldige doelmodule heeft opgeleverd, toont de mockup de foutmelding dat eerst een doelmodule gekozen moet worden en blijft Migreer voor docent disabled. Pas na geldige doelmodule en docentselectie wordt de definitieve actie beschikbaar.
Bij uitvoering opent de migratiemodal met verplicht veld Reden van migratie. De migratie schrijft administratief een record naar ExerciseModuleMigrations met ScopeType = PerTeacher, SourceExerciseModuleId, TargetExerciseModuleId, TeacherUserId, actor, tijdstip, snapshots en reden. Daarnaast moeten de betrokken actieve concrete oefeningen naar de doelmodule verwijzen en moet per oefening relevante ExerciseHistory worden vastgelegd.
Historische exercise runs, resultaten, deelbare oefeningen en eerdere geschiedenisregels blijven inhoudelijk onveranderd. Zij blijven verwijzen naar de moduleversie die op het moment van uitvoeren of delen gold.
12.5.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-BEH-11-05-TAB01 | TAB | Migratiesubtabs | Subtabnavigatie binnen docentgerichte migratie. | Stap 1 - Module / Stap 2 - Docent | Actieve subtab: Stap 2 - Docent. | TeacherModuleMigrationStepTabs |
| SCH-BEH-11-05-S01 | S | Zoek docent binnen relevante docenten | Linkerpaneel met docentfilter en docentlijst. | Zoek docent binnen relevante docenten | Toont alleen docenten die de bronmodule gebruiken. | TeacherMigrationTeacherSelectionSection |
| SCH-BEH-11-05-F01 | F | Zoek docent voor modulemigratie | Zoekveld voor relevante docenten. | Zoek docent | Runtime filter. | TeacherMigrationTeacherSearchInput |
| SCH-BEH-11-05-T01 | T | Docentenlijst | Lijst met docenten en impactbadges. | Docenten | Alleen docenten met actieve concrete oefeningen op bronmodule. | TeacherMigrationTeacherList |
| SCH-BEH-11-05-A01 | A | Selecteer docent | Selecteert docentcontext voor migratie. | Selecteer | Geen migratie zonder bevestiging. | SelectTeacherForModuleMigrationAction |
| SCH-BEH-11-05-S02 | S | Geselecteerde docent | Rechter samenvatting van migratiecontext. | Geselecteerde docent | Toont bronmodule, doelmodule, docent en impact. | SelectedTeacherMigrationContextSection |
| SCH-BEH-11-05-M01 | M | Stap 1 niet afgerond | Foutmelding wanneer doelmodule ontbreekt. | Selecteer eerst in stap 1 een doelmodule... | Definitieve actie blijft disabled. | MissingTargetModuleWarningMessage |
| SCH-BEH-11-05-F02 | F | Bronmodule | Read-only bronmodule. | Bronmodule | De geopende module. | TeacherMigrationStep2SourceModuleValue |
| SCH-BEH-11-05-F03 | F | Doelmodule | Read-only doelmodule uit stap 1. | Doelmodule | Toont Nog niet geselecteerd zonder stap-1-keuze. | TeacherMigrationStep2TargetModuleValue |
| SCH-BEH-11-05-F04 | F | Docent | Read-only geselecteerde docent. | Docent | Dynamische gebruikersnaam. | TeacherMigrationSelectedTeacherValue |
| SCH-BEH-11-05-F05 | F | Te migreren koppelingen | Aantal actieve concrete oefeningen dat wordt overgezet. | Te migreren koppelingen | Dynamisch berekend. | TeacherMigrationExerciseLinksToMigrateCount |
| SCH-BEH-11-05-M02 | M | Historische runs blijven herleidbaar | Impactwaarschuwing bij geldige context. | Historische runs blijven historisch herleidbaar... | Alleen relevant wanneer doelmodule gekozen is. | TeacherMigrationHistoricalRunsMessage |
| SCH-BEH-11-05-B01 | B | Migreer voor docent | Start definitieve migratiemodal. | Migreer voor docent | Disabled zonder doelmodule of docent. | OpenTeacherMigrationConfirmModalButton |
| SCH-BEH-11-05-MOD01 | MOD | Module migreren | Bevestigingsmodal voor docentgerichte migratie. | Module migreren | Reden verplicht. | ConfirmTeacherModuleMigrationModal |
| SCH-BEH-11-05-F06 | F | Reden van migratie | Verplicht tekstveld in migratiemodal. | Reden van migratie | Wordt auditbaar vastgelegd. | TeacherModuleMigrationReasonInput |
| SCH-BEH-11-05-B02 | B | Bevestig migratie | Voert docentgerichte migratie uit. | Bevestig migratie | Alleen actief bij geldige reden en context. | ConfirmTeacherModuleMigrationButton |
12.5.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-BEH-11-05-F01 | Zoek docent voor modulemigratie | Zoek docent | TeacherMigrationTeacherSearchInput | Geen persistente databron | Runtime filter op relevante docenten | string | Ja | Wijzigt geen data. |
| SCH-BEH-11-05-T01 | Docentenlijst | Docenten | TeacherMigrationTeacherList | Users, TeacherLevels, Exercises | Gefilterd read model | collection | Nee | Alleen docenten met minimaal één actieve concrete oefening op de bronmodule. |
| SCH-BEH-11-05-A01 | Selecteer docent | Selecteer | SelectTeacherForModuleMigrationAction | Users.Id | Runtime selectie docentcontext | action | Ja | Docent moet in de gefilterde relevante set voorkomen. |
| SCH-BEH-11-05-F02 | Bronmodule | Bronmodule | TeacherMigrationStep2SourceModuleValue | ExerciseModules | Runtime context uit geopende module | reference | Nee | Staat vast. |
| SCH-BEH-11-05-F03 | Doelmodule | Doelmodule | TeacherMigrationStep2TargetModuleValue | ExerciseModules | Runtime context uit stap 1 | reference | Nee | Vereist geldige actieve doelmodule; anders blijft actie disabled. |
| SCH-BEH-11-05-F04 | Docent | Docent | TeacherMigrationSelectedTeacherValue | Users | Geselecteerde docentcontext | string / reference | Nee | Mag alleen relevante docent tonen. |
| SCH-BEH-11-05-F05 | Te migreren koppelingen | Te migreren koppelingen | TeacherMigrationExerciseLinksToMigrateCount | Exercises | Berekende migratie-impact | int | Nee | Telt alleen actieve concrete oefeningen van geselecteerde docent op de bronmodule. |
| SCH-BEH-11-05-F06 | Reden van migratie | Reden van migratie | TeacherModuleMigrationReasonInput | ExerciseModuleMigrations.Reason | Gebruikersinvoer | nvarchar(1000) | Ja | Verplicht vóór uitvoering. |
| SCH-BEH-11-05-B02 | Bevestig migratie | Bevestig migratie | ConfirmTeacherModuleMigrationButton | ExerciseModuleMigrations, Exercises, ExerciseHistory | Definitieve mutatie | action | Ja | Server-side autorisatie, doelmodulevalidatie, docentfiltervalidatie, reden en audit verplicht. |
12.5.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-BEH-11-05-01 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | In stap 2 van docentgerichte modulemigratie uitsluitend docenten tonen die actieve concrete oefeningen hebben op basis van de bronmodule |
REQ-SCH-BEH-11-05-02 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | De definitieve docentgerichte migratieactie disabled blijven zolang in stap 1 geen geldige doelmodule is gekozen |
REQ-SCH-BEH-11-05-03 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | De definitieve docentgerichte migratieactie disabled blijven zolang geen geldige docentcontext is geselecteerd |
REQ-SCH-BEH-11-05-04 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Vóór uitvoering van een docentgerichte modulemigratie de beheerder een reden opgeven |
REQ-SCH-BEH-11-05-05 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | Een docentgerichte modulemigratie auditinformatie vastleggen met minimaal bronmodule, doelmodule, scope, docentcontext, uitvoerende beheerder, tijdstip en reden |
REQ-SCH-BEH-11-05-06 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Bij docentgerichte migratie mogen alleen actieve concrete oefeningen van de geselecteerde docent naar de doelmodule worden overgezet |
REQ-SCH-BEH-11-05-07 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Bij modulemigratie historische exercise runs, resultaten, gedeelde oefeningen en bestaande geschiedenis inhoudelijk onveranderd blijven |
REQ-SCH-BEH-11-05-08 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | Per gemigreerde concrete oefening relevante ExerciseHistory worden vastgelegd zodat reconstructie mogelijk blijft |
12.6 Open Beheer — Migreren — alles
12.6.1 Schermafbeelding

12.6.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-BEH-11-06 |
| Schermnaam | Modules — Open beheer — Migreren — alles |
| Doelgroep / onderdeel | Beheerder |
| Bronbestand | oefenhub_beheerder_12_modules_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | oefenhub_beheerder_12_modules_v1_4_knop_open_beheer_tab_04_migreren_alles.png |
| Processtap / context | Beheerder bereidt een globale modulemigratie voor voor alle actieve concrete oefeningen die de bronmodule gebruiken. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | Hoog-impact beheeractie; vereist doelmodule, impactcontrole, bevestiging en verplichte reden. |
| Route / URL-patroon | Functioneel routepatroon: /beheer/content/modules/{exerciseModuleId}/beheer/migreren-alles. |
| Autorisatie / vereiste rol-context | Actieve beheerdercontext. |
| Primair domeinobject / hoofdentiteit | ExerciseModuleMigrations met ScopeType = Global. |
| Gerelateerde schermen / navigatie | Open beheer — Module, Migreren — docent, Geschiedenis. |
| Data-karakter | Selecteerbare doelmodule, berekende globale impact, bevestigingsmodal en auditregistratie. |
12.6.3 Functionele beschrijving
Deze view ondersteunt globale modulemigratie. De beheerder kiest een actieve doelmodule, waarna alle actieve concrete oefeningen die naar de geopende bronmodule verwijzen naar de doelmodule worden overgezet. Dit is een brede beheeractie met hoge impact.
De lijst toont alleen actieve doelmodules. De bronmodule zelf mag niet als doel gekozen worden. De rechter samenvatting toont bronmodule, doelmodule, aantal geraakte docenten en aantal te migreren koppelingen. De zichtbare aantallen zijn dynamisch en mogen niet als vaste productiegegevens worden beschreven.
De knop Migreer alles opent dezelfde migratiebevestigingsmodal met verplichte reden. Bij bevestiging wordt ExerciseModuleMigrations vastgelegd met ScopeType = Global, bronmodule, doelmodule, actor, tijdstip, snapshots en reden. De betrokken actieve concrete oefeningen worden administratief naar de doelmodule omgezet. Per oefening wordt relevante ExerciseHistory vastgelegd.
Historische runs, afgeronde resultaten, ontvangen gedeelde oefeningen en eerdere geschiedenis blijven naar de oorspronkelijke modulecontext verwijzen. Daardoor blijft later te reconstrueren welke technische moduleversie een bestaande run of gedeelde oefening op het moment van ontstaan gebruikte.
12.6.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-BEH-11-06-TAB01 | TAB | Beheertabs | Tabnavigatie binnen modulebeheer. | Migreren - alles | Actieve tab. | ModuleManagementTabs |
| SCH-BEH-11-06-S01 | S | Migreren - alles | Linkerpaneel voor globale doelmoduleselectie. | Migreren - alles | Toont actieve doelmodules. | GlobalModuleMigrationSelectionSection |
| SCH-BEH-11-06-F01 | F | Zoek actieve doelmodule | Zoekveld voor globale doelmodule. | Zoek actieve doelmodule | Runtime filter. | GlobalMigrationTargetModuleSearchInput |
| SCH-BEH-11-06-T01 | T | Doelmodulelijst | Lijst met actieve doelmodules. | Doelmodules | Selecteerbare lijst. | GlobalMigrationTargetModuleList |
| SCH-BEH-11-06-A01 | A | Selecteer | Selecteert globale doelmodule. | Selecteer | Geen migratie zonder bevestiging. | SelectGlobalMigrationTargetModuleAction |
| SCH-BEH-11-06-S02 | S | Geselecteerde globale migratie | Rechter samenvatting van globale migratiecontext. | Geselecteerde globale migratie | Toont bronmodule, doelmodule en impact. | SelectedGlobalMigrationContextSection |
| SCH-BEH-11-06-F02 | F | Bronmodule | Read-only bronmodule. | Bronmodule | De geopende module. | GlobalMigrationSourceModuleValue |
| SCH-BEH-11-06-F03 | F | Doelmodule | Read-only geselecteerde doelmodule. | Doelmodule | Dynamische selectie. | GlobalMigrationTargetModuleValue |
| SCH-BEH-11-06-F04 | F | Docenten geraakt | Aantal docenten met te migreren actieve oefeningen. | Docenten geraakt | Berekend. | GlobalMigrationAffectedTeachersCount |
| SCH-BEH-11-06-F05 | F | Te migreren koppelingen | Aantal actieve concrete oefeningen dat wordt gemigreerd. | Te migreren koppelingen | Berekend. | GlobalMigrationExerciseLinksToMigrateCount |
| SCH-BEH-11-06-M01 | M | Historische runs blijven herleidbaar | Waarschuwing over effecten van globale migratie. | Deze actie migreert alle actieve oefenkoppelingen... | Benadrukt dat historie niet herschreven wordt. | GlobalMigrationImpactWarningMessage |
| SCH-BEH-11-06-B01 | B | Migreer alles | Start bevestigingsmodal voor globale migratie. | Migreer alles | Hoog-impact actie. | OpenGlobalMigrationConfirmModalButton |
| SCH-BEH-11-06-MOD01 | MOD | Module migreren | Bevestigingsmodal voor globale migratie. | Module migreren | Reden verplicht. | ConfirmGlobalModuleMigrationModal |
| SCH-BEH-11-06-F06 | F | Reden van migratie | Verplicht tekstveld in migratiemodal. | Reden van migratie | Wordt auditbaar vastgelegd. | GlobalModuleMigrationReasonInput |
| SCH-BEH-11-06-B02 | B | Bevestig migratie | Voert globale migratie uit. | Bevestig migratie | Alleen actief bij geldige reden en context. | ConfirmGlobalModuleMigrationButton |
12.6.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-BEH-11-06-F01 | Zoek actieve doelmodule | Zoek actieve doelmodule | GlobalMigrationTargetModuleSearchInput | Geen persistente databron | Runtime filter | string | Ja | Wijzigt geen data. |
| SCH-BEH-11-06-T01 | Doelmodulelijst | Doelmodules | GlobalMigrationTargetModuleList | ExerciseModules | Gefilterde actieve doelmodules | collection | Nee | Alleen IsActive = true; bronmodule wordt uitgesloten. |
| SCH-BEH-11-06-A01 | Selecteer | Selecteer | SelectGlobalMigrationTargetModuleAction | ExerciseModules.Id | Runtime selectie | action | Ja | Doelmodule mag niet gelijk zijn aan bronmodule. |
| SCH-BEH-11-06-F02 | Bronmodule | Bronmodule | GlobalMigrationSourceModuleValue | ExerciseModules | Geselecteerde beheercontext | reference | Nee | Staat vast op geopende bronmodule. |
| SCH-BEH-11-06-F03 | Doelmodule | Doelmodule | GlobalMigrationTargetModuleValue | ExerciseModules | Runtime selectie | reference | Nee | Moet actief en geldig zijn bij uitvoering. |
| SCH-BEH-11-06-F04 | Docenten geraakt | Docenten geraakt | GlobalMigrationAffectedTeachersCount | Exercises, TeacherLevels, Users | Berekend | int | Nee | Telt docenten met te migreren actieve oefeningen. |
| SCH-BEH-11-06-F05 | Te migreren koppelingen | Te migreren koppelingen | GlobalMigrationExerciseLinksToMigrateCount | Exercises.ExerciseModuleId | Berekend | int | Nee | Telt alle actieve concrete oefeningen op de bronmodule. |
| SCH-BEH-11-06-F06 | Reden van migratie | Reden van migratie | GlobalModuleMigrationReasonInput | ExerciseModuleMigrations.Reason | Gebruikersinvoer | nvarchar(1000) | Ja | Verplicht vóór uitvoering. |
| SCH-BEH-11-06-B02 | Bevestig migratie | Bevestig migratie | ConfirmGlobalModuleMigrationButton | ExerciseModuleMigrations, Exercises, ExerciseHistory | Definitieve mutatie | action | Ja | Server-side autorisatie, doelmodulevalidatie, reden en audit verplicht. |
12.6.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-BEH-11-06-01 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Globale modulemigratie ondersteunen voor alle actieve concrete oefeningen die naar de bronmodule verwijzen |
REQ-SCH-BEH-11-06-02 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Alleen actieve doelmodules mogen selecteerbaar zijn voor globale modulemigratie |
REQ-SCH-BEH-11-06-03 | SRS-MOD-003 AC-MOD-003 | Migreren naar dezelfde module als de bronmodule wordt geblokkeerd |
REQ-SCH-BEH-11-06-04 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Vóór globale migratie tonen hoeveel docenten en actieve oefenkoppelingen geraakt worden |
REQ-SCH-BEH-11-06-05 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Vóór uitvoering van globale modulemigratie de beheerder een reden opgeven |
REQ-SCH-BEH-11-06-06 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | Een globale modulemigratie auditinformatie vastleggen met minimaal bronmodule, doelmodule, scope, uitvoerende beheerder, tijdstip, snapshots en reden |
REQ-SCH-BEH-11-06-07 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | Globale modulemigratie mag historische exercise runs, resultaten, gedeelde oefeningen en bestaande geschiedenis niet inhoudelijk herschrijven |
REQ-SCH-BEH-11-06-08 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | Per gemigreerde concrete oefening relevante ExerciseHistory worden vastgelegd |
12.7 Open Beheer — Geschiedenis
12.7.1 Schermafbeelding

12.7.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-BEH-11-07 |
| Schermnaam | Modules — Open beheer — Geschiedenis |
| Doelgroep / onderdeel | Beheerder |
| Bronbestand | oefenhub_beheerder_12_modules_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | oefenhub_beheerder_12_modules_v1_4_knop_open_beheer_tab_05_geschiedenis.png |
| Processtap / context | Beheerder bekijkt de historie van de geselecteerde technische module. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | Read-only historie; migraties verschijnen naast gewone modulewijzigingen. |
| Route / URL-patroon | Functioneel routepatroon: /beheer/content/modules/{exerciseModuleId}/beheer/geschiedenis. |
| Autorisatie / vereiste rol-context | Actieve beheerdercontext. |
| Primair domeinobject / hoofdentiteit | Modulehistorie opgebouwd uit ExerciseModuleHistory, ExerciseModuleMigrations, ExerciseHistory en actorinformatie. |
| Gerelateerde schermen / navigatie | Landingspagina Modules, Module, Migreren — docent, Migreren — alles. |
| Data-karakter | Read-only auditoverzicht met chronologische modulegebeurtenissen. |
12.7.3 Functionele beschrijving
De geschiedenisview toont alle relevante beheeracties op de geselecteerde module. De mockup toont onder andere versie-update, testzichtbaarheid, globale migratie, aanmaak, docentmigratie en een geblokkeerde statuswijziging. Dit zijn dynamische historie-items en geen vaste productiegegevens.
De view is read-only. Elke regel toont minimaal datum/tijd, actie, details, uitvoerende actor en reden. Migraties worden in dezelfde historie zichtbaar gemaakt als reguliere modulewijzigingen, zodat de beheerder één reconstructeerbare tijdlijn heeft voor de module. Voor migraties moet aanvullend duidelijk blijven wat bronmodule, doelmodule en scope waren. Bij docentgerichte migratie moet ook de docentcontext herleidbaar zijn.
De historie kan zijn opgebouwd uit meerdere bronnen: modulehistorie voor directe wijzigingen aan ExerciseModules, ExerciseModuleMigrations voor migratieacties en ExerciseHistory voor concrete oefenrecords die door migratie zijn geraakt. De zichtbare lijst mag als read model worden samengesteld, zolang de onderliggende auditinformatie intact blijft.
Leegstaat: wanneer nog geen historie bestaat buiten aanmaak, toont de view minimaal de aanmaakgebeurtenis of een expliciete melding dat er nog geen aanvullende wijzigingen zijn. Foutstaat: wanneer historie niet geladen kan worden, mag de view geen onvolledige data presenteren alsof die volledig is.
12.7.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-BEH-11-07-TAB01 | TAB | Beheertabs | Tabnavigatie binnen modulebeheer. | Geschiedenis | Actieve tab. | ModuleManagementTabs |
| SCH-BEH-11-07-S01 | S | Geschiedenis van deze module | Hoofdsectie met read-only historietabel. | Geschiedenis van deze module | Toont modulewijzigingen en migraties. | ModuleHistorySection |
| SCH-BEH-11-07-T01 | T | Historietabel | Chronologische tabel met modulegebeurtenissen. | Geschiedenis | Read-only auditoverzicht. | ModuleHistoryTable |
| SCH-BEH-11-07-F01 | F | Datum | Datum- en tijdkolom. | Datum | In lokale beheerweergave getoond; opslag in UTC. | ModuleHistoryDateValue |
| SCH-BEH-11-07-F02 | F | Actie | Type beheeractie. | Actie | Bijvoorbeeld versie bijgewerkt, migratie uitgevoerd, statuswijziging geblokkeerd. | ModuleHistoryActionValue |
| SCH-BEH-11-07-F03 | F | Details | Uitleg van de wijziging. | Details | Kan oude/nieuwe waarden of migratie-impact tonen. | ModuleHistoryDetailsValue |
| SCH-BEH-11-07-F04 | F | Door | Actor van de actie. | Door | Beheerder of systeemactie. | ModuleHistoryActorValue |
| SCH-BEH-11-07-F05 | F | Reden | Vastgelegde reden of toelichting. | Reden | Verplicht bij modulewijziging en migratie. | ModuleHistoryReasonValue |
12.7.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-BEH-11-07-T01 | Historietabel | Geschiedenis | ModuleHistoryTable | ExerciseModuleHistory, ExerciseModuleMigrations, ExerciseHistory, Users | Samengesteld chronologisch audit-readmodel | collection | Nee | Read-only; sortering standaard aflopend op gebeurtenismoment. |
| SCH-BEH-11-07-F01 | Datum | Datum | ModuleHistoryDateValue | Historiebron .ChangedAtUtc, .MigratedAtUtc of gelijkwaardig momentveld | Databasewaarde, lokaal weergegeven | datetime | Nee | Opslag in UTC; weergave in lokale beheercontext. |
| SCH-BEH-11-07-F02 | Actie | Actie | ModuleHistoryActionValue | Historiebron actie-/scopeveld | Database / afgeleid label | string / enum | Nee | Gesloten waardeset voor bekende moduleacties. |
| SCH-BEH-11-07-F03 | Details | Details | ModuleHistoryDetailsValue | Historiebron oude/nieuwe waarden, migratiesnapshots en aantallen | Samengesteld | string | Nee | Moet voldoende reconstructie bieden zonder historische payloads te herschrijven. |
| SCH-BEH-11-07-F04 | Door | Door | ModuleHistoryActorValue | Historiebron actor FK + Users | Samengestelde actorweergave | string / reference | Nee | Actor moet historisch herleidbaar blijven. |
| SCH-BEH-11-07-F05 | Reden | Reden | ModuleHistoryReasonValue | Historiebron .Reason | Databasewaarde | string | Nee | Verplicht bij modulewijziging en migratie; read-only in geschiedenis. |
12.7.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-BEH-11-07-01 | SRS-MOD-003 AC-MOD-003 | Per geselecteerde module een read-only geschiedenisview tonen |
REQ-SCH-BEH-11-07-02 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | De geschiedenisview per regel minimaal datum/tijd, actie, details, actor en reden tonen |
REQ-SCH-BEH-11-07-03 | SRS-MOD-003 SRS-MOD-004 AC-MOD-003 AC-MOD-004 | De geschiedenisview directe modulewijzigingen, statuswijzigingen, testzichtbaarheidswijzigingen, docentgerichte migraties en globale migraties kunnen tonen |
REQ-SCH-BEH-11-07-04 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | Voor migraties de historie minimaal bronmodule, doelmodule, scope, uitvoerende beheerder, tijdstip en reden kunnen reconstrueren |
REQ-SCH-BEH-11-07-05 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | Bij docentgerichte migraties de betreffende docentcontext historisch herleidbaar zijn |
REQ-SCH-BEH-11-07-06 | SRS-NFR-AUD-001 SRS-MOD-003 AC-NFR-AUD-001 AC-MOD-003 | Historie geen worden aangepast of verwijderd door reguliere beheerprocessen |
REQ-SCH-BEH-11-07-07 | SRS-MOD-003 AC-MOD-003 | De geschiedenisview mag geen mutatieacties aanbieden |
12.8 Technische koppeling
Voor technische uitwerking van modulebeheer zijn vooral relevant:
- 05 Autorisatie, policies en server-side contextcontrole voor beheerderautorisatie op module-inzage, beheer en migratieacties.
- 08 Oefencatalogus, niveaus, categorieën, oefeningen en modules voor catalogusrelaties tussen modules, categorieën, oefeningen en statuswaarden.
- 09 Oefenmodulecontract en dynamische module-integratie voor technische moduledefinities, modulecontracten en dynamische integratie.
- Oefenmodules — moduleplatform en contract voor de generieke documentatie- en contractbasis van beheerbare technische modules.
- Oefenmodule — Optellen & Aftrekken (simpel) als eerste concrete module waarvoor beheermetadata, CodeReference en modulebeschikbaarheid traceerbaar moeten blijven.
- 10 Oefenruns, voortgang, resultaten, statistieken en PDF-brondata voor impact van modulebeheer op bestaande runs, resultaten en historische brondata.
- 17 Readmodels, tellers, badges, caching en materialisatie voor moduletellers, statusoverzichten en beheerbadges.
- 19 Logging, audit, securitylogging en technische foutafhandeling voor geschiedenis, audit en foutafhandeling bij modulemutaties.
- 24 Frontend, Blazor, routing, state en componentopbouw voor modulefilters, open-beheer-tabs, migratiestappen en detailstate.