Skip to main content

UC-DOC-LLN-006 - Leerling van niveau ontkoppelen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-LLN-006
NaamLeerling van niveau ontkoppelen
DomeinDocent
SubdomeinLeerlingen en niveau-autorisaties
Primaire actorDocent
Secundaire actor(en)Systeem, Leerling
RolcontextActieve docentcontext met geldige docentrol, relevante docent-leerlingrelatie en toegestane niveaucontext
Betrokken schermenDocent - Leerlingen, Docent - Autorisaties, Docent - Niveau-autorisaties beheren
Gerelateerde usecasesUC-DOC-LLN-001, UC-DOC-LLN-002, UC-DOC-LLN-003, UC-DOC-LLN-004, UC-DOC-LLN-008, UC-LLN-TOEG-001, UC-LLN-TOEG-002, UC-LLN-TOEG-003
Primaire entiteitenUsers, UserRoles, Roles, UserRelationships, TeacherLevels, TeacherStudentLevelAccess
Secundaire entiteiten / eventsSystemMessages, autorisatie-events, leerlingtoegangs-readmodel, audit/logging
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een docent een bestaande niveau-autorisatie intrekt. De leerling verliest daardoor nieuwe toegang tot het betreffende niveau binnen deze docentcontext, terwijl afgeronde geschiedenis historisch beschikbaar blijft volgens de resultaat- en geschiedenisdomeinen.

De usecase blijft bewust binnen het docentdomein. Relatievorming, profielbeheer, accounttoegang, leerlingfrontpagegedrag en generieke berichtafhandeling worden niet opnieuw als bronwaarheid beschreven. Deze flow gebruikt die domeinen alleen als randvoorwaarde of vervolgcontext.

Alle beslissingen die zichtbaarheid of wijzigbaarheid bepalen, worden server-side opnieuw gecontroleerd. Een selectie in de frontend, een oude route of een eerder geladen readmodel mag nooit zelfstandig bepalen dat een docent een leerling of niveau mag wijzigen.

3. Scope

3.1 Binnen scope

  • Selecteren van een bestaande actieve niveau-autorisatie.
  • Server-side controleren dat de docent deze autorisatie mag intrekken.
  • Administratief deactiveren of intrekken van de autorisatie.
  • Vastleggen van actor, tijdstip en optionele reden of context.
  • Voorkomen dat nieuwe starts of hervattingen buiten geldige toegang doorgaan.
  • Voorbereiden van communicatie aan de leerling via de aparte communicatie-usecase.

3.2 Buiten scope

  • Verwijderen van leerlinggeschiedenis of afgeronde oefenruns.
  • Verwijderen of beëindigen van de docent-leerlingrelatie.
  • Aanpassen van categorieën, oefeningen of niveaus.
  • Afhandelen van accountverwijdering of anonimisering.
  • Live-meekijksessies inhoudelijk beheren buiten bestaande realtime regels.

3.3 DRY-afbakening

  • De docent-leerlingrelatie zelf blijft bronhoudend in het generieke relatiedomein.
  • De leerlingzijde van zichtbaarheid en starten van oefeningen blijft bronhoudend in het leerlingdomein.
  • Systeemberichten worden functioneel gebruikt als communicatiekanaal, maar de mailbox- en leesstatusregels blijven bronhoudend in het generieke berichtendomein.
  • Collaboratorrechten geven geen automatische toegang tot leerlingen, resultaten, geschiedenis of live meekijken.
  • Niveau-autorisaties zijn gescheiden van rollen, relaties en profielinstellingen.
  • Historische resultaten worden niet herschreven door autorisatiewijzigingen.
  • Samenvattingen, lijsten en aantallen zijn afgeleide readmodelwaarden en vormen geen tweede bron van waarheid.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd.
PRE-002De gebruiker heeft een actieve docentrol.
PRE-003De OefenHub-sessiecontext is server-side opgebouwd.
PRE-004De docentcontext en relevante niveaucontext zijn beschikbaar.
PRE-005De betrokken leerling valt binnen een actieve docent-leerlingrelatie wanneer een leerlingmutatie wordt uitgevoerd.
PRE-006De backend kan actuele autorisatiegegevens ophalen voordat een wijziging wordt verwerkt.

5. Post-condities

