Skip to main content

UC-BEH-MOD-007 — Modulemigratie docentgericht uitvoeren

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-MOD-007
NaamModulemigratie docentgericht uitvoeren
DomeinBeheerder / Modules beheren
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, database, autorisatiecomponent, modulebeheercomponent, historiecomponent, strategy-interface
RolcontextActieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenContent > Modules beheren
Gerelateerde usecasesUC-BEH-MOD-001, UC-BEH-MOD-002, UC-BEH-MOD-003, UC-BEH-MOD-004, UC-BEH-MOD-005, UC-BEH-MOD-006, UC-BEH-MOD-008, UC-BEH-MOD-009, UC-BEH-MOD-010
Primaire entiteitenExerciseModules, Exercises, ExerciseHistory, ExerciseModuleMigrations, ExerciseRuns, Users
Secundaire entiteiten / eventsTeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, UserRoles, modulebeheer-readmodels, strategy-interface
Gerelateerde popupsPOP-BEH-MOD-MIGRATION-TEACHER-CONFIRM
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een beheerder vanuit de sectie Migreren - docent alle relevante actieve concrete oefeningen van één geselecteerde docent migreert van de geopende bronmodule naar een actieve doelmodule.

De flow gebruikt twee opeenvolgende stappen: eerst kiest de beheerder een actieve doelmodule, daarna kiest de beheerder een docent die de bronmodule daadwerkelijk gebruikt. De definitieve actie blijft uitgeschakeld zolang stap 1 niet geldig is afgerond.

De migratie wijzigt actieve Exercises vooruit voor toekomstig gebruik. Historische ExerciseRuns, resultaten, gedeelde oefeningen en PDF-contexten worden niet herschreven. Compatibiliteit wordt niet hard bewezen door OefenHub; de beheerder neemt deze beheeractie bewust met verplichte reden.

Uitgangspunten

  • Technische modules worden administratief beheerd in ExerciseModules en niet runtime ontdekt uit assemblies of codepaden.
  • Een concrete oefening verwijst altijd naar precies één ExerciseModules-record.
  • Modulebeheer wijzigt centrale modulemetadata en onderhoudsacties, niet de inhoudelijke docentconfiguratie van oefeningen.
  • Historische runs behouden hun oorspronkelijke modulecontext.
  • Popupinhoud blijft bronhoudend in het centrale popupregister.

3. Scope

Deze usecase beschrijft:

  • Doelmodule kiezen voor de geopende bronmodule.
  • Docent kiezen die minimaal één actieve oefening op de bronmodule heeft.
  • Migreren van alle relevante actieve concrete oefeningen van die docent.
  • Vastleggen van ExerciseModuleMigrations met scope Teacher.
  • Vastleggen van ExerciseHistory per gemigreerde oefening.
  • Behouden van historische runs en resultaten.

Deze usecase beschrijft niet:

  • Concrete docent-oefeningen configureren of de modulespecifieke configuratiepayload bewerken; dat blijft bronhoudend in docentflows of docentondersteuning.
  • Leerlingruns, resultaten, geschiedenis of gedeelde oefeningen herschrijven; historische runs behouden hun oorspronkelijke modulecontext.
  • Nieuwe technische modulecode leveren of implementeren; modulecode blijft onderdeel van de technische codebase.
  • Popupteksten, knopteksten of inputlabels specificeren; usecases verwijzen uitsluitend naar PopupKey.
  • Globale migratie voor alle docenten; dit hoort bij UC-BEH-MOD-008.
  • Proefmigratie op één specifieke oefening; dit hoort bij UC-BEH-MOD-009.
  • Backwards compatibility technisch bewijzen of afdwingen.
  • Nieuwe doelmodule aanmaken tijdens de migratieflow.

3.1 Afbakening met aangrenzende domeinen

OnderdeelAfbakening
Docent / Oefeningen configurerenDocenten kiezen en configureren concrete oefeningen op basis van beschikbare modules; centrale technische module-identiteit wordt hier beheerd.
Beheerder / DocentondersteuningSupport kan concrete docentstructuren en oefeningen inspecteren, maar centrale modulemetadata en migraties worden hier beheerd.
Leerling / Oefenen en resultatenLeerlingruns blijven historische uitvoeringen en worden niet herschreven door modulebeheer.
Database-informatieExerciseModules, ExerciseModuleMigrations en ExerciseHistory dragen de technische module-identiteit, migratieaudit en oefeninghistorie.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd in OefenHub.
PRE-002De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft.
PRE-003De beheerder bevindt zich binnen de beheeromgeving via Content > Modules beheren.
PRE-004De pagina gebruikt actuele serverdata; clientstate, routeparameters of verborgen formuliervelden bepalen geen autorisatie of module-identiteit.
PRE-005De beheerder heeft de detailweergave van de bronmodule geopend.
PRE-006De sectie Migreren - docent is zichtbaar.
PRE-007Er bestaat minimaal één andere actieve doelmodule.
PRE-008Er bestaat minimaal één docent met actieve oefeningen op de bronmodule.

