UC-BEH-MOD-006 — Moduleconnectiviteit testen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-MOD-006 |
| Naam | Moduleconnectiviteit testen |
| 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-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-HEALTHCHECK-ERROR |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een beheerder vanuit modulebeheer een eenvoudige connectiviteitstest uitvoert voor de geselecteerde technische module.
De test is bedoeld om te controleren of de CodeReference via de strategy-interface resolveerbaar is en of de module een eenvoudige healthcheck of ping-pong-aanroep succesvol kan afhandelen.
De test wijzigt geen modulemetadata, geen concrete oefeningen en geen oefenruns. De uitkomst mag technisch gelogd worden voor beheeranalyse, maar vormt geen nieuwe functionele status 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:
- Starten van een healthcheck voor één geselecteerde module.
- Resolveren van CodeReference via de strategy-interface.
- Uitvoeren van een eenvoudige ping-pong- of healthcheck-aanroep.
- Tonen van resultaat aan beheerder.
- Technisch loggen van foutdetails zonder wijziging van moduledata.
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.
- Backwards compatibility bewijzen voor modulemigraties.
- Modulecode aanpassen of deployen.
- Module actief of inactief zetten op basis van testresultaat.
- Concrete oefeningconfiguratie valideren.
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 module heeft een CodeReference. |
| PRE-007 | De applicatie beschikt over een strategy-interface voor technische modules. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De beheerder ziet of de module technisch resolveerbaar en bereikbaar is. |
| POST-002 | ExerciseModules is niet gewijzigd. |
| POST-003 | Exercises en ExerciseRuns zijn niet gewijzigd. |
| POST-004 | Eventuele technische foutdetails zijn veilig gelogd. |
| POST-005 | De testuitkomst wordt niet als zelfstandige domeinstatus opgeslagen. |
6. Trigger
De usecase start wanneer de beheerder in de sectie Module of Intro / uitleg de actie Connectiviteit testen kiest.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | Modulebeheer | Kiest Connectiviteit testen. | De frontend vraagt een healthcheck aan. | ExerciseModuleId. |
| 2 | Backend | Autorisatiecomponent | Controleert beheerdercontext. | Alleen beheerder mag de test uitvoeren. | Server-side autorisatie. |
| 3 | Backend | ModuleService | Laadt CodeReference. | De technische referentie wordt uit ExerciseModules gelezen. | ExerciseModules.CodeReference. |
| 4 | Backend | StrategyResolver | Probeert module te resolveeren. | De implementatie achter CodeReference wordt opgezocht. | Strategy-interface. |
| 5 | Backend | ModuleStrategy | Voert healthcheck uit. | De module geeft succes of fout terug. | Ping-pong / healthcheck. |
| 6 | Backend | Technische logging | Legt foutdetails vast wanneer nodig. | Gevoelige details worden niet als UI-inhoud weergegeven. | Applicatielog. |
| 7 | Frontend | Modulebeheer | Toont testresultaat. | De beheerder ziet succes of veilige foutmelding. | Geen domeinmutatie. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Gebruiker is geen beheerder. | De backend weigert de test. | Niet van toepassing. | Geen. |
| ALT-002 | 3 | CodeReference ontbreekt of is leeg. | De test wordt geweigerd met veilige foutmelding. | POP-BEH-MOD-HEALTHCHECK-ERROR. | Geen. |
| ALT-003 | 4 | StrategyResolver vindt geen implementatie. | De beheerder ziet dat de module niet resolveerbaar is; technische details worden gelogd. | POP-BEH-MOD-HEALTHCHECK-ERROR. | Geen domeinmutatie. |
| ALT-004 | 5 | Module geeft fout terug. | De beheerder ziet dat de healthcheck mislukt; details worden veilig gelogd. | POP-BEH-MOD-HEALTHCHECK-ERROR. | Geen domeinmutatie. |
| ALT-005 | 5 | Test duurt te lang. | De backend breekt gecontroleerd af en logt timeoutinformatie. | POP-BEH-MOD-HEALTHCHECK-ERROR. | Geen domeinmutatie. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-001 | De connectiviteitstest is een technische controle en geen functionele statuswijziging. |
| BR-002 | Een succesvolle healthcheck bewijst niet dat een module backwards compatible is voor migratie. |
| BR-003 | Een mislukte healthcheck maakt de module niet automatisch inactief. |
| BR-004 | De test gebruikt CodeReference uit ExerciseModules en niet een client-aangeleverde codewaarde. |
| BR-005 | Technische foutdetails worden gelogd, maar niet volledig aan de beheerder getoond. |
| BR-006 | De test mag geen oefeningen, runs of configuratiepayloads aanmaken. |
| BR-007 | De test is bedoeld voor vroegtijdige detectie van typefouten of foutieve technische koppelingen. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-001 | ExerciseModuleId is verplicht en moet bestaan. |
| VAL-002 | CodeReference moet aanwezig zijn. |
| VAL-003 | De backend moet de CodeReference server-side uit de database lezen. |
| VAL-004 | De healthcheck moet binnen een gecontroleerde timeout afronden. |
| VAL-005 | UI-resultaten mogen geen stacktraces of secrets tonen. |
| VAL-006 | De beheerderrol wordt vlak vóór uitvoering gevalideerd. |
11. Datamutaties en events
| ID | Mutatie / event | Toelichting |
|---|---|---|
| MUT-001 | Geen domeinmutatie | De healthcheck wijzigt geen module-, oefening-, run- of migratierecord. |
| MUT-002 | Technische foutregistratie buiten domeinmodel | Fouten of timeouts worden veilig technisch gelogd zonder functionele modulegeschiedenis of migratierecord te schrijven. |
12. Geen datamutaties
| ID | Geen mutatie | Reden |
|---|---|---|
| NO-001 | ExerciseModules | Geen status of metadata wordt aangepast. |
| NO-002 | Exercises | Geen oefening wordt aangemaakt of gewijzigd. |
| NO-003 | ExerciseRuns | Geen run wordt aangemaakt. |
| NO-004 | ExerciseHistory | Geen oefeninghistory wordt geschreven. |
| NO-005 | ExerciseModuleMigrations | Geen migratie wordt aangemaakt. |
13. State diagram
Niet van toepassing. De connectiviteitstest levert een tijdelijke testuitkomst op en wijzigt geen persistente module-, oefening-, migratie- of runstatus.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-BEH-MOD-HEALTHCHECK-ERROR | Veilige foutmelding wanneer moduleconnectiviteit niet kan worden vastgesteld. |
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 | Modulebeheer ondersteunt een eenvoudige connectiviteitstest via de strategy-interface. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, oefenmodulecontract, background jobs en teststrategie beschrijven de technische uitwerking. De test resolveert CodeReference server-side en voert een healthcheck met timeout uit zonder functioneel domeinrecord te schrijven. |
| Software Requirements Specification | SRS moet bepalen dat testuitkomst geen domeinstatus is en geen module automatisch wijzigt. |
| Database | Leest ExerciseModules; schrijft geen ExerciseModuleMigrations, ExerciseHistory, Exercises of ExerciseRuns. |
| Oefenmodules | Moduleplatform en contract beschrijft de generieke module-interface; concrete modules zoals Optellen & Aftrekken (simpel) leveren de resolveerbare module-implementatie achter CodeReference. |
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-006-001 | SRS-ADM-004 SRS-ADM-001 SRS-MOD-003 AC-ADM-004 AC-ADM-001 AC-MOD-003 | Een beheerder een moduleconnectiviteitstest kunnen laten uitvoeren |
REQ-BEH-MOD-006-002 | SRS-AUTH-001 SRS-ADM-004 SRS-ADM-001 SRS-MOD-003 AC-AUTH-001 AC-ADM-004 AC-ADM-001 AC-MOD-003 | CodeReference server-side uit ExerciseModules lezen |
REQ-BEH-MOD-006-003 | SRS-ADM-004 SRS-ADM-001 SRS-MOD-003 AC-ADM-004 AC-ADM-001 AC-MOD-003 | De module via de strategy-interface resolveeren |
REQ-BEH-MOD-006-004 | SRS-ADM-001 AC-ADM-001 | Een eenvoudige healthcheck of ping-pong-aanroep ondersteunen |
REQ-BEH-MOD-006-005 | SRS-LRN-009 SRS-ADM-004 SRS-ADM-001 SRS-MOD-003 AC-LRN-009 AC-ADM-004 AC-ADM-001 AC-MOD-003 | Bij de test geen modulemetadata of oefeningen wijzigen |
REQ-BEH-MOD-006-006 | SRS-ADM-001 SRS-NFR-SEC-001 SRS-NFR-LOG-001 AC-ADM-001 AC-NFR-SEC-001 AC-NFR-LOG-001 | Technische foutdetails veilig loggen zonder stacktraces in de UI te tonen |
REQ-BEH-MOD-006-007 | SRS-ADM-001 AC-ADM-001 | Een succesvolle healthcheck niet gelijkstellen aan bewezen migratiecompatibiliteit |