UC-OVG-LIVE-003 — Live meekijksessie starten
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-LIVE-003 |
| Naam | Live meekijksessie starten |
| 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 | Online, Live meekijkweergave |
| Gerelateerde usecases | UC-OVG-LIVE-002, UC-OVG-LIVE-004, UC-DOC-LIVE-003 |
| Primaire entiteiten | UserRelationships, ExerciseRuns, LiveViewAudit, SignalRConnections |
| Secundaire entiteiten / events | LiveViewStarted, GuardianLiveSessionReadModel |
| Gerelateerde popups | POP-OVG-LIVE-ACCESS-DENIED, POP-OVG-LIVE-START-ERROR, POP-OVG-LIVE-SESSION-ENDED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een ouder/voogd bewust een live-meekijksessie start bij een gekoppeld kind dat op dat moment met een oefening bezig is.
Bij start wordt de autorisatie opnieuw server-side gecontroleerd en wordt een LiveViewAudit-record aangemaakt met ouder-/voogdrolcontext en snapshotnaam. De sessie is volledig read-only.
Uitgangspunten
- Start vereist een bewuste actie.
- Start vereist een actieve ouderrelatie en actieve run.
LiveViewAuditlegt het startmoment vast.- SignalR is transport, niet de bron van waarheid.
- De meekijker kan de oefening niet beïnvloeden.
3. Scope
Deze usecase beschrijft:
- starten van een live-meekijksessie;
- aanmaken van
LiveViewAudit-startrecord; - openen van liveweergave;
- starten van realtime subscription;
- tonen van actuele vraagcontext.
Deze usecase beschrijft niet:
- voortgang wijzigen;
- antwoord geven namens kind;
- resultaat corrigeren;
- nieuwe oefening starten.
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 | Liveknop is beschikbaar volgens actuele server-side controle. | | 002 | Kind heeft een actieve oefenrun. | | 003 | Ouderrelatie is actief. | | 004 | Live-feature is ingeschakeld. |
5. Post-condities
| 001 | Liveweergave is geopend. |
| 002 | LiveViewAudit.StartedAtUtc is vastgelegd. |
| 003 | Realtime subscription is actief of fout is veilig afgehandeld. |
| 004 | Geen oefenrun is gewijzigd. |
6. Trigger
De ouder/voogd klikt op Kijk live mee bij een actief oefenend kind.
7. Normale processtroom
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Ouder/voogd | Klikt Kijk live mee | Frontend vraagt live-start | ChildId / RunId |
| 2 | Backend | Herhaalt relatie-, feature- en runcontrole | Start is toegestaan of veilig geweigerd | UserRelationships, SiteFeatureToggles, ExerciseRuns |
| 3 | Database | Maakt LiveViewAudit-record | Start is auditbaar | LiveViewAudit |
| 4 | Backend | Laadt actuele voortgang | Startviewmodel wordt opgebouwd | ExerciseRunProgress |
| 5 | Realtime service | Start subscription | Updates kunnen worden ontvangen | SignalRConnections |
| 6 | Frontend | Toont liveweergave | Ouder/voogd kijkt read-only mee | GuardianLiveSessionReadModel |
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 | Run eindigt net voor start: liveweergave opent niet en sessie-afgelopenafhandeling wordt getoond. | | 002 | Relatie vervalt: start wordt geweigerd. | | 003 | SignalR-start faalt nadat audit is aangemaakt: auditrecord wordt idempotent beëindigd. | | 004 | Meerdere ouders starten tegelijk: gelijktijdige sessies zijn toegestaan binnen eigen autorisatie. | | 005 | Kind hervat een bestaande run: dit geldt functioneel als live wanneer de run actief is. |
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 is verplicht bij daadwerkelijke start. |
| 002 | Per live sessie worden viewer, rolcontext, kind, run, start en later einde vastgelegd. |
| 003 | Ouder/voogd mag alle live oefeningen van gekoppelde kinderen volgen. |
| 004 | Meekijken is read-only. |
| 005 | Startcontrole mag niet op oude knopstatus vertrouwen. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Live sessie | Open LiveViewAudit-record met oudercontext. | Eindmoment wordt later gevuld. |
| Actuele vraag | Afgeleid uit server-side opgeslagen voortgang. | Niet uit browserstate van kind. |
| Realtime verbinding | SignalR subscription voor voortgangsupdates. | Transportlaag, geen brondata. |
| Rolcontext snapshot | ViewerRoleNameSnapshot = Ouder/voogd. | Leesbaar bij latere audit. |
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 | Live-feature moet actief zijn. |
| 002 | Actieve ouderrelatie moet bestaan. |
| 003 | Run moet bij het kind horen en actief zijn. |
| 004 | ViewerRoleId en ViewerRoleNameSnapshot moeten worden vastgelegd. |
| 005 | SignalR-subscription mag alleen na autorisatie worden gestart. |
11. Datamutaties en events
| 001 | LiveViewAudit-record wordt aangemaakt met startmoment, viewer, rolcontext, kind en run. |
| 002 | Realtime subscription wordt technisch geopend. |
| 003 | Bij startfout na auditcreatie wordt hetzelfde LiveViewAudit-record beëindigd; er ontstaat geen tweede sessie. |
| 004 | Functioneel event: LiveViewStarted. |
12. Geen datamutaties
| 001 | ExerciseRuns worden niet gewijzigd. | | 002 | Antwoorden worden niet gewijzigd. | | 003 | Scores worden niet gewijzigd. | | 004 | Relaties worden niet gewijzigd. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-OVG-LIVE-ACCESS-DENIED | Wordt gebruikt wanneer actuele ouder-/voogdautorisatie ontbreekt. |
| POP-OVG-LIVE-START-ERROR | Wordt gebruikt wanneer de live-start technisch of functioneel niet kan worden afgerond. |
| POP-OVG-LIVE-SESSION-ENDED | Wordt gebruikt wanneer de run vlak vóór of tijdens live-start is beëindigd. |
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 | Live sessies moeten auditbaar zijn via LiveViewAudit. |
| 002 | Ouder/voogdstart is read-only en gebruikt eigen rolcontext. |
| 003 | SignalR verzorgt updates, maar databasevoortgang blijft leidend. |
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.