5. Post-condities

IDResultaat
POST-001Alle relevante actieve oefeningen van de geselecteerde docent verwijzen naar de doelmodule wanneer de migratie slaagt.
POST-002Per gemigreerde oefening is ExerciseHistory vastgelegd met ActionType MODULE_MIGRATION_SOURCE_TO_TARGET.
POST-003ExerciseModuleMigrations bevat bronmodule, doelmodule, scope Teacher, docentcontext, actor, tijdstip en reden.
POST-004Historische ExerciseRuns en bestaande resultaten blijven ongewijzigd.
POST-005Bij fout wordt geen gedeeltelijk onherleidbare migratie achtergelaten.

6. Trigger

De usecase start wanneer de beheerder in Migreren - docent een doelmodule en docent kiest en de migratie bevestigt.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderMigreren - docentKiest actieve doelmodule.De frontend valideert dat doelmodule verschilt van bronmodule.Stap 1.
2BackendModuleServiceLaadt beschikbare doelmodules.Alleen actieve modules zijn selecteerbaar.ExerciseModules.IsActive = true.
3BeheerderMigreren - docentKiest docent.De lijst bevat alleen docenten met actieve oefeningen op de bronmodule.Stap 2.
4BackendMigratieServiceBepaalt migratiescope.Alle actieve oefeningen van deze docent op de bronmodule worden geselecteerd.Exercises, TeacherLevels.
5FrontendPopupToont bevestiging met verplichte reden.De beheerder bevestigt bewust de migratie.PopupKey POP-BEH-MOD-MIGRATION-TEACHER-CONFIRM.
6BeheerderPopupBevestigt met reden.De backend start transactionele verwerking.Reason verplicht.
7BackendMigratieServiceValideert bron, doel en docent opnieuw.Clientstate mag de scope niet verruimen.Server-side validatie.
8BackendMigratieServiceUpdate Exercises.ExerciseModuleId wordt voor geselecteerde actieve oefeningen aangepast naar doelmodule.Exercises.ExerciseModuleId.
9BackendMigratieServiceSchrijft ExerciseModuleMigrations.Scope Teacher en docentcontext worden vastgelegd.ExerciseModuleMigrations.
10BackendHistorieServiceSchrijft ExerciseHistory per oefening.ActionType MODULE_MIGRATION_SOURCE_TO_TARGET.ExerciseHistory.
11FrontendMigreren - docentToont resultaat en bijgewerkte impact.Bronmodule-impact wordt herberekend.Readmodel.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011Doelmodule is gelijk aan bronmodule.De doelkeuze wordt geweigerd.Niet van toepassing.Geen.
ALT-0021Geen actieve doelmodule beschikbaar.De migratieflow toont een lege staat; definitieve actie is uitgeschakeld.Niet van toepassing.Geen.
ALT-0033Geen docent gebruikt de bronmodule.Stap 2 toont geen kandidaten en migratie kan niet worden uitgevoerd.Niet van toepassing.Geen.
ALT-0045Beheerder annuleert.Geen migratie wordt uitgevoerd.POP-BEH-MOD-MIGRATION-TEACHER-CONFIRM.Geen.
ALT-0056Reden ontbreekt.De bevestiging wordt geweigerd.POP-BEH-MOD-MIGRATION-TEACHER-CONFIRM.Geen.
ALT-0067Scope is intussen gewijzigd.De backend herberekent scope en voert geen verouderde migratie uit zonder actuele bevestiging.Niet van toepassing.Geen.
ALT-0078Een oefening kan niet worden bijgewerkt.De transactie wordt teruggedraaid of fout wordt volledig auditbaar afgehandeld zonder onherleidbare tussenstaat.Niet van toepassing.Geen gedeeltelijke migratie.

9. Business rules

IDBusiness rule
BR-001Docentgerichte migratie werkt altijd vanuit de geopende bronmodule.
BR-002Stap 1 doelmodule moet geldig zijn voordat stap 2 definitief uitvoerbaar is.
BR-003Alleen actieve modules zijn selecteerbaar als doelmodule.
BR-004De docentlijst bevat alleen docenten die minimaal één actieve concrete oefening op de bronmodule hebben.
BR-005Migreren naar dezelfde module is niet toegestaan.
BR-006De beheerder moet een reden opgeven.
BR-007Historische runs, resultaten, geschiedenis, PDF-export en gedeelde oefeningen worden niet herschreven.
BR-008OefenHub dwingt backwards compatibility niet hard af; dit blijft een expliciet beheerdersrisico.
BR-009Per gemigreerde oefening moet ExerciseHistory zichtbaar maken dat modulemigratie heeft plaatsgevonden.