IDResultaat
POST-001De autorisatie- of communicatiehandeling is uitgevoerd of veilig geblokkeerd.
POST-002De docent heeft geen gegevens buiten de eigen docentcontext gewijzigd of gezien.
POST-003Alle uitgevoerde mutaties zijn herleidbaar vastgelegd waar dat voor deze flow geldt.
POST-004Afgeleide leerlingtoegang kan na de mutatie opnieuw correct worden bepaald.
POST-005Vervolgcommunicatie of vervolgtoegang wordt in de daarvoor bedoelde usecases afgehandeld.

6. Trigger

De docent kiest binnen het autorisatiescherm of bulk-autorisatiescherm voor het ontkoppelen van een leerling van een niveau.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1DocentAutorisatieschermSelecteert actieve niveau-autorisatieFrontend start ontkoppelactieStudentUserId, TeacherLevelId
2FrontendRouteguardStuurt verzoek naar backendBackend voert server-side controle uitClientstate is niet leidend
3SysteemAutorisatieserviceControleert actieve docentrolBlokkeert zonder docentrolUserRoles, Roles
4SysteemRelatieserviceControleert actieve docent-leerlingrelatieBepaalt toegestane contextUserRelationships
5SysteemAutorisatieserviceLaadt actieve autorisatieValideert intrekbaarheidTeacherStudentLevelAccess.IsActive = true
6SysteemNiveauserviceControleert niveaucontextBepaalt of docent autorisatie mag intrekkenTeacherLevels
7SysteemDatabaseTrekt autorisatie inMarkeert toegang als niet-actiefIsActive = false, RevokedAtUtc, RevokedByUserId
8SysteemAudit/eventlaagRegistreert intrekkingLegt wijziging herleidbaar vastStudentLevelAccessRevoked
9SysteemToegangsmodelMaakt nieuwe toegang ongeldigNieuwe starts worden server-side geblokkeerdLeerlingtoegang afgeleid
10SysteemCommunicatievoorbereidingRegistreert dat leerling geïnformeerd moet wordenVerwijst naar UC-DOC-LLN-008Geen SystemMessage in deze usecase
11FrontendAutorisatieschermToont bijgewerkte toestandLeerling staat niet langer gekoppeld aan niveauReadmodel vernieuwd

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Gebruiker heeft geen actieve docentrolSysteem blokkeert de intrekking.Niet van toepassingGeen
ALT-0024Leerling valt niet binnen docentcontextSysteem weigert de actie.Niet van toepassingGeen
ALT-0035Er is geen actieve autorisatie om in te trekkenSysteem voert geen mutatie uit en toont de actuele toestand.Niet van toepassingGeen
ALT-0046Niveau hoort niet bij toegestane beheerscontextSysteem blokkeert de intrekking.Niet van toepassingGeen
ALT-0057Leerling heeft een actieve oefenrun binnen dit niveauIntrekking verandert geen afgeronde data; hervatten wordt bij vervolgtoegang server-side opnieuw gecontroleerd.Niet van toepassingTeacherStudentLevelAccess
ALT-0067Gelijktijdige wijziging heeft autorisatie al ingetrokkenSysteem voorkomt dubbele intrekking en ververst het readmodel.Niet van toepassingGeen of idempotente update

9. Business rules

IDRegel
BR-001Intrekken van niveau-autorisatie verwijdert geen docent-leerlingrelatie.
BR-002Intrekken van niveau-autorisatie verwijdert geen afgeronde oefenruns, geschiedenis of PDF-beschikbaarheid waar die historisch toegestaan blijft.
BR-003Na intrekking mag de leerling geen nieuwe oefening starten binnen dat niveau via deze docentcontext.
BR-004Of een niet-afgeronde run nog hervatbaar is, wordt bij openen opnieuw server-side bepaald door de leerlingtoegangsusecases.
BR-005Autorisatie-intrekking moet herleidbaar vastliggen met actor en tijdstip.
BR-006Een docent mag alleen eigen of beheerscontextgebonden autorisaties intrekken.
BR-007Communicatie richting leerling loopt via systeemberichten en niet via privéberichten.
BR-008Clientstate mag een ingetrokken autorisatie niet alsnog bruikbaar maken.
BR-009Autorisatiebeheer is altijd docentcontextgebonden en mag geen informatie uit andere docentcontexten lekken.
BR-010Alle autorisatiekritieke beslissingen worden server-side genomen.
BR-011Een wijziging in niveau-autorisatie is geen wijziging van leerlingrol, accountstatus of relatie.
BR-012De actuele toestand na een mutatie is leidend boven eerder geladen clientstate.

10. Datavalidatie

