UC-OVG-KIND-006 — Ontkoppeling aan kind communiceren
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-KIND-006 |
| Naam | Ontkoppeling aan kind communiceren |
| Domein | Ouder/voogd / Kinderen en koppelingen |
| Primaire actor | Systeem |
| Secundaire actor(en) | Ouder/voogd, kind/leerling, berichtensysteem, backend, database |
| Rolcontext | Actieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Berichtenoverzicht leerling, systeemcommunicatie |
| Gerelateerde usecases | UC-OVG-KIND-005, UC-GEN-MSG-001, UC-GEN-MSG-003, UC-GEN-REL-004 |
| Primaire entiteiten | SystemMessages, UserRelationships, RelationshipEvents |
| Secundaire entiteiten / events | SystemMessageCreated, GuardianStudentRelationshipDeactivated |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Should |
2. Omschrijving
De usecase beschrijft hoe het kind wordt geïnformeerd wanneer een ouder/voogd de ouder-/voogdrelatie heeft beëindigd. De communicatie verloopt via het centrale systeemberichtendomein en is informatief: het bericht herstelt de relatie niet en start geen nieuwe uitnodiging.
Het systeembericht blijft onderdeel van het algemene berichtenoverzicht. Wanneer het kind op dat moment oefent of de melding niet direct ziet, blijft het bericht beschikbaar volgens de regels van systeemberichten.
Uitgangspunten
- Ontkoppelcommunicatie loopt via SystemMessages, niet via privéberichten.
- Het bericht is informatief en voert geen relatieactie uit bij openen.
- Het lezen van het bericht maakt de relatie niet opnieuw actief.
- Systeemberichten zijn niet verwijderbaar als gewone privéthreads.
- Realtime melding is transport, SystemMessages is de bron voor mailboxzichtbaarheid.
3. Scope
Deze usecase beschrijft:
- Aanmaken van een systeembericht aan het kind na ontkoppeling.
- Koppelen van het systeembericht aan de relatie- of relatie-eventcontext.
- Zichtbaar maken in het berichtenoverzicht van de leerling.
- Veilig afhandelen wanneer directe realtime melding niet kan worden getoond.
Deze usecase beschrijft niet:
- Relatie opnieuw activeren.
- Nieuwe uitnodiging starten.
- Privéberichtthread aanmaken.
- Popuptekst of berichttekst inhoudelijk dupliceren in de usecase.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Generiek / Relaties | Relatie-uitnodigingen, acceptatie en algemene relatievorming blijven bronhoudend in het generieke relatiedomein. |
| Generiek / Berichten | Systeemberichten en leesstatussen blijven bronhoudend in het centrale berichtendomein. |
| Leerling | De leerling blijft eigenaar van eigen oefenuitvoering; ouder/voogd kan niet namens het kind oefenen. |
| Docent | Docentautorisaties en docentresultaatinzage blijven begrensd door docentcontext; ouder-/voogdcontext gebruikt eigen relatiegrens. |
4. Pre-condities
| ID | Waarde |
|---|---|
| 001 | Er is een ouder-/voogdrelatie gedeactiveerd. |
| 002 | Het kind heeft een intern Users.Id. |
| 003 | Het systeemberichttemplate of de systeemberichtdefinitie is beschikbaar. |
5. Post-condities
| ID | Waarde |
|---|---|
| 001 | Het kind heeft een systeembericht over de ontkoppeling. |
| 002 | Het bericht is informatief en verwerkt geen actie automatisch. |
| 003 | De gedeactiveerde relatie blijft gedeactiveerd. |
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
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Backend | Ontvangt relatie-deactivatie-event | Communicatieflow start | RelationshipEvents |
| 2 | Backend | Bepaalt ontvanger | Kindaccount is ontvanger | UserRelationships |
| 3 | Berichtensysteem | Maakt systeembericht aan | Bericht verschijnt in mailboxdataset | SystemMessages |
| 4 | Realtimecomponent | Probeert badge/update te sturen | Kind kan bericht direct of via berichtenoverzicht zien | SignalR |
| 5 | Kind | Opent bericht via berichtenoverzicht | Bericht wordt gelezen volgens generieke berichtenflow | SystemMessages |
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
| ID | Waarde |
|---|---|
| 001 | Kind is niet online: systeembericht blijft ongelezen beschikbaar. |
| 002 | Kind zit in actieve oefening: zichtbare badge kan tijdelijk worden onderdrukt zonder bericht te verliezen. |
| 003 | Ontvangeraccount bestaat niet meer of is geanonimiseerd: communicatie wordt gelogd en niet naar een onbevoegde ontvanger gestuurd. |
| 004 | Systeembericht bestaat al voor hetzelfde relatie-event: backend voorkomt duplicatie. |
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
| ID | Waarde |
|---|---|
| 001 | Ontkoppelcommunicatie loopt via SystemMessages, niet via privéberichten. |
| 002 | Het bericht is informatief en voert geen relatieactie uit bij openen. |
| 003 | Het lezen van het bericht maakt de relatie niet opnieuw actief. |
| 004 | Systeemberichten zijn niet verwijderbaar als gewone privéthreads. |
| 005 | Realtime melding is transport, SystemMessages is de bron voor mailboxzichtbaarheid. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Systeembericht | Bericht aan het kind naar aanleiding van relatie-event. | Geen privébericht en geen popupregister-popup. |
| Leesstatus | Per ontvanger binnen het berichtendomein. | Lezen wijzigt alleen ReadAtUtc/leespositie. |
| Realtime badge | Afgeleid uit ongelezen systeemberichten. | Transport kan tijdelijk ontbreken zonder berichtverlies. |
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
| ID | Waarde |
|---|---|
| 001 | Relatie-event moet verwijzen naar een gedeactiveerde ouder-/voogdrelatie. |
| 002 | Ontvanger moet het kind uit de relatie zijn. |
| 003 | Er mag niet meerdere keren voor hetzelfde event hetzelfde systeembericht worden aangemaakt. |
| 004 | EntityType/EntityId moet passen bij de toegestane systeemberichtverwijzing of als informatief bericht zonder actie worden verwerkt. |
11. Datamutaties en events
| ID | Waarde |
|---|---|
| 001 | SystemMessages krijgt een systeembericht voor het kind. |
| 002 | Ongelezenstatus wordt initieel voor het kind vastgelegd volgens berichtenmodel. |
| 003 | Een realtime badge/update kan worden verstuurd als transportmechanisme, maar vormt geen eigen domeinmutatie. |
12. Geen datamutaties
| ID | Waarde |
|---|---|
| 001 | UserRelationships wordt niet opnieuw geactiveerd. |
| 002 | RelationshipInvitations worden niet aangemaakt. |
| 003 | PrivateMessageThreads worden niet aangemaakt. |
| 004 | ExerciseRuns en resultaten blijven ongewijzigd. |
13. State diagram
Niet van toepassing.
De berichtleesstatus en mailbox-lifecycle blijven bronhoudend in het generieke berichtendomein. Deze usecase beschrijft alleen het aanmaken van het informatieve systeembericht na ontkoppeling.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik | Opmerking |
|---|---|---|
| Niet van toepassing | Deze usecase gebruikt geen popupregister-popup. | Eventuele lege staten of inline meldingen zijn scherminhoud en geen popupdefinitie. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Aspect | Afleiding |
|---|---|
| FO/TO/SRS-001 | Ontkoppelen stuurt bij bevestiging een systeembericht naar de leerling. |
| FO/TO/SRS-002 | Systeemberichten blijven onderdeel van het centrale berichtensysteem. |
| FO/TO/SRS-003 | Lezen van een systeembericht verwerkt onderliggende relaties niet automatisch. |
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-OVG-KIND-006-001 | SRS-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 | Na ouder-/voogdontkoppeling een systeembericht aan het kind aanmaken |
REQ-UC-OVG-KIND-006-002 | SRS-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 | Voorkomen dat hetzelfde ontkoppel-event meerdere identieke systeemberichten veroorzaakt |
REQ-UC-OVG-KIND-006-003 | SRS-REL-001 SRS-MSG-007 SRS-GUA-001 AC-REL-001 AC-MSG-007 AC-GUA-001 | Het bericht informatief houden en geen relatieherstelactie uitvoeren bij openen |
REQ-UC-OVG-KIND-006-004 | SRS-MSG-001 SRS-TIC-002 SRS-GUA-001 SRS-ARCH-003 AC-MSG-001 AC-TIC-002 AC-GUA-001 AC-ARCH-003 | Het bericht blijvend binnen de systeemberichtregels leesbaar houden wanneer directe realtime melding niet zichtbaar is |
REQ-UC-OVG-KIND-006-005 | SRS-MSG-001 SRS-GUA-001 AC-MSG-001 AC-GUA-001 | Geen privéberichtthread gebruiken voor deze systeemcommunicatie |