10. Datavalidatie

IDValidatie
VAL-001SourceExerciseModuleId is de geopende module en mag niet vanuit clientstate worden overschreven.
VAL-002TargetExerciseModuleId is verplicht, actief en verschillend van bronmodule.
VAL-003TeacherUserId is verplicht en moet een docent zijn met relevante actieve oefeningen op de bronmodule.
VAL-004Reason is verplicht en maximaal 500 tekens.
VAL-005Migratiescope wordt server-side berekend.
VAL-006Alle te migreren Exercises moeten voor aanpassing nog naar de bronmodule verwijzen.
VAL-007De migratie moet transactioneel of volledig herleidbaar worden verwerkt.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001Update ExercisesExerciseModuleId wordt voor de geselecteerde actieve oefeningen aangepast naar de doelmodule.
MUT-002Insert ExerciseModuleMigrationsMigratieheader met bron, doel, scope Teacher, docentcontext, snapshots, actor, tijdstip en reden.
MUT-003Insert ExerciseHistoryPer gemigreerde oefening een MODULE_MIGRATION_SOURCE_TO_TARGET-regel.

12. Geen datamutaties

IDGeen mutatieReden
NO-001ExerciseRunsHistorische runcontext blijft ongewijzigd.
NO-002ExerciseRunProgressVraagvoortgang blijft ongewijzigd.
NO-003SharedExercisesGedeelde oefenrecords en snapshots blijven ongewijzigd.
NO-004ModuleConfigurationJsonBase64Configuratiepayload wordt niet automatisch geconverteerd tenzij expliciet onderdeel van technische migratieverwerking; deze usecase legt de functionele grens vast.
NO-005UserRolesDocent- of beheerderrollen blijven ongewijzigd.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyGebruik
POP-BEH-MOD-MIGRATION-TEACHER-CONFIRMBevestiging van docentgerichte modulemigratie met verplichte reden.

De popupinhoud, knopteksten, inputlabels en themakeuze blijven bronhoudend in het popupregister en popup-themes.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DocumentAfleiding
Functioneel OntwerpDocentgerichte modulemigratie migreert actieve concrete oefeningen van één docent van bronmodule naar doelmodule.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, background jobs en teststrategie beschrijven de technische uitwerking. Migratie schrijft ExerciseModuleMigrations en ExerciseHistory en wijzigt Exercises.ExerciseModuleId.
Software Requirements SpecificationSRS moet stapvolgorde, doelmodulevalidatie, docentfilter en historische non-mutatie eisen.
DatabaseGebruikt ExerciseModules, Exercises, ExerciseModuleMigrations en ExerciseHistory.

19. SRS-trace

Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.

Usecase-afleidingDektUsecasecontext
REQ-BEH-MOD-007-001SRS-TCH-001
SRS-ADM-004
SRS-ADM-001
SRS-MOD-004
AC-TCH-001
AC-ADM-004
AC-ADM-001
AC-MOD-004
Docentgerichte modulemigratie ondersteunen vanuit een geopende bronmodule
REQ-BEH-MOD-007-002SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-ADM-004
AC-ADM-001
AC-MOD-003
Eerst een actieve doelmodule vereisen
REQ-BEH-MOD-007-003SRS-AUTH-001
SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-AUTH-001
AC-ADM-004
AC-ADM-001
AC-MOD-003
Migreren naar dezelfde module blokkeren
REQ-BEH-MOD-007-004SRS-LRN-009
SRS-TCH-002
SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-LRN-009
AC-TCH-002
AC-ADM-004
AC-ADM-001
AC-MOD-003
Alleen docenten tonen die actieve oefeningen op de bronmodule hebben
REQ-BEH-MOD-007-005SRS-ADM-001
AC-ADM-001
Vóór uitvoering een verplichte reden vragen
REQ-BEH-MOD-007-006SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
AC-ADM-004
AC-ADM-001
AC-MOD-003
Exercises.ExerciseModuleId voor de geldige scope aanpassen
REQ-BEH-MOD-007-007SRS-ADM-004
SRS-ADM-001
SRS-MOD-003
SRS-NFR-AUD-001
AC-ADM-004
AC-ADM-001
AC-MOD-003
AC-NFR-AUD-001
ExerciseModuleMigrations met scope Teacher vastleggen
REQ-BEH-MOD-007-008SRS-LRN-009
SRS-ADM-001
SRS-NFR-AUD-001
AC-LRN-009
AC-ADM-001
AC-NFR-AUD-001
Per gemigreerde oefening ExerciseHistory vastleggen
REQ-BEH-MOD-007-009SRS-LRN-009
SRS-SHR-001
SRS-ADM-001
AC-LRN-009
AC-SHR-001
AC-ADM-001
Historische ExerciseRuns, resultaten en gedeelde oefeningen niet herschrijven