UC-BEH-DOCSUP-009 — Leerling van niveau ontkoppelen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-DOCSUP-009 |
| Naam | Leerling van niveau ontkoppelen |
| Domein | Beheerder / Docentondersteuning |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, database, autorisatiecomponent, docentondersteuningcomponent, historiecomponent |
| Rolcontext | Actieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Content > Docent ondersteuning |
| Gerelateerde usecases | UC-BEH-DOCSUP-001, UC-BEH-DOCSUP-002, UC-BEH-DOCSUP-003, UC-BEH-DOCSUP-004, UC-BEH-DOCSUP-005, UC-BEH-DOCSUP-006, UC-BEH-DOCSUP-007, UC-BEH-DOCSUP-008, UC-BEH-DOCSUP-010, UC-BEH-DOCSUP-011, UC-BEH-DOCSUP-012, UC-BEH-DOCSUP-013, UC-BEH-DOCSUP-014 |
| Primaire entiteiten | Users, UserRoles, Roles, TeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises, ExerciseModules, ExerciseHistory, LevelCollaborators, LevelStudentAuthorizations, UserRelationships |
| Secundaire entiteiten / events | RelationshipEvents, SystemMessages, beheerlog, docentondersteuning-readmodels, autorisatiecomponent |
| Gerelateerde popups | POP-BEH-DOCSUP-REMOVE-STUDENT-CONFIRM |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een beheerder vanuit docentondersteuning een leerling van een niveau ontkoppelt.
De actie is supportgericht, vindt plaats binnen één geselecteerde docentcontext en vereist server-side validatie van het niveau, de leerling en de bestaande niveauautorisatie.
De wijziging wordt auditbaar vastgelegd. De actie wijzigt geen historische runs, resultaten of centrale categorie- en module-identiteit.
Uitgangspunten
- Docentondersteuning werkt altijd vanuit één gekozen docentcontext.
- De beheerder heeft supportgerichte inzage, maar mutaties blijven beperkt tot expliciete beheeracties met audit.
- Centrale categorie- en module-identiteit worden niet vanuit deze pagina beheerd.
- Server-side autorisatie is leidend; clientstate mag geen objecttoegang afdwingen.
- Historische runs, resultaten en PDF-contexten worden niet herschreven.
3. Scope
Deze usecase beschrijft:
- Uitvoeren van de beheeractie: Leerling van niveau ontkoppelen.
- Controleren van beheerderrol, docentcontext en objectcontext.
- Tonen van een bevestiging via PopupKey.
- Verwerken van de domeinmutatie wanneer alle validaties slagen.
- Auditbaar vastleggen van actor, tijdstip, reden en betrokken objecten.
Deze usecase beschrijft niet:
- Centraal categoriebeheer; dat blijft bronhoudend in Beheerder / Categorieën beheren.
- Centraal technisch modulebeheer; dat blijft bronhoudend in Beheerder / Modules beheren.
- Volledig account- en rolbeheer; dat blijft bronhoudend in Beheerder / Accountbeheer.
- Reguliere docentflows vervangen; docentondersteuning is supportgericht en niet de primaire docentinterface.
- Live meekijken tijdens actieve oefeningen; beheerders mogen geschiedenis analyseren, maar niet live meekijken.
- Popupteksten, knopteksten of inputlabels specificeren; usecases verwijzen uitsluitend naar PopupKey.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Docent / Oefenaanbod | Docenten beheren hun eigen niveaus, categorieën en oefeningen via de reguliere docentflows; docentondersteuning biedt beheerderinzage en gerichte correctie. |
| Beheerder / Categorieën beheren | Centrale categorie-identiteit, migratie en statuswijziging worden daar beheerd, niet in docentondersteuning. |
| Beheerder / Modules beheren | Technische modulemetadata en modulemigraties worden daar beheerd; docentondersteuning kan alleen concrete oefeningcontext inspecteren. |
| Beheerder / Accountbeheer | Rollen, accountstatus en account lifecycle horen daar; docentondersteuning gebruikt bestaande account- en relatiecontext. |
| Generiek / Relaties | Relaties en uitnodigingen blijven bronhoudend in het relatiedomein; docentondersteuning kan alleen bestaande geldige context gebruiken of een expliciete beheeractie auditen. |
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 > Docent ondersteuning. |
| PRE-004 | De pagina gebruikt actuele serverdata; clientstate, routeparameters of verborgen formuliervelden bepalen geen autorisatie, docentcontext, niveaucontext of oefeningcontext. |
| PRE-005 | De ondersteuningsweergave voor één docent is geopend. |
| PRE-006 | Er is één relevant niveau of object binnen de docentcontext geselecteerd. |
| PRE-007 | De beheerder heeft de actie expliciet gekozen. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De actie Leerling van niveau ontkoppelen is verwerkt wanneer alle validaties slagen. |
| POST-002 | De wijziging is auditbaar vastgelegd. |
| POST-003 | Historische resultaten en runs blijven ongewijzigd. |
| POST-004 | Afgeleide overzichten en aantallen kunnen opnieuw worden opgebouwd. |
| POST-005 | Onbevoegde of ongeldige contexten zijn veilig geblokkeerd. |
6. Trigger
De usecase start wanneer de beheerder de actie Leerling van niveau ontkoppelen kiest en bevestigt.
7. Normale processtroom
| Stap | Actor | Component / context | Handeling | Resultaat | Belangrijke gegevens |
|---|---|---|---|---|---|
| 1 | Beheerder | Docentondersteuning | Kiest de beheeractie. | De frontend opent de bevestiging. | Geselecteerde context. |
| 2 | Backend | Autorisatiecomponent | Controleert beheerdercontext. | Alleen beheerder mag de actie uitvoeren. | Server-side rolcontext. |
| 3 | Backend | DocentContextService | Valideert docent- en niveaucontext. | Objecten buiten context worden geweigerd. | TeacherLevels en contextrecords. |
| 4 | Backend | Domeinservice | Controleert object-specifieke voorwaarden. | Alle business rules worden opnieuw server-side toegepast. | Relaties, autorisaties, collaborators of eigenaar. |
| 5 | Beheerder | Popup | Bevestigt actie en vult reden in wanneer vereist. | De definitieve verwerking start. | POP-BEH-DOCSUP-REMOVE-STUDENT-CONFIRM |
| 6 | Backend | Domeinservice | Voert de mutatie transactioneel uit. | De domeinstatus wordt aangepast. | LevelStudentAuthorizations |
| 7 | Backend | AuditService | Legt de actie vast. | De wijziging is herleidbaar. | Beheerlog / history. |
| 8 | Frontend | Docentondersteuning | Ververs de context. | De beheerder ziet de actuele situatie. | Readmodel opnieuw geladen. |
8. Alternatieve en exceptionele processtromen
| Stap | Situatie | Afhandeling | PopupKey | Datamutatie |
|---|---|---|---|---|
| 2 | Beheerdercontext is ongeldig. | De backend weigert de actie en toont een veilige blokkade. | POP-BEH-DOCSUP-NO-ACCESS | Geen. |
| 3 | De geselecteerde docent bestaat niet of is niet toegankelijk. | De ondersteuningsweergave wordt niet geopend of wordt veilig teruggezet naar het overzicht. | POP-BEH-DOCSUP-SAVE-ERROR | Geen. |
| 4 | Het gekozen object bestaat niet meer. | De pagina toont dat het object niet beschikbaar is en ververst de context. | Niet van toepassing | Geen. |
| 5 | De readmodeldata is tijdelijk incompleet. | De beschikbare gegevens worden getoond met veilige ontbrekend-status; ontbrekend wordt niet als nul geïnterpreteerd. | Niet van toepassing | Geen. |
| 6 | De beheerder gebruikt een oude route of clientstate. | De backend negeert de clientcontext en herleidt de actuele context opnieuw. | Niet van toepassing | Geen. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-UC-BEH-DOCSUP-009-001 | De actie is alleen toegestaan binnen een geldige server-side docentcontext. |
| BR-UC-BEH-DOCSUP-009-002 | De beheerder moet de actie expliciet bevestigen. |
| BR-UC-BEH-DOCSUP-009-003 | Een verplichte reden mag niet leeg zijn. |
| BR-UC-BEH-DOCSUP-009-004 | Dubbele of conflicterende actieve records zijn niet toegestaan. |
| BR-UC-BEH-DOCSUP-009-005 | Historische runs, resultaten en PDF-contexten worden niet herschreven. |
| BR-UC-BEH-DOCSUP-009-006 | Centrale categorie- en module-identiteit blijven buiten scope. |
| BR-UC-BEH-DOCSUP-009-007 | De wijziging moet auditbaar zijn. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-UC-BEH-DOCSUP-009-001 | De beheerderrol wordt vlak vóór mutatie gecontroleerd. |
| VAL-UC-BEH-DOCSUP-009-002 | De geselecteerde objecten moeten bestaan en binnen de docentcontext vallen. |
| VAL-UC-BEH-DOCSUP-009-003 | Object-specifieke voorwaarden worden server-side gevalideerd. |
| VAL-UC-BEH-DOCSUP-009-004 | De reden is verplicht wanneer de popup of actie dit vereist. |
| VAL-UC-BEH-DOCSUP-009-005 | De mutatie moet transactioneel worden verwerkt. |
| VAL-UC-BEH-DOCSUP-009-006 | Gelijktijdige wijzigingen moeten vóór opslaan opnieuw worden gevalideerd. |
| VAL-UC-BEH-DOCSUP-009-007 | De client mag geen verborgen velden als bron van waarheid gebruiken. |
11. Datamutaties en events
| Object / event | Mutatie |
|---|---|
| LevelStudentAuthorizations | De actieve autorisatie wordt administratief ingetrokken of gedeactiveerd. |
| Beheerlog / history | Vastleggen van beheerder, tijdstip, betrokken objecten en reden. |
| SystemMessages | Informatief bericht aan de leerling wanneer de leerling een actief intern account heeft; het bericht is geen autorisatiebron. |
12. Geen datamutaties
| Object | Waarom geen mutatie |
|---|---|
| UserRelationships | De docent-leerlingrelatie wordt niet beëindigd; alleen niveauautorisatie wordt ingetrokken. |
| TeacherLevels | Niveaugegevens, eigenaar en zichtbaarheid blijven ongewijzigd. |
| Exercises | Oefeningen en configuratie blijven ongewijzigd. |
| ExerciseRuns | Historische runs, resultaten, gedeelde oefeningen en PDF-contexten blijven behouden. |
| User credentials | Wachtwoorden, tokens en identity-providergegevens blijven buiten scope. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-BEH-DOCSUP-REMOVE-STUDENT-CONFIRM | Bevestiging voor de actie Leerling van niveau ontkoppelen. |
| POP-BEH-DOCSUP-SAVE-ERROR | Foutafhandeling wanneer de beheeractie niet kan worden opgeslagen. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Onderdeel | Afleiding |
|---|---|
| Functioneel Ontwerp | FO moet Leerling van niveau ontkoppelen beschrijven als expliciete supportactie binnen docentondersteuning. |
| Technisch Ontwerp | Technisch Ontwerp: technische rolflows, oefencatalogus, relatiebeheer en logging en historie beschrijven de technische uitwerking. TO vereist transactionele verwerking, server-side contextvalidatie, auditregistratie en systeemberichtcommunicatie wanneer de leerling een actief intern account heeft. |
| Software Requirements Specification | SRS moet voorwaarden, bevestiging, redenplicht en uitsluitingen voor Leerling van niveau ontkoppelen vastleggen. |
| Database | Wijzigt LevelStudentAuthorizations en auditrecords; historische runs blijven ongewijzigd. |
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-UC-BEH-DOCSUP-009-001 | SRS-REL-003 SRS-REL-006 SRS-CAT-001 SRS-LRN-009 SRS-TCH-003 SRS-ADM-008 AC-REL-003 AC-REL-006 AC-CAT-001 AC-LRN-009 AC-TCH-003 AC-ADM-008 | Een beheerder de actie Leerling van niveau ontkoppelen kunnen laten uitvoeren binnen docentondersteuning |
REQ-UC-BEH-DOCSUP-009-002 | SRS-AUTH-001 SRS-TCH-001 SRS-ADM-001 AC-AUTH-001 AC-TCH-001 AC-ADM-001 | De docentcontext server-side valideren |
REQ-UC-BEH-DOCSUP-009-003 | SRS-AUTH-001 SRS-ADM-002 SRS-ADM-001 AC-AUTH-001 AC-ADM-002 AC-ADM-001 | Object-specifieke voorwaarden opnieuw server-side controleren |
REQ-UC-BEH-DOCSUP-009-004 | SRS-ADM-001 SRS-POP-001 AC-ADM-001 AC-POP-001 | Een bevestiging via PopupKey gebruiken |
REQ-UC-BEH-DOCSUP-009-005 | SRS-ADM-001 SRS-NFR-AUD-001 AC-ADM-001 AC-NFR-AUD-001 | De wijziging auditbaar vastleggen |
REQ-UC-BEH-DOCSUP-009-006 | SRS-REL-001 SRS-LRN-009 SRS-TCH-001 SRS-ADM-001 AC-REL-001 AC-LRN-009 AC-TCH-001 AC-ADM-001 | De onderliggende docent-leerlingrelatie ongemoeid laten |
REQ-UC-BEH-DOCSUP-009-007 | SRS-LRN-009 SRS-ADM-001 SRS-CNT-001 AC-LRN-009 AC-ADM-001 AC-CNT-001 | Historische runs, resultaten en centrale contentidentiteit niet herschrijven |
REQ-UC-BEH-DOCSUP-009-008 | SRS-ADM-001 SRS-NFR-SEC-001 AC-ADM-001 AC-NFR-SEC-001 | Conflicterende gelijktijdige wijzigingen veilig afhandelen |