UC-BEH-MOD-001 — Moduleoverzicht bekijken
1. Kerngegevens
| Veld | Waarde |
|---|
| Usecase-ID | UC-BEH-MOD-001 |
| Naam | Moduleoverzicht bekijken |
| 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-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-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 | Niet van toepassing |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
De usecase beschrijft hoe een beheerder het overzicht van technische oefenmodules opent. Het overzicht toont alleen administratief beheerde moduleversies uit ExerciseModules en geen concrete docent-oefeningen uit Exercises.
Per module worden minimaal weergavenaam, technische referentie, versienummer, actiefstatus, test-zichtbaarheid en gebruiksimpact op hoofdlijnen getoond. Het overzicht is de selectiestap voor detailbeheer; mutaties vinden pas plaats na het openen van één geselecteerde module.
Gebruiksimpact is een afgeleid readmodel. Het aantal koppelingen telt actieve concrete oefeningen die naar de module verwijzen, het aantal docenten telt unieke docenten met zulke oefeningen, het aantal unieke leerlingen telt leerlingen met actieve niveauautorisatie voor niveaus waarin zulke oefeningen voorkomen, en totaal gebruik telt blijvend opgeslagen exercise runs op basis van de module.
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:
- Laden van de centrale lijst met ExerciseModules.
- Tonen van module-identiteit: DisplayName, CodeReference en Version.
- Tonen van IsActive en IsVisibleForTesting.
- Bepalen en tonen van gebruiksimpact op hoofdlijnen.
- Selecteren van precies één module als voorbereiding op detailbeheer.
- Afhandelen van lege, gefilterde of gedeeltelijk foutieve overzichtstoestanden.
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.
- Modulemetadata wijzigen; dit hoort bij UC-BEH-MOD-003.
- Actiefstatus of test-zichtbaarheid wijzigen; dit hoort bij UC-BEH-MOD-004 en UC-BEH-MOD-005.
- Modulemigraties uitvoeren; dit hoort bij UC-BEH-MOD-007, UC-BEH-MOD-008 en UC-BEH-MOD-009.
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 beheerpagina Modules beheren is bereikbaar via Content. |
| PRE-006 | De database bevat nul of meer ExerciseModules-records. |
5. Post-condities
| ID | Resultaat |
|---|
| POST-001 | De beheerder ziet een actueel overzicht van technische oefenmodules. |
| POST-002 | Geen ExerciseModules-record is gewijzigd. |
| POST-003 | Geen ExerciseHistory- of ExerciseModuleMigrations-record is aangemaakt. |
| POST-004 | Bij selectie van precies één module wordt de actie Open beheer beschikbaar. |
| POST-005 | De getoonde impactwaarden zijn afgeleid en niet als losse beheerrecords opgeslagen. |
6. Trigger
De usecase start wanneer de beheerder via Content de pagina Modules beheren opent.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|
| 1 | Beheerder | Content-menu | Opent Modules beheren. | De frontend vraagt het moduleoverzicht op. | Route: Content > Modules beheren. |
| 2 | Backend | Autorisatiecomponent | Controleert beheerdercontext. | Alleen een actieve beheerder mag modulebeheer openen. | Server-side autorisatie. |
| 3 | Backend | Modulequery | Laadt ExerciseModules. | De modulelijst wordt samengesteld met statusvelden. | ExerciseModules. |
| 4 | Backend | Impactreadmodel | Berekent actieve oefenkoppelingen per module. | Alleen actieve concrete oefeningen tellen mee. | Exercises.ExerciseModuleId en Exercises.IsActive. |
| 5 | Backend | Impactreadmodel | Berekent unieke docenten en leerlingen per module. | Docenten en leerlingen worden via actieve docentstructuur en niveauautorisaties afgeleid. | TeacherLevels, UserRoles, niveauautorisaties. |
| 6 | Backend | Impactreadmodel | Berekent totaal gebruik. | Blijvend opgeslagen ExerciseRuns tellen mee; tijdelijke docenttestruns niet. | ExerciseRuns. |
| 7 | Frontend | Moduleoverzicht | Toont modules, statussen en impact. | De beheerder kan precies één module selecteren. | Read-only overzicht. |
| 8 | Beheerder | Moduleoverzicht | Selecteert één module. | De actie Open beheer wordt beschikbaar. | Geselecteerde ExerciseModuleId. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|
| ALT-001 | 2 | Gebruiker is geen beheerder. | De backend weigert toegang en toont een veilige toegang-geweigerdafhandeling. | Niet van toepassing. | Geen. |
| ALT-002 | 3 | Er bestaan geen modules. | Het overzicht toont een lege staat met uitleg dat geen technische modules beschikbaar zijn. | Niet van toepassing. | Geen. |
| ALT-003 | 4 | Impactberekening faalt gedeeltelijk. | De module blijft zichtbaar; impactwaarden worden niet als nul geïnterpreteerd maar als niet beschikbaar gemarkeerd. | Niet van toepassing. | Geen. |
| ALT-004 | 7 | Meerdere modules worden geselecteerd. | De actie Open beheer blijft uitgeschakeld tot precies één module geselecteerd is. | Niet van toepassing. | Geen. |
| ALT-005 | 8 | De geselecteerde module bestaat niet meer. | De selectie wordt geweigerd en het overzicht wordt opnieuw geladen. | Niet van toepassing. | Geen. |
9. Business rules
| ID | Business rule |
|---|
| BR-001 | Het moduleoverzicht is read-only; wijzigingen gebeuren pas in detailusecases. |
| BR-002 | Modules beheren richt zich uitsluitend op technische moduleversies uit ExerciseModules. |
| BR-003 | Concrete oefeningnamen, iconen en configuratiepayloads worden niet in het moduleoverzicht beheerd. |
| BR-004 | Aantal koppelingen telt actieve concrete oefeningen die naar de module verwijzen. |
| BR-005 | Aantal docenten telt unieke docenten met ten minste één actieve concrete oefening op deze module. |
| BR-006 | Aantal unieke leerlingen telt leerlingen die via actieve toegang een niveau kunnen gebruiken waarin een actieve oefening op deze module voorkomt. |
| BR-007 | Totaal gebruik telt blijvend opgeslagen ExerciseRuns; tijdelijke docenttestruns tellen niet mee. |
10. Datavalidatie
| ID | Validatie |
|---|
| VAL-001 | De opgevraagde route vereist een server-side beheerderclaim. |
| VAL-002 | ExerciseModuleId in selecties moet verwijzen naar een bestaand ExerciseModules-record. |
| VAL-003 | Impactaantallen worden server-side berekend en niet vanuit de client aangeleverd. |
| VAL-004 | Statuslabels zijn afgeleid uit IsActive en IsVisibleForTesting. |
| VAL-005 | CodeReference wordt in het overzicht als technische sleutel getoond en niet als vrij invoerveld gebruikt. |
| VAL-006 | Selectie voor detailbeheer is alleen geldig bij precies één geselecteerde module. |
11. Datamutaties en events
| ID | Mutatie / event | Toelichting |
|---|
| MUT-001 | Geen functionele mutatie | Raadplegen van het overzicht wijzigt geen module-, oefening- of rundata. |
| MUT-002 | Geen event | Er wordt geen historie- of migratierecord aangemaakt. |
12. Geen datamutaties
| ID | Geen mutatie | Reden |
|---|
| NO-001 | ExerciseModules | Modulemetadata en statusvlaggen blijven ongewijzigd. |
| NO-002 | Exercises | Geen ExerciseModuleId of IsActive wordt aangepast. |
| NO-003 | ExerciseRuns | Historische runs blijven ongewijzigd. |
| NO-004 | ExerciseHistory | Bekijken schrijft geen oefeninghistorie. |
| NO-005 | ExerciseModuleMigrations | Bekijken start geen migratie. |
13. State diagram
Niet van toepassing. Deze usecase is een read-only overzichtsflow en wijzigt geen persistent statusobject. De actuele modulebeschikbaarheid, test-zichtbaarheid en impactwaarden worden als readmodel geladen en blijven ongewijzigd.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
Niet van toepassing. Deze usecase gebruikt geen popupregister-popup. Eventuele inline foutmeldingen of lege staten worden als gewone schermfeedback behandeld.
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Document | Afleiding |
|---|
| Functioneel Ontwerp | Modules beheren is een overzichtspagina voor technische modules, niet voor concrete docent-oefeningen. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, oefenmodulecontract, background jobs en teststrategie beschrijven de technische uitwerking. Impactwaarden worden als readmodel afgeleid uit ExerciseModules, Exercises, docentstructuur en ExerciseRuns. |
| Software Requirements Specification | SRS moet exact definiëren welke records meetellen voor koppelingen, docenten, unieke leerlingen en totaal gebruik. |
| Database | Geen mutaties; gebruikt ExerciseModules, Exercises en ExerciseRuns als brondata. |
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.