UC-BEH-MOD-005 — Test-zichtbaarheid wijzigen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-MOD-005 |
| Naam | Test-zichtbaarheid wijzigen |
| 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-006, UC-BEH-MOD-007, UC-BEH-MOD-008, UC-BEH-MOD-009, 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-TEST-VISIBILITY-CONFIRM |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een beheerder de test-zichtbaarheid van een technische module wijzigt.
IsVisibleForTesting bepaalt of de module zichtbaar mag zijn voor docenten met de niet-publieke rol TestDocent. Deze vlag staat los van reguliere actiefstatus en mag de productieve inzetbaarheid van een module niet impliciet wijzigen.
Het doel is gecontroleerde beschikbaarheid voor testdocenten mogelijk te maken zonder een aparte extra autorisatielaag naast de rollenstructuur en de modulevlag te introduceren.
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:
- In- of uitschakelen van IsVisibleForTesting.
- Bevestiging met verplichte reden.
- Gescheiden houden van test-zichtbaarheid en reguliere actiefstatus.
- Auditbaar vastleggen van wijziging.
- Toelichten dat alleen gebruikers met rol TestDocent de testzichtbare module mogen zien in relevante docent-/testflows.
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.
- Rollen toekennen aan docenten; TestDocent-roltoekenning hoort bij accountbeheer.
- Reguliere actiefstatus wijzigen; dit hoort bij UC-BEH-MOD-004.
- Een aparte autorisatielaag voor testmodules introduceren.
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 één module geopend. |
| PRE-006 | De sectie Module toont de huidige test-zichtbaarheid. |
| PRE-007 | De rol TestDocent bestaat als niet-publieke rol in het autorisatiemodel. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | IsVisibleForTesting is gewijzigd wanneer alle validaties slagen. |
| POST-002 | UpdatedByUserId en UpdatedAtUtc zijn bijgewerkt. |
| POST-003 | De wijziging is auditbaar vastgelegd met reden. |
| POST-004 | IsActive is niet impliciet gewijzigd. |
| POST-005 | Rollen of gebruikerskoppelingen zijn niet gewijzigd. |
6. Trigger
De usecase start wanneer de beheerder de test-zichtbaarheid van een module wijzigt en de wijziging bevestigt.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | Sectie Module | Wijzigt test-zichtbaarheid. | De frontend markeert de wijziging als nog niet opgeslagen. | IsVisibleForTesting doelwaarde. |
| 2 | Frontend | Sectie Module | Toont toelichting op TestDocent. | Alleen TestDocent mag testzichtbare modules gebruiken. | Rolcontext. |
| 3 | Beheerder | Sectie Module | Kiest Opslaan. | De frontend vraagt bevestiging met reden. | PopupKey POP-BEH-MOD-TEST-VISIBILITY-CONFIRM. |
| 4 | Beheerder | Bevestigingspopup | Bevestigt met reden. | De backend verwerkt de wijziging. | Reason verplicht. |
| 5 | Backend | Autorisatiecomponent | Controleert beheerdercontext opnieuw. | Alleen beheerder mag deze vlag wijzigen. | Server-side autorisatie. |
| 6 | Backend | ModuleService | Wijzigt IsVisibleForTesting. | Alleen de testzichtbaarheidsvlag en auditvelden worden aangepast. | ExerciseModules.IsVisibleForTesting. |
| 7 | Backend | Historiecomponent | Registreert wijziging. | Oude waarde, nieuwe waarde, actor, tijdstip en reden worden vastgelegd. | Beheeraudit / modulehistory. |
| 8 | Frontend | Sectie Module | Toont nieuwe test-zichtbaarheid. | Beschikbaarheid voor testdocenten wordt afgeleid in de relevante docentflow. | Detailreadmodel. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | Beheerder annuleert. | De test-zichtbaarheid blijft ongewijzigd. | POP-BEH-MOD-TEST-VISIBILITY-CONFIRM. | Geen. |
| ALT-002 | 4 | Reden ontbreekt. | De bevestiging wordt geweigerd. | POP-BEH-MOD-TEST-VISIBILITY-CONFIRM. | Geen. |
| ALT-003 | 5 | Gebruiker is geen beheerder. | De backend weigert de wijziging. | Niet van toepassing. | Geen. |
| ALT-004 | 6 | Doelwaarde is gelijk aan actuele waarde. | Er wordt geen mutatie uitgevoerd. | Niet van toepassing. | Geen. |
| ALT-005 | 6 | Module is technisch niet resolvebaar. | De vlagwijziging kan worden toegestaan of geblokkeerd volgens technische beschikbaarheidsregel; er wordt nooit aangenomen dat modulecode werkt zonder controle. | Niet van toepassing. | Geen. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-001 | IsVisibleForTesting bepaalt testzichtbaarheid en niet reguliere productie-inzetbaarheid. |
| BR-002 | Alleen docenten met de niet-publieke rol TestDocent mogen testzichtbare modules gebruiken wanneer de reguliere actiefstatus onvoldoende is. |
| BR-003 | Het wijzigen van test-zichtbaarheid wijzigt geen gebruikersrollen. |
| BR-004 | Het wijzigen van test-zichtbaarheid wijzigt IsActive niet. |
| BR-005 | Er wordt geen aparte extra autorisatielaag voor testmodules geïntroduceerd. |
| BR-006 | Een wijziging vereist verplichte reden en auditregistratie. |
| BR-007 | Docenttestruns blijven tijdelijke testruns en mogen niet als blijvende leerlinghistorie verschijnen. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-001 | ExerciseModuleId is verplicht en moet bestaan. |
| VAL-002 | De doelwaarde moet verschillen van de actuele IsVisibleForTesting-waarde. |
| VAL-003 | Reason is verplicht en maximaal 500 tekens. |
| VAL-004 | De beheerderrol wordt vlak vóór opslaan opnieuw gevalideerd. |
| VAL-005 | Clientpayload mag IsActive niet meewijzigen via deze flow. |
| VAL-006 | Beschikbaarheid voor TestDocent wordt in de gebruikende docentflow opnieuw server-side bepaald. |
11. Datamutaties en events
| ID | Mutatie / event | Toelichting |
|---|---|---|
| MUT-001 | Update ExerciseModules | IsVisibleForTesting, UpdatedByUserId en UpdatedAtUtc worden bijgewerkt. |
| MUT-002 | Beheeraudit / modulehistory | Wijziging wordt vastgelegd met oude en nieuwe waarde en reden. |
12. Geen datamutaties
| ID | Geen mutatie | Reden |
|---|---|---|
| NO-001 | IsActive | Reguliere actiefstatus blijft ongewijzigd. |
| NO-002 | UserRoles | Er worden geen TestDocent-rollen toegekend of ingetrokken. |
| NO-003 | Exercises | Concrete oefeningen blijven ongewijzigd. |
| NO-004 | ExerciseRuns | Testruns en historische runs blijven ongewijzigd. |
| NO-005 | ExerciseModuleMigrations | Geen migratie wordt aangemaakt. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-BEH-MOD-TEST-VISIBILITY-CONFIRM | Bevestiging van wijziging test-zichtbaarheid 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 | Test-zichtbaarheid is een aparte modulevlag voor TestDocent en staat los van reguliere actiefstatus. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, oefenmodulecontract, background jobs en teststrategie beschrijven de technische uitwerking. Beschikbaarheid volgt uit combinatie van UserRoles en ExerciseModules.IsVisibleForTesting. |
| Software Requirements Specification | SRS moet eisen dat deze flow geen rollen toekent en IsActive niet wijzigt. |
| Database | Gebruikt ExerciseModules.IsVisibleForTesting; geen mutatie op UserRoles. |
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-005-001 | SRS-ADM-001 AC-ADM-001 | IsVisibleForTesting door beheerders kunnen laten wijzigen |
REQ-BEH-MOD-005-002 | SRS-ADM-001 AC-ADM-001 | IsVisibleForTesting gescheiden houden van IsActive |
REQ-BEH-MOD-005-003 | SRS-TCH-005 SRS-ADM-002 SRS-ADM-001 AC-TCH-005 AC-ADM-002 AC-ADM-001 | Geen TestDocent-rollen wijzigen via deze flow |
REQ-BEH-MOD-005-004 | SRS-ADM-001 AC-ADM-001 | Een verplichte reden vragen vóór wijziging |
REQ-BEH-MOD-005-005 | SRS-ADM-001 SRS-NFR-AUD-001 AC-ADM-001 AC-NFR-AUD-001 | De wijziging auditbaar vastleggen |
REQ-BEH-MOD-005-006 | SRS-AUTH-001 SRS-TCH-005 SRS-ADM-002 SRS-ADM-004 SRS-ADM-001 SRS-MOD-003 AC-AUTH-001 AC-TCH-005 AC-ADM-002 AC-ADM-004 AC-ADM-001 AC-MOD-003 | Testbeschikbaarheid in docentflows server-side bepalen op basis van rol en modulevlag |