UC-OVG-LIVE-002 — Live meekijken-beschikbaarheid bepalen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-LIVE-002 |
| Naam | Live meekijken-beschikbaarheid bepalen |
| 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, Liveknopstatus |
| Gerelateerde usecases | UC-OVG-LIVE-001, UC-OVG-LIVE-003, UC-DOC-LIVE-002 |
| Primaire entiteiten | UserRelationships, ExerciseRuns, SiteFeatureToggles |
| Secundaire entiteiten / events | LiveAvailabilityReadModel |
| Gerelateerde popups | POP-OVG-LIVE-NOT-AVAILABLE, POP-OVG-LIVE-ACCESS-DENIED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe het systeem bepaalt of de actie Kijk live mee beschikbaar is voor een ouder/voogd. Beschikbaarheid vereist een actief gekoppeld kind, een actieve oefenrun en een ingeschakelde live-meekijkfunctionaliteit.
De ouder-/voogdautorisatie is breder dan de docentcontext: een ouder/voogd mag live meekijken bij alle live oefeningen van gekoppelde kinderen, ongeacht welke docent de oefening heeft aangeboden.
Uitgangspunten
- Beschikbaarheid wordt server-side bepaald.
- De actie is alleen actief bij een actieve oefenrun.
- De ouder-/voogdrelatie moet actief zijn.
- De live-feature moet beschikbaar zijn.
- Een uitgeschakelde knop geeft geen client-side recht.
3. Scope
Deze usecase beschrijft:
- bepalen of
Kijk live meeactief is; - toelichting tonen wanneer live niet beschikbaar is;
- verschil bepalen tussen online maar niet oefenend en wel oefenend;
- featuretoggle meenemen;
- runcontext voorbereiden voor live-start.
Deze usecase beschrijft niet:
- live sessie zelf starten;
- live voortgang streamen;
- docentniveauautorisatie controleren;
- resultaatgeschiedenis tonen.
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 | Online-overzicht is geladen. | | 002 | Een kindregel is bekend. | | 003 | Realtime oefenstatus kan worden bepaald. | | 004 | De ouder-/voogdcontext is actief. |
5. Post-condities
| 001 | De liveknopstatus is correct bepaald. | | 002 | Geen LiveViewAudit-record is aangemaakt. | | 003 | Geen rungegevens zijn gewijzigd. | | 004 | Een duidelijke niet-beschikbaarstatus is beschikbaar. |
6. Trigger
Het Online-overzicht rendert of ververst de actie Kijk live mee per kind.
7. Normale processtroom
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Frontend | Vraagt beschikbaarheid per kind | Backend ontvangt kindcontext | ChildId |
| 2 | Backend | Controleert ouderrelatie | Kind is wel of niet toegestaan | UserRelationships |
| 3 | Backend | Controleert featuretoggle | Live kan centraal aan of uit staan | SiteFeatureToggles |
| 4 | Backend | Controleert actieve run | Bepaalt livebaarheid | ExerciseRuns |
| 5 | Backend | Levert status en reden | Frontend kan knop activeren of uitschakelen | LiveAvailabilityReadModel |
| 6 | Frontend | Toont knopstatus | Ouder/voogd ziet actie of toelichting | UI |
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 | Kind is online maar niet aan het oefenen: knop uit met toelichting. | | 002 | Live-feature staat uit: knop uit voor alle kinderen. | | 003 | Relatie vervalt tussen overzicht en beschikbaarheidscheck: knop wordt uitgeschakeld. | | 004 | Actieve run is net afgerond: knop wordt uitgeschakeld. | | 005 | Backendstatus is onzeker: knop wordt veilig uitgeschakeld. |
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 | De backend bepaalt beschikbaarheid opnieuw bij start van live meekijken. | | 002 | Een actieve ouder-/voogdrelatie is vereist. | | 003 | Live meekijken is niet afhankelijk van docentniveauautorisatie. | | 004 | Een actieve run is vereist. | | 005 | De knopstatus is afgeleid en niet persistent. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Beschikbaar | Actieve ouderrelatie + live-feature + actieve run. | Wordt opnieuw gecontroleerd bij start. |
| Niet online | Kind heeft geen relevante actieve sessie. | Geen liveknop. |
| Niet oefenend | Kind is online zonder actieve run. | Liveknop uit. |
| Feature uit | Sitebrede livefunctionaliteit uit. | Knop uit ongeacht run. |
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 | ChildId moet actief gekoppeld zijn aan de ouder/voogd. | | 002 | Feature Live meekijken moet functioneel beschikbaar zijn. | | 003 | Actieve run moet niet afgerond zijn. | | 004 | Run moet bij het gekoppelde kind horen. | | 005 | Knopstatus mag niet uit oude clientstate worden afgeleid. |
11. Datamutaties en events
| 001 | Geen functionele datamutaties. | | 002 | Geen LiveViewAudit-mutatie; die ontstaat pas bij start van live meekijken. |
12. Geen datamutaties
| 001 | Geen runmutatie. | | 002 | Geen relatiemutatie. | | 003 | Geen voortgangsmutatie. | | 004 | Geen systeembericht. |
13. State diagram
Niet van toepassing. Deze usecase bepaalt een afgeleide knopstatus en wijzigt geen persistent statusobject.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-OVG-LIVE-NOT-AVAILABLE | Wordt gebruikt wanneer live meekijken veilig niet beschikbaar is. |
| POP-OVG-LIVE-ACCESS-DENIED | Wordt gebruikt wanneer actuele autorisatie ontbreekt. |
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 | Livebeschikbaarheid moet binnen oudercontext anders worden bepaald dan binnen docentcontext. | | 002 | De liveknop mag pas actief zijn bij actieve run en actuele autorisatie. | | 003 | Featuretoggles kunnen live meekijken centraal uitschakelen. |
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.