Beheerder — Modules beheren
Dit subdomein beschrijft hoe beheerders technische oefenmodules centraal beheren. Modules worden administratief vastgelegd in ExerciseModules en vormen de koppeling tussen een leesbare modulenaam, de technische CodeReference, versie-informatie, reguliere beschikbaarheid, test-zichtbaarheid en gecontroleerde modulemigraties.
De beheerpagina Modules beheren hoort bij het beheermenu Content. De pagina beheert technische modulemetadata en onderhoudsacties. Concrete docent-oefeningen, oefeningnamen, iconen en modulespecifieke configuratiepayloads worden niet inhoudelijk bewerkt vanuit dit subdomein; die blijven bronhoudend in docentflows of docentondersteuning.
Usecases
Relevante schermdocumentatie
| Scherm / onderdeel | Gebruik binnen dit subdomein |
|---|
| Content > Modules beheren | Hoofdroute voor technisch modulebeheer. |
| Moduleoverzicht | Toont modulemetadata, actiefstatus, test-zichtbaarheid en afgeleide impactwaarden. |
| Modulebeheer-detail | Toont de onderdelen Intro / uitleg, Module, Migreren - docent, Migreren - alles en Geschiedenis. |
| Module-sectie | Beheert toegestane modulemetadata, actiefstatus, test-zichtbaarheid en connectiviteitstest. |
| Migreren - docent | Voert migratie uit voor actieve concrete oefeningen van één geselecteerde docent. |
| Migreren - alles | Voert migratie uit voor alle actieve concrete oefeningen die de bronmodule gebruiken. |
| Proefmigratie | Voert een gecontroleerde migratie uit op precies één concrete oefening. |
| Geschiedenis | Toont beheerhistorie, modulemigraties en relevante ExerciseHistory-samenvattingen. |
Domeinafbakening
| Binnen dit subdomein | Buiten dit subdomein |
|---|
Beheer van technische modulemetadata in ExerciseModules. | Bouwen, deployen of wijzigen van technische modulecode. |
Wijzigen van IsActive en IsVisibleForTesting op moduleniveau. | Toekennen of intrekken van de rol TestDocent; dat hoort bij accountbeheer. |
Healthcheck op CodeReference via de strategy-interface. | Functionele moduleconfiguratie of antwoordvalidatie van concrete oefeningen. |
| Docentgerichte, globale en enkelvoudige proefmigratie van concrete oefeningen naar een andere module. | Leerlingruns, resultaten, geschiedenis, PDF-contexten of gedeelde oefeningen herschrijven. |
| Auditbare vastlegging van modulemetadatawijzigingen, statuswijzigingen en modulemigraties. | Vrije bewerking van docentniveaus, categorieën, leerlingautorisaties of oefeninhoud. |
| Impactreadmodels over koppelingen, docenten, unieke leerlingen en gebruik. | Nieuwe technische sleutels of moduledefinities via een vrije GUI aanmaken. |
Modulevelden en eigenaarschap
| Veld / gegeven | Regel |
|---|
DisplayName | Beheerbaar als leesbare moduleweergavenaam. |
CodeReference | Technische sleutel naar modulecode; read-only in de beheerinterface. |
Version | Technisch beheerde versie-informatie; read-only wanneer de implementatie deze uit code of migratie bepaalt. |
IsActive | Bepaalt reguliere inzetbaarheid voor docentflows. Uitschakelen mag niet zolang actieve concrete oefeningen de module gebruiken. |
IsVisibleForTesting | Bepaalt zichtbaarheid voor TestDocent; staat los van reguliere actiefstatus en wijzigt geen rollen. |
| Impactwaarden | Afgeleide readmodelwaarden; zij worden niet als losse tellerwaarheid opgeslagen. |
| Modulegeschiedenis | Legt actor, UTC-tijdstip, actie, veld of scope, oude waarde, nieuwe waarde en reden vast waar een beheeractie dat vereist. |
Migratiescopes
| Scope | Betekenis | Mutatiegrens |
|---|
| Proefuitvoering | Precies één geselecteerde concrete oefening migreren naar een doelmodule. | Eén Exercises-record, één migratieregistratie en ExerciseHistory voor die oefening. |
| Docentgericht | Actieve concrete oefeningen van één geselecteerde docent migreren. | Alleen oefeningen binnen de gekozen docentcontext die de bronmodule gebruiken. |
| Globaal | Alle actieve concrete oefeningen op de bronmodule migreren. | Alle actieve concrete oefeningen die server-side binnen de globale scope vallen. |
Historische ExerciseRuns, resultaatweergaven, PDF-exportcontexten en gedeelde oefenrecords blijven bij iedere migratiescope ongewijzigd. De migratie beïnvloedt toekomstig gebruik van de concrete oefeningen, niet de historische uitvoering van afgeronde of lopende runs.
Bijzondere regels
- Server-side beheerderautorisatie is leidend voor iedere lees- en mutatieactie.
- Modulebeheer ontdekt geen modules vrij uit runtime-code; de administratieve bron is
ExerciseModules.
- De beheerinterface wijzigt geen modulespecifieke configuratiepayload van concrete oefeningen.
- Uitschakelen van een module is geblokkeerd zolang actieve concrete oefeningen of actieve oefenkoppelingen de module gebruiken.
- Test-zichtbaarheid wijzigt geen gebruikersrollen en maakt een module niet automatisch regulier actief.
- Moduleconnectiviteit testen schrijft geen functionele modulegeschiedenis en wijzigt geen modulebeschikbaarheid.
- Migreren naar dezelfde module is niet toegestaan.
- Alleen actieve doelmodules zijn geldig voor modulemigratie.
- De beheerder is procesmatig verantwoordelijk voor compatibiliteit en rollbackstrategie; OefenHub voert geen automatische compatibiliteitsgarantie af.
- Iedere echte modulemigratie wordt auditbaar vastgelegd met bronmodule, doelmodule, scope, actor, tijdstip, reden en geraakte oefeningen.
- Popupteksten en popupgedrag worden niet in deze usecases gedupliceerd; usecases verwijzen uitsluitend op
PopupKey-niveau wanneer een popup relevant is.
Diagramgebruik
| Diagramtype | Gebruik binnen dit subdomein |
|---|
| State diagram | Alleen gebruiken bij echte module-statussen of migratielifecycle; read-only raadpleegflows en healthchecks hebben geen zelfstandig statusmodel. |
| Decision flow | Gebruikt voor autorisatie, doelmodulevalidatie, afhankelijkheidscontrole, migratiescope, redenplicht en blokkades. |
| Data lifecycle diagram | Gebruikt om te tonen welke records worden gelezen, gewijzigd, historisch vastgelegd of juist onaangetast blijven. |
| Sequence diagram | Gebruikt wanneer beheerder, frontend, backend, autorisatiecomponent, database, historyservice, migratieservice of strategy-interface samenwerken. |