UC-BEH-MOD-009 — Modulemigratie-proefuitvoering controleren
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-MOD-009 |
| Naam | Modulemigratie-proefuitvoering controleren |
| Domein | Beheerder / Modules beheren |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, database, autorisatiecomponent, modulebeheercomponent, historiecomponent, strategy-interface |
| Rolcontext | Actieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Content > Modules beheren |
| Gerelateerde usecases | UC-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-007, UC-BEH-MOD-008, UC-BEH-MOD-010 |
| Primaire entiteiten | ExerciseModules, Exercises, ExerciseHistory, ExerciseModuleMigrations, ExerciseRuns, Users |
| Secundaire entiteiten / events | TeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, UserRoles, modulebeheer-readmodels, strategy-interface |
| Gerelateerde popups | POP-BEH-MOD-MIGRATION-PROOF-CONFIRM |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een beheerder voorafgaand aan bredere modulemigratie een afzonderlijke proefmigratie op precies één specifieke concrete oefening uitvoert.
De proefmigratie is bedoeld om in de praktijk te toetsen of de doelmodule zich correct gedraagt bij een representatieve oefening. Zij vervangt geen automatische backwards-compatibilitygarantie en geeft geen vrijbrief voor globale migratie zonder bewuste bevestiging.
De proefmigratie is smaller dan docentgerichte en globale migratie. Zij wijzigt precies de geselecteerde concrete oefening en legt de uitkomst auditbaar vast, zodat zichtbaar is welke oefening als proef is gemigreerd.
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:
- Kiezen van actieve doelmodule voor de geopende bronmodule.
- Selecteren van één concrete oefening die de bronmodule gebruikt.
- Uitvoeren van een proefmigratie voor die oefening.
- Vastleggen van proefmigratie-uitkomst en actor.
- Duidelijk maken dat historische runs niet worden herschreven.
- Geen bredere migratie starten vanuit deze usecase.
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.
- Alle oefeningen van een docent migreren; dit hoort bij UC-BEH-MOD-007.
- Alle oefeningen op een bronmodule migreren; dit hoort bij UC-BEH-MOD-008.
- Automatisch bepalen dat modules backwards compatible zijn.
- Leerlingresultaten opnieuw berekenen.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Docent / Oefeningen configureren | Docenten kiezen en configureren concrete oefeningen op basis van beschikbare modules; centrale technische module-identiteit wordt hier beheerd. |
| Beheerder / Docentondersteuning | Support kan concrete docentstructuren en oefeningen inspecteren, maar centrale modulemetadata en migraties worden hier beheerd. |
| Leerling / Oefenen en resultaten | Leerlingruns blijven historische uitvoeringen en worden niet herschreven door modulebeheer. |
| Database-informatie | ExerciseModules, ExerciseModuleMigrations en ExerciseHistory dragen de technische module-identiteit, migratieaudit en oefeninghistorie. |
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd in OefenHub. |
| PRE-002 | De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft. |
| PRE-003 | De beheerder bevindt zich binnen de beheeromgeving via Content > Modules beheren. |
| PRE-004 | De pagina gebruikt actuele serverdata; clientstate, routeparameters of verborgen formuliervelden bepalen geen autorisatie of module-identiteit. |
| PRE-005 | De beheerder heeft de detailweergave van de bronmodule geopend. |
| PRE-006 | Er bestaat een actieve doelmodule die verschilt van de bronmodule. |
| PRE-007 | Er bestaat minimaal één concrete oefening die de bronmodule gebruikt. |
| PRE-008 | De beheerder begrijpt dat proefuitvoering geen volledige compatibiliteitsgarantie vormt. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De geselecteerde concrete oefening is als proef gemigreerd naar de doelmodule. |
| POST-002 | De proefmigratie is auditbaar vastgelegd. |
| POST-003 | Geen globale of docentgerichte migratie is uitgevoerd. |
| POST-004 | Historische ExerciseRuns blijven ongewijzigd. |
| POST-005 | ExerciseHistory is voor de gemigreerde oefening vastgelegd. |
6. Trigger
De usecase start wanneer de beheerder in modulebeheer een proefmigratie start voor één gekozen oefening en doelmodule.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | Modulebeheer | Kiest doelmodule voor proef. | De frontend valideert dat doelmodule actief is en verschilt van bronmodule. | TargetExerciseModuleId. |
| 2 | Beheerder | Modulebeheer | Selecteert één concrete oefening. | Alleen oefeningen op de bronmodule zijn selecteerbaar. | ExerciseId. |
| 3 | Backend | MigratieService | Laadt oefeningcontext. | Oefening, docentcontext, niveau en categorie worden getoond voor controle. | Exercises en docentstructuur. |
| 4 | Frontend | Popup | Toont bevestiging met verplichte reden. | De beheerder bevestigt proefuitvoering. | PopupKey POP-BEH-MOD-MIGRATION-PROOF-CONFIRM. |
| 5 | Beheerder | Popup | Bevestigt met reden. | De backend voert de proefmigratie voor de geselecteerde oefening uit. | Reason verplicht. |
| 6 | Backend | MigratieService | Valideert bron, doel en oefening opnieuw. | Clientstate kan de oefening niet vervangen. | Server-side validatie. |
| 7 | Backend | MigratieService | Voert proefmigratie uit. | Alleen de gekozen oefening wordt naar de doelmodule gemigreerd. | Exercises.ExerciseModuleId. |
| 8 | Backend | HistorieService | Legt migratie vast. | Actor, tijdstip, bronmodule, doelmodule, oefening en reden worden auditbaar. | ExerciseModuleMigrations en ExerciseHistory. |
| 9 | Frontend | Modulebeheer | Toont proefresultaat. | De beheerder kan daarna bewust kiezen voor docentgerichte of globale migratie. | Geen automatische vervolgactie. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | Doelmodule is gelijk aan bronmodule. | De doelmodule wordt geweigerd. | Niet van toepassing. | Geen. |
| ALT-002 | 2 | Geen oefening geselecteerd. | De proefmigratieactie blijft uitgeschakeld. | Niet van toepassing. | Geen. |
| ALT-003 | 2 | Oefening gebruikt de bronmodule niet meer. | De selectie wordt geweigerd en lijst wordt herladen. | Niet van toepassing. | Geen. |
| ALT-004 | 4 | Beheerder annuleert. | Geen proefmigratie wordt uitgevoerd. | POP-BEH-MOD-MIGRATION-PROOF-CONFIRM. | Geen. |
| ALT-005 | 5 | Reden ontbreekt. | De bevestiging wordt geweigerd. | POP-BEH-MOD-MIGRATION-PROOF-CONFIRM. | Geen. |
| ALT-006 | 7 | Proefmigratie faalt technisch. | De transactie wordt teruggedraaid, de fout wordt veilig getoond en er wordt geen bredere migratie gestart. | Niet van toepassing. | Geen definitieve oefeningmutatie. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-001 | Proefmigratie raakt precies één concrete oefening. |
| BR-002 | Een geslaagde proefmigratie bewijst niet automatisch backwards compatibility voor alle oefeningen. |
| BR-003 | De proefmigratie start nooit automatisch een docentgerichte of globale migratie. |
| BR-004 | De beheerder moet een reden opgeven. |
| BR-005 | Historische runs blijven ongewijzigd. |
| BR-006 | De gekozen oefening moet server-side nog naar de bronmodule verwijzen. |
| BR-007 | De uitkomst van de proef moet auditbaar zijn. |
| BR-008 | ExerciseHistory moet de proefmigratie op oefeningniveau zichtbaar maken. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-001 | TargetExerciseModuleId is verplicht, actief en verschillend van bronmodule. |
| VAL-002 | ExerciseId is verplicht en moet naar een oefening op de bronmodule verwijzen. |
| VAL-003 | Reason is verplicht en maximaal 500 tekens. |
| VAL-004 | De beheerderrol wordt vlak vóór uitvoering gevalideerd. |
| VAL-005 | De proefscope moet precies één oefening omvatten. |
| VAL-006 | Foutdetails worden veilig gelogd en niet als stacktrace getoond. |
11. Datamutaties en events
| ID | Mutatie / event | Toelichting |
|---|---|---|
| MUT-001 | Update Exercises | ExerciseModuleId wordt voor precies de geselecteerde oefening aangepast naar de doelmodule. |
| MUT-002 | Insert ExerciseModuleMigrations | Migratieheader met bron, doel, scope Proof, oefening, actor, tijdstip en reden. |
| MUT-003 | Insert ExerciseHistory | Voor de gemigreerde oefening wordt MODULE_MIGRATION_SOURCE_TO_TARGET vastgelegd. |
12. Geen datamutaties
| ID | Geen mutatie | Reden |
|---|---|---|
| NO-001 | Andere Exercises | Alleen de geselecteerde oefening wordt gemigreerd. |
| NO-002 | Docentgerichte scope | Geen volledige docentenset wordt geraakt. |
| NO-003 | Globale scope | Geen globale modulescope wordt geraakt. |
| NO-004 | ExerciseRuns | Historische runs blijven ongewijzigd. |
| NO-005 | SharedExercises | Gedeelde oefenrecords blijven ongewijzigd. |
| NO-006 | UserRoles | Geen rolwijzigingen. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-BEH-MOD-MIGRATION-PROOF-CONFIRM | Bevestiging van proefmigratie 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
| Document | Afleiding |
|---|---|
| Functioneel Ontwerp | Een beheerder kan voorafgaand aan brede migratie een afzonderlijke proefmigratie op één oefening uitvoeren. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, oefenmodulecontract, background jobs en teststrategie beschrijven de technische uitwerking. De proefscope is precies één oefening en legt migratie auditbaar vast via migratieregistratie en ExerciseHistory. |
| Software Requirements Specification | SRS moet voorkomen dat proefmigratie automatisch docentgerichte of globale migratie start. |
| Database | Gebruikt 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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-BEH-MOD-009-001 | SRS-LRN-009 SRS-ADM-001 AC-LRN-009 AC-ADM-001 | Proefmigratie van precies één concrete oefening ondersteunen |
REQ-BEH-MOD-009-002 | SRS-LRN-009 SRS-ADM-004 SRS-ADM-001 SRS-MOD-003 AC-LRN-009 AC-ADM-004 AC-ADM-001 AC-MOD-003 | Alleen oefeningen tonen die de bronmodule gebruiken |
REQ-BEH-MOD-009-003 | SRS-ADM-004 SRS-ADM-001 SRS-MOD-003 AC-ADM-004 AC-ADM-001 AC-MOD-003 | Een actieve doelmodule vereisen die verschilt van de bronmodule |
REQ-BEH-MOD-009-004 | SRS-ADM-001 AC-ADM-001 | Een verplichte reden vragen |
REQ-BEH-MOD-009-005 | SRS-ADM-001 SRS-NFR-AUD-001 AC-ADM-001 AC-NFR-AUD-001 | De proefmigratie auditbaar vastleggen in migratiehistorie en ExerciseHistory |
REQ-BEH-MOD-009-006 | SRS-TCH-001 SRS-ADM-001 AC-TCH-001 AC-ADM-001 | Door proefmigratie geen docentgerichte of globale migratie starten |
REQ-BEH-MOD-009-007 | SRS-LRN-009 SRS-SHR-001 SRS-ADM-001 AC-LRN-009 AC-SHR-001 AC-ADM-001 | Historische ExerciseRuns en gedeelde oefeningen niet herschrijven |
REQ-BEH-MOD-009-008 | SRS-AUTH-004 SRS-LRN-009 SRS-ADM-001 AC-AUTH-004 AC-LRN-009 AC-ADM-001 | Alleen de geselecteerde oefening muteren en alle andere oefeningen ongemoeid laten |