Beheerder — Categorieën beheren
Dit subdomein beschrijft het centrale beheer van categorieën binnen OefenHub. De beheerpagina richt zich op centrale categorie-identiteit, status, migratie en beheerhistorie. Docentniveaubeheer, concrete oefeningconfiguratie, leerlingtoegang en modulebeheer blijven buiten dit subdomein.
Categorieën zijn gedeelde centrale onderwijsinhoud. Naam, kleur en icoon vormen de centrale identiteit en kunnen in meerdere docentniveaus, leerlingweergaven, resultaten en historische contexten zichtbaar zijn. Wijzigingen en migraties zijn daarom beheeracties met server-side autorisatie, expliciete reden, volledige historie en duidelijke bescherming tegen onbedoelde impact.
Usecases
| Usecase | Naam | Kern |
|---|---|---|
| UC-BEH-CAT-001 | Categorieoverzicht bekijken | Toont centrale categorieën met status en gebruiksimpact. |
| UC-BEH-CAT-002 | Categoriebeheer openen | Opent de beheerweergave voor precies één geselecteerde categorie. |
| UC-BEH-CAT-003 | Categoriegegevens wijzigen | Wijzigt naam, kleur of icoon met verplichte bevestiging en history. |
| UC-BEH-CAT-004 | Categoriestatus wijzigen | Zet een categorie uit gebruik of herstelt deze binnen de geldende blokkaderegels. |
| UC-BEH-CAT-005 | Categoriemigratie voorbereiden | Bepaalt impact en conflicten vóór uitvoering van een migratie. |
| UC-BEH-CAT-006 | Categorie migreren | Migreert actieve koppelingen naar een bestaande doelcategorie zonder historische runs te herschrijven. |
| UC-BEH-CAT-007 | Categoriegeschiedenis bekijken | Toont append-only beheerhistorie, inclusief wijzigings- en migratieregels. |
Relevante schermdocumentatie
| Scherm | Relevantie |
|---|---|
| Beheerder / Content / Categorieën beheren | Hoofdscherm voor overzicht, selectie, detailbeheer, migratie en geschiedenis. |
| Beheerder / Docentondersteuning | Aangrenzende beheercontext voor analyse van concrete docentstructuren; geen bron voor centrale categorie-identiteit. |
| Docent / Oefenaanbod | Aangrenzende docentcontext waarin categorieën aan niveaus worden gekoppeld en nieuwe centrale categorieën via docentflow kunnen ontstaan. |
Domeinafbakening
Categorieën beheren is geen vrije contenteditor en geen docentniveau-editor. De beheerder beheert centrale categorie-identiteit, status, migratie en historie. De docentflows blijven bronhoudend voor het koppelen van categorieën aan niveaus en voor het beheren van concrete oefeningen binnen een docentcontext.
Dit subdomein schrijft historische exercise runs, resultaat-PDF's en gedeelde-oefening-snapshots niet om. Historische context blijft herleidbaar zoals die gold op het moment van oefenen, afronden of delen. Leerlingzichtbaarheid blijft afgeleid uit actieve niveau-, categorie- en oefencontexten en wordt niet rechtstreeks in deze beheerflows toegekend.
Bijzondere regels
| Onderwerp | Regel |
|---|---|
| Centrale identiteit | Naam, kleur en icoon zijn gedeelde categorie-eigenschappen en worden niet per docentcontext gedupliceerd. |
| Tweestapsflow | De beheerder selecteert eerst een categorie en opent daarna de detail- en beheerweergave. |
| Statuswijziging | Uitfaseren of verwijderen is geblokkeerd zolang actieve docentniveau- of oefenkoppelingen bestaan. |
| Migratie | Migreren werkt altijd vanuit een vaste broncategorie naar een bestaande actieve doelcategorie. |
| Duplicaatpreventie | Migratie mag geen dubbele actieve niveaucategorie- of oefenkoppelingen aanmaken. |
| Historische data | ExerciseRuns, gedeelde-oefening-snapshots en resultaatcontexten worden niet herschreven. |
| Audit | CategoryHistory is append-only; CategoryMigrations legt bron, doel, actor, moment en reden vast. |
| Communicatie | Betrokken docenten kunnen via centrale systeemberichtcommunicatie worden geïnformeerd over uitgevoerde migraties; de berichtinhoud blijft bronhoudend in systeemberichttemplates. |
Diagramgebruik
Read-only usecases gebruiken geen persistent state diagram wanneer er geen statusobject wijzigt. Muterende usecases gebruiken diagrammen alleen waar zij de status-, beslis- of datalifecycle verduidelijken. Categoriemigratie heeft een expliciete decision flow en data lifecycle omdat deze meerdere koppelingen, historyregels en migratierecords transactioneel verwerkt.