Veld / objectValidatie
DocentrolMoet actief zijn op het moment van de handeling.
DocentcontextWordt server-side bepaald uit sessie, rollen, relaties en niveaucontext.
StudentUserIdMoet binnen de actieve docent-leerlingcontext vallen wanneer een leerling wordt gewijzigd.
TeacherLevelIdMoet bestaan, actief zijn en binnen de toegestane docentcontext vallen.
TeacherStudentLevelAccessMag niet leiden tot dubbele actieve autorisaties voor dezelfde context.
BulkselectieMag alleen geldige, dedupliceerde leerlingen bevatten.
CommunicatiecontextMag geen gegevens over andere docenten of andere autorisatiecontexten bevatten.
RouteparametersMogen geen wijziging afdwingen zonder server-side hercontrole.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
7UpdateTeacherStudentLevelAccessAutorisatie wordt ingetrokken of niet-actief gemaakt.
8EventStudentLevelAccessRevokedNiveau-autorisatie is ingetrokken.
10VervolgactieAuthorizationChangeCommunicationRequestedCommunicatie richting leerling moet worden verwerkt via UC-DOC-LLN-008.

12. Geen datamutaties

EntiteitReden
ExerciseRunsAfgeronde en bestaande runs worden niet verwijderd.
ExerciseRunProgressVoortgang wordt niet herschreven in deze usecase.
UserRelationshipsDocent-leerlingrelatie blijft bestaan.
SystemMessagesHet bericht zelf wordt pas in de communicatie-usecase aangemaakt.
PrivateMessageThreadsGeen privéberichtthread wordt aangemaakt.

13. State diagram

Deze usecase raakt de lifecycle van een niveau-autorisatie of de communicatie daarover. De autorisatie kent functioneel de toestanden niet aanwezig, actief en ingetrokken.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Leerling van niveau ontkoppelen

16.2 Autorisatie bestaat niet meer

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingGehele usecaseDeze flow gebruikt geen domeinspecifieke popupregister-popup. Routeguard-, validatie-, lege-staat- en niet-beschikbaarafhandeling verlopen via componentmelding of bestaande generieke foutafhandeling.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpLegt vast hoe docenten niveau-autorisaties voor gekoppelde leerlingen beheren binnen de eigen docentcontext.
Technisch OntwerpTechnisch Ontwerp: autorisatie en contextcontrole, technische rolflows, relatiebeheer en readmodels en tellers beschrijven de technische uitwerking. Vertaalt de server-side validaties, transacties, idempotentie en communicatiekoppeling naar services en databasebewerkingen.
Software Requirements SpecificationLeidt requirements af voor contextcontrole, autorisatiemutaties, auditbaarheid, communicatie en afscherming van andere docentcontexten.
Database-informatieBepaalt aanscherpingen rond TeacherStudentLevelAccess, SystemMessages en afgeleide leerlingtoegang.
OntwerpbronnenRaakt business rules, autorisatiematrix, command-register, event-register en usecase-matrices voor muterende autorisatie- en communicatieflows.

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-afleidingDektUsecasecontext
REQ-UC-DOC-LLN-006-001SRS-AUTH-001
SRS-CAT-001
SRS-TCH-002
AC-AUTH-001
AC-CAT-001
AC-TCH-002
Een actieve niveau-autorisatie kunnen intrekken binnen de toegestane docentcontext
REQ-UC-DOC-LLN-006-002SRS-AUTH-001
SRS-TCH-001
AC-AUTH-001
AC-TCH-001
Voorkomen dat een docent autorisaties buiten de eigen context intrekt
REQ-UC-DOC-LLN-006-003SRS-LRN-010
SRS-TCH-004
SRS-NFR-AUD-001
AC-LRN-010
AC-TCH-004
AC-NFR-AUD-001
Bij intrekking geen afgeronde oefenruns of geschiedenis verwijderen
REQ-UC-DOC-LLN-006-004SRS-AUTH-001
SRS-CAT-001
SRS-TCH-002
AC-AUTH-001
AC-CAT-001
AC-TCH-002
Nieuwe toegang tot het ingetrokken niveau server-side blokkeren
REQ-UC-DOC-LLN-006-005SRS-TCH-001
SRS-NFR-AUD-001
AC-TCH-001
AC-NFR-AUD-001
De intrekking herleidbaar vastleggen met actor en tijdstip
REQ-UC-DOC-LLN-006-006SRS-MSG-001
SRS-LRN-001
SRS-TCH-001
AC-MSG-001
AC-LRN-001
AC-TCH-001
Communicatie richting leerling kunnen starten via de centrale systeemberichtenflow