Skip to main content

UC-OVG-KIND-005 — Kind ontkoppelen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-OVG-KIND-005
NaamKind ontkoppelen
DomeinOuder/voogd / Kinderen en koppelingen
Primaire actorOuder/voogd
Secundaire actor(en)Frontend, backend, database, berichtensysteem, relatie-audit
RolcontextActieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenKinderen, Kindinformatie, Ontkoppelbevestiging
Gerelateerde usecasesUC-OVG-KIND-003, UC-OVG-KIND-004, UC-OVG-KIND-006, UC-GEN-REL-004
Primaire entiteitenUserRelationships, RelationshipEvents, SystemMessages
Secundaire entiteiten / eventsGuardianStudentRelationshipDeactivated, SystemMessageCreated
Gerelateerde popupsOVG_RELATION_DISCONNECT_CONFIRM, OVG_RELATION_DISCONNECT_SUCCESS, OVG_RELATION_DISCONNECT_ERROR
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

De usecase beschrijft hoe een ouder/voogd een actieve relatie met een gekoppeld kind beëindigt. De ouder/voogd mag de ouder-/voogdrelatie direct beëindigen na bevestiging. De relatie wordt niet hard verwijderd, maar administratief gedeactiveerd.

Na bevestiging wordt de relatie beëindigd, auditbaar vastgelegd en wordt het kind via een systeembericht geïnformeerd. De ontkoppeling verwijdert geen oefengeschiedenis en wijzigt geen exercise runs.

Uitgangspunten

  • Een ouder/voogd mag een ouder-/voogdrelatie direct beëindigen.
  • Ontkoppelen gebruikt soft-deactivation en geen hard delete.
  • Ontkoppelen vereist bevestiging.
  • De relatiehistorie blijft auditbaar.
  • Ontkoppelen verwijdert geen afgeronde runs of geschiedenis.

3. Scope

Deze usecase beschrijft:

  • Starten van ontkoppeling vanuit geselecteerd kind.
  • Tonen van bevestigingspopup via PopupKey.
  • Server-side controleren dat de relatie actief is.
  • Soft-deactivation van UserRelationships.
  • Vastleggen van relatie-event.
  • Triggeren van communicatie naar het kind.

Deze usecase beschrijft niet:

  • Relatie-uitnodiging afwijzen of intrekken.
  • Ontkoppelverzoek door leerling laten goedkeuren.
  • Oefengeschiedenis verwijderen.
  • Identity-provideraccount wijzigen.

3.1 Afbakening met aangrenzende domeinen

OnderdeelAfbakening
Generiek / RelatiesRelatie-uitnodigingen, acceptatie en algemene relatievorming blijven bronhoudend in het generieke relatiedomein.
Generiek / BerichtenSysteemberichten en leesstatussen blijven bronhoudend in het centrale berichtendomein.
LeerlingDe leerling blijft eigenaar van eigen oefenuitvoering; ouder/voogd kan niet namens het kind oefenen.
DocentDocentautorisaties en docentresultaatinzage blijven begrensd door docentcontext; ouder-/voogdcontext gebruikt eigen relatiegrens.

4. Pre-condities

IDWaarde
001Een kind is geselecteerd.
002Er bestaat een actieve ouder-/voogdrelatie tussen ouder/voogd en kind.
003De actor bevindt zich aan de ouder-/voogdkant van de relatie.
004De bevestigingspopup is beschikbaar via PopupKey.

5. Post-condities

IDWaarde
001UserRelationships.IsActive is false voor de beëindigde relatie.
002Deactiveringstijdstip en actor zijn vastgelegd.
003Een relatie-event is vastgelegd.
004Het kind wordt via systeembericht geïnformeerd of communicatie wordt veilig als fout afgehandeld.
005Oefengeschiedenis blijft bestaan.

6. Trigger

De usecase start wanneer de ouder/voogd de betreffende ouder-/voogdroute opent of de beschreven actie uitvoert binnen de actieve ouder-/voogdcontext.

7. Normale processtroom

StapActor / componentActieResultaatData / controle
1Ouder/voogdKiest Ontkoppel leerlingFrontend opent bevestigingspopupPopupKey
2Ouder/voogdBevestigt ontkoppelingFrontend stuurt verzoek naar backendBevestiging
3BackendControleert relatie en actorOntkoppeling is toegestaanUserRelationships
4DatabaseDeactiveert relatieIsActive = false en deactivatievelden gevuldUserRelationships
5DatabaseLegt relatie-event vastOntkoppeling is auditbaarRelationshipEvents
6BackendMaakt communicatie naar kind aanSysteembericht of vervolgafhandeling gestartSystemMessages
7FrontendToont resultaatKind verdwijnt uit actieve lijstViewmodel

7.1 Scherm- en routegedrag

  • De pagina Kinderen toont een compacte lijst en gebruikt selectie als bewuste tussenstap.
  • Vervolgacties blijven uitgeschakeld totdat een kind is geselecteerd.
  • Bij wijziging van relatie- of autorisatiestatus wordt oude clientstate ongeldig gemaakt.
  • De gebruiker krijgt geen docentgerichte filters of beheeracties te zien.

8. Alternatieve en exceptionele processtromen

