UC-OVG-LIVE-007 — Live meekijksessie beëindigen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-LIVE-007 |
| Naam | Live meekijksessie beëindigen |
| Domein | Ouder/voogd / Online en live meekijken |
| Primaire actor | Ouder/voogd |
| Secundaire actor(en) | Frontend, backend, database, realtime service |
| Rolcontext | Actieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Live meekijkweergave, Online |
| Gerelateerde usecases | UC-OVG-LIVE-003, UC-OVG-LIVE-004, UC-OVG-LIVE-008 |
| Primaire entiteiten | LiveViewAudit, SignalRConnections, ExerciseRuns |
| Secundaire entiteiten / events | LiveViewEnded |
| Gerelateerde popups | POP-OVG-LIVE-SESSION-ENDED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een live-meekijksessie van een ouder/voogd wordt beëindigd. Beëindiging kan bewust door terugnavigeren of sluiten, maar ook doordat de leerlingrun eindigt, de gebruiker uitlogt of de verbinding definitief wegvalt.
Bij beëindiging wordt het open LiveViewAudit-record voorzien van een eindmoment. De oefenrun van het kind blijft ongewijzigd.
Uitgangspunten
- Elke daadwerkelijk gestarte live sessie krijgt een eindmoment.
- Beëindiging wijzigt de oefening niet.
- SignalR-subscription wordt opgeruimd.
- Logout beëindigt actieve meekijksessie.
- Run-einde beëindigt de liveweergave veilig.
3. Scope
Deze usecase beschrijft:
- bewust stoppen van live meekijken;
- beëindigen bij navigatie weg van liveweergave;
- beëindigen bij logout;
- beëindigen bij run-afronding of verlaten oefencontext;
- vullen van
LiveViewAudit.EndedAtUtc.
Deze usecase beschrijft niet:
- resultaat afronden namens kind;
- antwoorden opslaan;
- relatie ontkoppelen;
- geschiedenis verwijderen.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Docent / Online en live meekijken | De technische liveweergave kan gelijkend zijn, maar docentautorisatie blijft beperkt tot eigen docentcontext en niveauautorisaties. |
| Leerling / Oefenen en voortgang | De leerlingrun en voortgang worden door de leerlingflow geschreven; ouder/voogd kijkt alleen read-only mee. |
| Generiek / Relaties | De actieve ouder-/voogdrelatie bepaalt de toegang; relatievorming en uitnodigingen blijven buiten deze live-usecases. |
| Technische realtime-laag | SignalR transporteert updates; de server-side opgeslagen voortgang blijft bron van waarheid. |
4. Pre-condities
| 001 | Er is een open LiveViewAudit-record. |
| 002 | Meekijker heeft een actieve liveweergave of een recent actieve liveverbinding. |
| 003 | SignalR-subscription is actief of eerder gestart. |
| 004 | Backend kan eindmoment vastleggen. |
5. Post-condities
| 001 | LiveViewAudit.EndedAtUtc is gevuld. |
| 002 | Realtime subscription is beëindigd. |
| 003 | De liveweergave is gesloten of naar overzicht teruggekeerd. |
| 004 | De oefenrun is niet door de ouder/voogd gewijzigd. |
6. Trigger
De ouder/voogd sluit live meekijken, navigeert weg, logt uit, de leerlingrun eindigt of de verbinding wordt definitief verbroken.
7. Normale processtroom
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Ouder/voogd / systeem | Beëindigt sessie | Frontend of backend detecteert stop | Stopcontext |
| 2 | Frontend | Meldt stop aan backend waar mogelijk | Backend zoekt open auditrecord | LiveViewAuditId |
| 3 | Backend | Vult eindmoment idempotent | Sessie is auditbaar beëindigd | EndedAtUtc |
| 4 | Realtime service | Verwijdert subscription | Geen updates meer naar meekijker | SignalRConnections |
| 5 | Frontend | Sluit liveweergave | Gebruiker keert terug of ziet eindmelding | UI |
| 6 | Backend | Laat run ongemoeid | Oefening kind loopt door of is normaal geëindigd | ExerciseRuns |
7.1 Scherm- en routegedrag
- De Online-pagina gebruikt ouder-/voogdcontext als actieve rol-ingang.
- De liveweergave is volledig read-only en bevat geen antwoord- of interventieacties.
- Actuele status wordt na relevante gebeurtenissen opnieuw afgeleid uit server-side voortgang.
- Bij gecombineerde rollen bepaalt de gekozen contexttab welke dataset en filters zichtbaar zijn.
8. Alternatieve en exceptionele processtromen
| 001 | Netwerk valt weg vóór stopmelding: backend sluit via disconnect- of timeoutafhandeling. | | 002 | Auditrecord is al beëindigd: stopactie is idempotent en wijzigt niets opnieuw. | | 003 | Run eindigt terwijl ouder nog kijkt: sessie wordt beëindigd met run-eindeafhandeling. | | 004 | Logout: sessie wordt beëindigd binnen logoutverwerking. | | 005 | Backend kan audit niet direct bijwerken: technische fout wordt gelogd en herstel volgt infrastructuurbeleid. |
8.1 Afhandeling van verouderde of ongeldige clientstate
- De backend herhaalt autorisatie bij iedere raadpleeg-, filter-, export- of liveactie.
- Oude routeparameters, browserselecties en clientcache worden genegeerd wanneer de actuele server-side context geen toegang geeft.
- De frontend mag het scherm herstellen door het actuele readmodel opnieuw op te vragen.
9. Business rules
| 001 | LiveViewAudit.EndedAtUtc moet worden gevuld voor beëindigde sessies. |
| 002 | Stoppen van meekijken stopt de run van het kind niet. |
| 003 | Beëindigen is idempotent. |
| 004 | Realtime subscriptions worden opgeruimd. |
| 005 | De beëindigingscontext mag auditbaar zijn, maar verandert geen oefenresultaat. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Open live sessie | LiveViewAudit zonder EndedAtUtc. | Actief of recent verbonden. |
| Beëindigde live sessie | LiveViewAudit met EndedAtUtc. | Niet opnieuw activeren. |
| Beëindigingscontext | Gebruiker, logout, disconnect of run-einde. | Geen effect op score. |
| Subscription | SignalR-verbinding voor updates. | Wordt verwijderd. |
9.2 Autorisatie- en privacygrenzen
- De zichtbare dataset wordt altijd server-side beperkt tot actieve ouder-/voogdrelaties.
- Een gebruiker met gecombineerde rollen krijgt binnen deze route geen impliciete docent- of beheerderinzage.
- Resultaat- en livegegevens van niet-gekoppelde kinderen worden nooit gedeeltelijk getoond.
10. Datavalidatie
| 001 | LiveViewAuditId moet bij de gebruiker of sessiecontext horen. |
| 002 | EndedAtUtc mag niet vóór StartedAtUtc liggen. |
| 003 | Dubbele beëindiging moet idempotent zijn. |
| 004 | SignalR-connection moet worden vrijgegeven. |
| 005 | Runstatus mag niet door stopactie worden gewijzigd. |
11. Datamutaties en events
| 001 | LiveViewAudit.EndedAtUtc wordt gevuld wanneer het record nog open is. |
| 002 | Technische realtime subscription wordt beëindigd. |
| 003 | Functioneel event: LiveViewEnded. |
12. Geen datamutaties
| 001 | ExerciseRuns worden niet gewijzigd door stop van meekijker. | | 002 | ExerciseRunProgress wordt niet gewijzigd. | | 003 | UserRelationships worden niet gewijzigd. | | 004 | Resultaten worden niet aangemaakt of aangepast. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-OVG-LIVE-SESSION-ENDED | Wordt gebruikt wanneer beëindiging voor de gebruiker zichtbaar wordt doordat de run of sessie is afgelopen. |
Popupteksten, knopteksten, inputlabels en themakeuzes worden niet in deze usecase gedupliceerd. Het popupregister en de popupthemes blijven bronhoudend.
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| 001 | LiveViewAudit moet start en einde van live meekijken bevatten. | | 002 | Stoppen van live meekijken mag leerlingrun niet beïnvloeden. | | 003 | Logout moet open live sessies beëindigen. |
18.1 Impact voor database-informatie en ontwerpbronnen
| 001 | Autorisatiematrix moet ouder-/voogdraadpleging onderscheiden van docentraadpleging. | | 002 | Usecase-scherm-matrix moet de betrokken ouder-/voogdschermen koppelen aan deze usecase. | | 003 | Usecase-requirement-matrix moet de requirements uit hoofdstuk 19 opnemen. | | 004 | LiveViewAudit en realtime-afhandeling moeten ouder-/voogdrolcontext expliciet ondersteunen. |
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.
Er zijn voor deze usecase geen aparte requirement-afleidingen vastgelegd. De procesbeschrijving blijft broncontext voor de SRS-traceability.