UC-OVG-LIVE-008 — Live verbinding verbroken afhandelen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-LIVE-008 |
| Naam | Live verbinding verbroken afhandelen |
| 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, Verbindingsmelding |
| Gerelateerde usecases | UC-OVG-LIVE-003, UC-OVG-LIVE-004, UC-OVG-LIVE-007, UC-DOC-LIVE-008 |
| Primaire entiteiten | SignalRConnections, LiveViewAudit, ExerciseRuns |
| Secundaire entiteiten / events | LiveConnectionLost, LiveReconnectFailed |
| Gerelateerde popups | POP-OVG-LIVE-CONNECTION-LOST, POP-OVG-LIVE-RECONNECT-FAILED, POP-OVG-LIVE-SESSION-ENDED, POP-OVG-LIVE-ACCESS-DENIED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe het systeem verbindingsverlies tijdens live meekijken door een ouder/voogd afhandelt. De realtimeverbinding probeert maximaal vijf keer te herstellen. Wanneer dat niet lukt, krijgt de meekijker een melding dat de live verbinding is verbroken.
Verbindingsverlies wijzigt de oefenrun niet. De live sessie wordt veilig voortgezet na herstel of auditbaar beëindigd wanneer herstel faalt.
Uitgangspunten
- SignalR-herstelpogingen zijn begrensd.
- De oefenrun blijft onaangetast.
- Bij blijvende storing wordt de gebruiker geïnformeerd.
LiveViewAuditkrijgt een eindmoment wanneer de sessie eindigt.- Na herstel wordt actuele voortgang opnieuw gesynchroniseerd.
3. Scope
Deze usecase beschrijft:
- detecteren van verbindingsverlies;
- uitvoeren van herverbindingspogingen;
- resynchroniseren na herstel;
- tonen van foutmelding na falen;
- auditbaar beëindigen bij definitief verlies.
Deze usecase beschrijft niet:
- oefenrun pauzeren;
- antwoord opnieuw versturen;
- resultaten wijzigen;
- relatie muteren.
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 | Live sessie is actief. |
| 002 | SignalR-verbinding valt weg of wordt onzeker. |
| 003 | LiveViewAudit-record bestaat. |
| 004 | Backend kan actuele runstatus controleren. |
5. Post-condities
| 001 | Verbinding is hersteld of liveweergave is veilig beëindigd. |
| 002 | Bij definitief falen is gebruiker geïnformeerd. |
| 003 | LiveViewAudit is waar nodig beëindigd. |
| 004 | Geen oefenrun is gewijzigd. |
6. Trigger
De SignalR-verbinding van de ouder/voogd naar de live-meekijksessie valt weg.
7. Normale processtroom
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Realtime service | Detecteert verbindingsverlies | Frontend gaat naar herstelstand | Connection state |
| 2 | Frontend | Probeert opnieuw te verbinden | Maximaal vijf pogingen | Retry counter |
| 3 | Backend | Valideert sessie na herstel | Autorisatie en runstatus worden opnieuw gecontroleerd | LiveViewAudit, ExerciseRuns |
| 4 | Frontend | Synchroniseert actuele voortgang | Liveweergave wordt bijgewerkt | Progress snapshot |
| 5 | Frontend | Toont fout na falen | Meekijker weet dat live verbroken is | PopupKey |
| 6 | Backend | Beëindigt audit indien nodig | LiveViewAudit krijgt eindmoment | EndedAtUtc |
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 | Herstel lukt: actuele voortgang wordt opnieuw geladen. | | 002 | Herstel lukt maar run is beëindigd: sessie-afgelopenafhandeling wordt getoond. | | 003 | Herstel lukt maar relatie is vervallen: toegang wordt geweigerd en live wordt beëindigd. | | 004 | Vijf pogingen mislukken: liveverbinding-verbrokenmelding wordt getoond. | | 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 | Na verbindingsherstel moet actuele voortgang opnieuw betrouwbaar worden opgehaald. | | 002 | Na maximaal vijf mislukte pogingen wordt liveweergave beëindigd. | | 003 | Verbindingsverlies mag geen runmutatie veroorzaken. | | 004 | Audit blijft herleidbaar. | | 005 | Een verbroken verbinding geeft geen recht op historische data buiten de gewone autorisatie. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Retry teller | Aantal herverbindingspogingen. | Maximaal vijf. |
| Herstelde verbinding | Nieuwe SignalR-verbinding met resync. | Autorisatie opnieuw gecontroleerd. |
| Definitief verbroken | Geen herstel na retries. | Popup en auditafsluiting. |
| Runstatus bij herstel | Actief of beëindigd. | Bepaalt vervolgweergave. |
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 | Retryteller mag niet onbeperkt doorlopen. |
| 002 | Na herstel moet ouderrelatie nog actief zijn. |
| 003 | Na herstel moet runstatus opnieuw worden bepaald. |
| 004 | LiveViewAudit moet bij definitief verlies idempotent worden beëindigd. |
| 005 | Foutmelding mag geen technische details lekken. |
11. Datamutaties en events
| 001 | LiveViewAudit.EndedAtUtc wordt gevuld bij definitieve verbreking wanneer het record nog open is. |
| 002 | Technische verbindingsstatus wijzigt. |
| 003 | Functionele events: LiveConnectionLost en, bij definitief falen, LiveReconnectFailed. |
12. Geen datamutaties
| 001 | ExerciseRuns worden niet gewijzigd. | | 002 | ExerciseRunProgress wordt niet aangepast. | | 003 | Antwoorden worden niet opnieuw verzonden. | | 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-CONNECTION-LOST | Wordt gebruikt wanneer de verbinding tijdelijk wegvalt en herstel loopt. |
| POP-OVG-LIVE-RECONNECT-FAILED | Wordt gebruikt wanneer herstel na maximaal vijf pogingen faalt. |
| POP-OVG-LIVE-SESSION-ENDED | Wordt gebruikt wanneer de run tijdens herstel is beëindigd. |
| POP-OVG-LIVE-ACCESS-DENIED | Wordt gebruikt wanneer actuele ouder-/voogdautorisatie na herstel 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 | Live verbinding gebruikt SignalR met maximaal vijf herverbindingspogingen. | | 002 | Na definitief falen moet de gebruiker een melding krijgen. | | 003 | Verbindingsverlies beïnvloedt de oefenrun niet. |
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.