Relaties
Deze map bevat de generieke usecases voor relaties en relatie-uitnodigingen binnen OefenHub. Relaties bepalen welke gebruikers elkaar mogen benaderen, welke gegevens zichtbaar zijn en welke vervolgacties beschikbaar zijn, zoals berichten sturen, oefeningen delen, ouder-/voogdinzage en leerlingbegeleiding.
De usecases in deze map zijn procesgericht. De schermdocumentatie van SCH-GEN-08 — Relaties blijft de bron voor de exacte UI-opbouw, labels, kaarten, acties en waardelagen. Deze usecases beschrijven vooral het gedrag achter de schermen: welke relatiecontext geldt, welke controles server-side plaatsvinden, welke statussen ontstaan en welke vervolgprocessen worden gestart.
Usecases
| Usecase | Omschrijving |
|---|---|
| UC-GEN-REL-001 — Relaties bekijken | Bekijken van actieve relaties, openstaande verstuurde uitnodigingen, lege staten, details en vervolgacties. |
| UC-GEN-REL-002 — Vriend uitnodigen | Versturen van een vrienduitnodiging vanuit leerlingcontext naar een bestaande leerling of onbekend e-mailadres. |
| UC-GEN-REL-003 — Ouder/voogd uitnodigen | Versturen van een ouder-/voogduitnodiging vanuit leerlingcontext naar een bestaande of nog niet geregistreerde ouder/voogd. |
| UC-GEN-REL-004 — Relatie ontkoppelen | Ontkoppelen of aanvragen van ontkoppeling van een bestaande relatie, altijd via bevestigingsmodal. |
| UC-GEN-REL-005 — Relatie-uitnodiging accepteren of afwijzen | Verwerken van inkomende uitnodigingen via systeembericht, inclusief acceptatie, afwijzing, verlopen uitnodigingen en rolcontextcontrole. |
Relevante schermdocumentatie
| Scherm / context | Relevantie |
|---|---|
| SCH-GEN-08 — Relaties | Primaire pagina voor relatieoverzicht, actieve relaties, openstaande verstuurde uitnodigingen en relatieacties. |
| SCH-GEN-02 — Berichten overzicht | Inkomende relatie-uitnodigingen worden via systeemberichten of notificatiecontext aangeboden. |
| Registratieflow | Nodig voor uitnodigingen naar een onbekend e-mailadres, waarbij de uitnodiging pas aan een UserId gekoppeld kan worden na registratie. |
| Ontwerpbronnen — Popup-register | Centrale bron voor popupkeys, popupteksten, knopacties en inputvelden. |
| Ontwerpbronnen — Popup-themes | Centrale bron voor popupvarianten, themes en importdefaults. |
Domeinafbakening
| Onderwerp | Afbakening |
|---|---|
| Actieve relaties | Worden vastgelegd in UserRelationships en bepalen zichtbaarheid en toegestane vervolgacties. |
| Relatie-uitnodigingen | Worden vastgelegd in RelationshipInvitations en leiden pas na acceptatie tot een actieve relatie. |
| Relatiehistorie | Wordt vastgelegd via RelationshipEvents of een gelijkwaardige audit-/historybron. |
| Systeemberichten | Worden gebruikt om ontvangen uitnodigingen, acceptaties en afwijzingen aan gebruikers te tonen. |
| Privéberichten | Zijn een gevolg van bestaande relaties, maar worden inhoudelijk uitgewerkt in de berichten-usecases. |
| Oefenruns en resultaten | Kunnen zichtbaar worden via ouder-/voogdrelaties, maar worden inhoudelijk uitgewerkt in leerling-, ouder-/voogd- en oefenrun-usecases. |
Relatietypen en rolrichting
| Relatie / uitnodiging | Initiërende rol | Doelrol | Hoofdentiteit | Opmerking |
|---|---|---|---|---|
| Vriend uitnodigen | Leerling | Leerling | RelationshipInvitations | Leidt pas na acceptatie tot een actieve vriendschap. |
| Ouder/voogd uitnodigen | Leerling | Guardian | RelationshipInvitations | Guardian is de technische/backendwaarde voor ouder/voogd. |
| Actieve vriendschap | Leerling | Leerling | UserRelationships | Ontstaat pas na acceptatie. |
| Actieve ouder-/voogdrelatie | Leerling | Guardian | UserRelationships | Bepaalt ouder-/voogdinzage en eventuele live meekijkmogelijkheden. |
Bijzondere regels
| Onderwerp | Regel |
|---|---|
| Server-side controle | Frontend-zichtbaarheid van knoppen of relatiekaarten is nooit voldoende autorisatie. Elke actie wordt server-side gecontroleerd op actor, rolcontext, relatietype en relatie-/uitnodigingsstatus. |
| Openklapbare details | Relatiekaarten moeten details zoals Actief sinds kunnen tonen wanneer die voor het relatietype beschikbaar zijn. |
| Openstaande uitnodigingen | De relatiepagina toont openstaande verstuurde uitnodigingen. Inkomende uitnodigingen worden via systeemberichten aangeboden. |
| Uitnodiging onbekend e-mailadres | Wanneer het e-mailadres nog niet bekend is, wordt de gebruiker geïnformeerd en kan een OefenHub-registratie-uitnodiging worden verstuurd. |
| Registratie binnen termijn | Bij registratie binnen 7 dagen kan de oorspronkelijke relatie-uitnodiging worden gekoppeld aan het nieuwe account. |
| Geen directe relatie | Een uitnodiging maakt nooit direct een actieve relatie aan. De relatie ontstaat pas na acceptatie. |
| Duplicaatcontrole | Actieve identieke relaties, identieke openstaande uitnodigingen en kruislings conflicterende uitnodigingen worden geblokkeerd. |
| Ontkoppelen | Elke ontkoppelactie opent altijd een bevestigingsmodal met de vraag of de gebruiker zeker weet dat de relatie ontkoppeld moet worden. |
| Ontkoppelverzoek | Wanneer een relatie niet direct door de gebruiker zelf beëindigd mag worden, start de actie een ontkoppelverzoek of vervolgflow in plaats van directe deactivatie. |
| Afgehandelde uitnodigingen | Geaccepteerde, afgewezen of verlopen uitnodigingen verdwijnen uit openstaande lijsten. Historie blijft via audit/history beschikbaar. |
| Popups | Usecases verwijzen alleen naar PopupKey. Titel, tekst, knoppen, inputvelden en theme staan centraal in het popup-register en popup-themes. |
Diagramgebruik binnen relatie-usecases
De relatie-usecases gebruiken diagrammen alleen wanneer zij het proces duidelijker maken.
| Diagramtype | Gebruik |
|---|---|
| Sequence diagram | Voor interacties tussen gebruiker, frontend, backend, database, systeemberichten en externe mail. |
| State diagram | Voor statusobjecten zoals RelationshipInvitations en actieve/inactieve relaties. |
| Decision flow | Voor validatievolgorde, blokkades en alternatieve routes. |
| Data lifecycle | Voor inzicht in welke entiteiten wel en niet ontstaan tijdens een proces. |