IDWaarde
001Gebruiker annuleert bevestiging: er wordt niets gewijzigd.
002Relatie is al beëindigd: backend voert geen tweede deactivering uit en toont veilige afhandeling.
003Actor is niet ouder-/voogdkant: ontkoppeling wordt geweigerd.
004Systeembericht kan niet worden aangemaakt: relatie blijft beëindigd; fout wordt gelogd en communicatieherstel wordt afgehandeld volgens berichtenbeleid.
005Kind zit actief in oefening: relatie wordt beëindigd; het systeembericht blijft via het berichtenoverzicht beschikbaar wanneer directe realtime zichtbaarheid ontbreekt.

8.1 Afhandeling van verouderde of ongeldige clientstate

  • De backend herhaalt de autorisatiecontrole bij iedere vervolgactie.
  • Oude selectie-, route- of browsercontext wordt genegeerd wanneer de actuele server-side context geen toegang meer geeft.
  • De frontend mag verouderde weergave herstellen door opnieuw het actuele viewmodel op te vragen.

9. Business rules

IDWaarde
001Een ouder/voogd mag een ouder-/voogdrelatie direct beëindigen.
002Ontkoppelen gebruikt soft-deactivation en geen hard delete.
003Ontkoppelen vereist bevestiging.
004De relatiehistorie blijft auditbaar.
005Ontkoppelen verwijdert geen afgeronde runs of geschiedenis.

9.1 Readmodel- en tellerdefinities

WaardeDefinitieUitsluitingen / grenzen
RelatiestatusUserRelationships.IsActive.Wordt false na bevestigde ontkoppeling.
AuditregelRelationshipEvent of gelijkwaardige relatie-audit.Actor, rolcontext en tijdstip blijven herleidbaar.
CommunicatiestatusSysteembericht aan het kind.Communicatie herstelt of wijzigt de relatie niet.

9.2 Autorisatie- en privacygrenzen

  • De zichtbare dataset wordt altijd server-side beperkt tot de actieve ouder-/voogdcontext.
  • Persoonsgegevens van kinderen worden alleen getoond zolang er een actieve ouder-/voogdrelatie bestaat.
  • Historische oefenresultaten worden gelezen binnen de toegestane context, maar niet gewijzigd door raadplegen of samenvatten.

10. Datavalidatie

IDWaarde
001Relatie moet bestaan.
002Relatie moet actief zijn.
003RelationshipType moet ouder-/voogdrelatie zijn.
004Ingelogde gebruiker moet de ouder-/voogdpartij zijn.
005Kind-ID in verzoek moet overeenkomen met het relatie-record.

11. Datamutaties en events

IDWaarde
001UserRelationships.IsActive wordt op false gezet.
002UserRelationships.DeactivatedAtUtc en DeactivatedByUserId worden gevuld.
003RelationshipEvents krijgt een ontkoppel-event.
004SystemMessages krijgt een bericht aan het kind, uitgewerkt in UC-OVG-KIND-006.

12. Geen datamutaties

IDWaarde
001Users worden niet verwijderd.
002ExerciseRuns en resultaten blijven ongewijzigd.
003TeacherLevelAuthorizations worden niet automatisch gewijzigd door ouder-/voogdontkoppeling.
004PrivateMessageThreads worden niet verwijderd.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyGebruikOpmerking
OVG_RELATION_DISCONNECT_CONFIRMGebruik binnen deze usecase.Tekst, knoppen, acties en eventuele inputdefinitie blijven bronhoudend in het popupregister.
OVG_RELATION_DISCONNECT_SUCCESSGebruik binnen deze usecase.Tekst, knoppen, acties en eventuele inputdefinitie blijven bronhoudend in het popupregister.
OVG_RELATION_DISCONNECT_ERRORGebruik binnen deze usecase.Tekst, knoppen, acties en eventuele inputdefinitie blijven bronhoudend in het popupregister.

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

AspectAfleiding
FO/TO/SRS-001Ontkoppelen toont een waarschuwing.
FO/TO/SRS-002Bij bevestiging ontvangt de leerling een systeembericht.
FO/TO/SRS-003Ouder/voogd kan de relatie direct beëindigen.

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-OVG-KIND-005-001SRS-REL-003
SRS-REL-006
SRS-GUA-003
SRS-GUA-004
AC-REL-003
AC-REL-006
AC-GUA-003
AC-GUA-004
Ouder-/voogdontkoppeling pas uitvoeren na bevestiging
REQ-UC-OVG-KIND-005-002SRS-REL-001
SRS-GUA-001
AC-REL-001
AC-GUA-001
De relatie soft-deactiveren in plaats van hard verwijderen
REQ-UC-OVG-KIND-005-003SRS-AUTH-001
SRS-REL-003
SRS-REL-006
SRS-GUA-003
SRS-GUA-004
SRS-NFR-AUD-001
AC-AUTH-001
AC-REL-003
AC-REL-006
AC-GUA-003
AC-GUA-004
AC-NFR-AUD-001
Actor, rolcontext en tijdstip van ontkoppeling vastleggen
REQ-UC-OVG-KIND-005-004SRS-REL-003
SRS-REL-006
SRS-MSG-001
SRS-GUA-003
SRS-GUA-004
AC-REL-003
AC-REL-006
AC-MSG-001
AC-GUA-003
AC-GUA-004
Het kind informeren via systeembericht na ontkoppeling
REQ-UC-OVG-KIND-005-005SRS-REL-003
SRS-REL-006
SRS-GUA-003
SRS-GUA-004
SRS-NFR-AUD-001
AC-REL-003
AC-REL-006
AC-GUA-003
AC-GUA-004
AC-NFR-AUD-001
Oefengeschiedenis niet verwijderen door ouder-/voogdontkoppeling