UC-DOC-LIVE-008 — Live verbinding verbroken afhandelen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-LIVE-008 |
| Naam | Live verbinding verbroken afhandelen |
| Domein | Docent |
| Subdomein | Online leerlingen en live meekijken |
| Primaire actor | Docent |
| Secundaire actor(en) | Leerling, OefenHub-systeem, realtime-kanaal |
| Rolcontext | Docentcontext met actieve docent-leerlingrelatie en geldige niveauautorisatie |
| Betrokken schermen | SCH-DOC-07-01 — Meekijken — Live meekijkweergave, live-meekijkweergave |
| Gerelateerde usecases | UC-DOC-LIVE-001, UC-DOC-LIVE-002, UC-DOC-LIVE-003, UC-DOC-LIVE-007, UC-LLN-OEF-004, UC-LLN-OEF-007, UC-LLN-OEF-008 |
| Primaire entiteiten | LiveViewAudit, ExerciseRuns, ExerciseRunProgress, UserRelationships, StudentLevelAuthorizations |
| Secundaire entiteiten / events | SignalR-verbinding, realtime voortgangsevent, sessie-einde-event, verbindingsfout |
| Gerelateerde popups | Niet van toepassing voor normale route; technische verbindingsmelding bij foutafhandeling |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe OefenHub omgaat met verbindingsverlies tijdens live meekijken. De applicatie probeert de realtime verbinding gecontroleerd te herstellen, valideert na herstel opnieuw de context en sluit de livecontext veilig af wanneer herstel niet lukt.
De usecase beschrijft uitsluitend het docentgedrag binnen een reeds toegestane live-meekijkcontext. Het starten van de oefening door de leerling, het beantwoorden van vragen en het opslaan van voortgang blijven bronhoudend in de leerling-oefenusecases. De docentweergave is alleen-lezen en mag nooit leiden tot antwoordmutaties of correcties in de lopende run.
3. Scope
Binnen scope:
- Detecteren van realtime verbindingsverlies.
- Uitvoeren van maximaal vijf herverbindingspogingen.
- Opnieuw valideren van autorisatie na herstel.
- Synchroniseren van liveweergave na herstel.
- Afhandelen van definitief verbroken verbinding en auditafronding.
Buiten scope:
- Netwerkdiagnose buiten de applicatie.
- Wijzigen of afronden van de oefening van de leerling.
- Account- of relatiebeheer.
- Aanmaak van meldingen of tickets op basis van verbindingsverlies.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De docent is succesvol ingelogd en handelt binnen een actieve docentcontext. |
| PRE-002 | Er bestaat een actieve docent-leerlingrelatie tussen de docent en de leerling. |
| PRE-003 | De leerling heeft een actieve of recent live beschikbare exercise run die binnen de docentcontext valt. |
| PRE-004 | De docent heeft via niveauautorisatie recht op inzage in de oefencontext van de leerling. |
| PRE-005 | De live-meekijkfeature is sitebreed beschikbaar. |
| PRE-006 | De leerlingrun levert server-side voortgangsinformatie die via het realtime-kanaal kan worden getoond. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De docent heeft de live-meekijkweergave volgens de toegestane context gebruikt. |
| POST-002 | De leerlingrun is inhoudelijk niet gewijzigd door de docent. |
| POST-003 | Eventuele live-meekijk-audit blijft herleidbaar via LiveViewAudit waar de flow dat vereist. |
| POST-004 | Niet-geautoriseerde voortgang of resultaten zijn niet zichtbaar gemaakt. |
| POST-005 | De applicatiecontext blijft consistent bij realtime updates, sessie-einde of verbindingsproblemen. |
6. Trigger
De usecase start wanneer de docent binnen een bestaande live-meekijkweergave een live handeling uitvoert of wanneer het systeem een relevante realtime wijziging ontvangt.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Systeem | Realtime-kanaal | Detecteert verbindingsverlies tijdens live meekijken. | Frontend start herstelmechanisme. | BR-001 |
| 2 | Systeem | Frontend / realtime client | Voert maximaal vijf herverbindingspogingen uit. | Bij herstel wordt liveweergave opnieuw gesynchroniseerd. | Retrylimiet. |
| 3 | Systeem | Backend | Controleert na herstel opnieuw autorisatie en actuele runstatus. | Alleen geautoriseerde livecontext wordt hervat. | BR-002 |
| 4 | Systeem | Live-meekijkweergave | Synchroniseert de laatst toegestane actuele voortgang. | Docent ziet weer actuele liveweergave. | Geen runmutatie. |
| 5 | Systeem | Frontend | Wanneer herstel faalt na retrylimiet, toont het systeem dat de live verbinding is verbroken. | Liveweergave wordt niet langer als actief gepresenteerd. | Verbindingsmelding. |
| 6 | Systeem | Backend | Rondt live-meekijkaudit af wanneer de sessie functioneel eindigt. | LiveViewAudit.EndedAtUtc wordt gevuld indien nodig. | LiveViewAudit. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Verbinding herstelt binnen retrylimiet. | Systeem synchroniseert state en zet live volgen voort. | Geen popup; eventueel korte statusindicatie. | Geen domeinmutatie behalve technische reconnect. |
| ALT-002 | 3 | Autorisatie is tijdens reconnect vervallen. | Systeem hervat niet en blokkeert de liveweergave. | Generieke toegangafhandeling. | EndedAtUtc vullen indien sessie eindigt. |
| ALT-003 | 3 | Leerlingrun is afgerond tijdens verbindingsverlies. | Systeem toont dat live volgen is beëindigd. | Sessie-einde-indicatie. | EndedAtUtc vullen. |
| ALT-004 | 3 | Leerling heeft oefening verlaten tijdens verbindingsverlies. | Systeem behandelt livecontext als beëindigd. | Sessie-einde-indicatie. | EndedAtUtc vullen. |
| ALT-005 | 5 | Retrylimiet is bereikt. | Systeem toont verbindingsverbroken-afhandeling en stopt liveupdates. | Verbindingsmelding; geen popupregister-key. | EndedAtUtc vullen indien nodig. |
| ALT-006 | 6 | Auditafsluiting faalt tijdelijk. | Systeem logt technische fout en probeert geen domeininhoud te herstellen via de docentweergave. | Geen gebruikerstechnische details. | Technische logging. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Bij verbindingsverlies gebruikt live meekijken maximaal vijf herverbindingspogingen. |
| BR-002 | Na herverbinden moet autorisatie opnieuw server-side worden gecontroleerd. |
| BR-003 | Een herstelde verbinding mag geen gemiste updates blind toepassen zonder run- en contextcontrole. |
| BR-004 | Wanneer herstel niet lukt, mag de liveweergave niet als actief blijven lijken. |
| BR-005 | Verbindingsverlies mag geen oefenrun afronden, pauzeren of wijzigen. |
| BR-006 | Auditafsluiting bij definitief verbroken livecontext moet idempotent gebeuren. |
| BR-007 | Technische verbindingsdetails worden niet onnodig aan de docent getoond. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| ReconnectAttempt | Mag het ingestelde maximum van vijf pogingen niet overschrijden. |
| Docentcontext | Moet na reconnect opnieuw geldig zijn. |
| ExerciseRunId | Moet nog dezelfde run zijn waarvoor de sessie was gestart. |
| CurrentProgressVersion | Moet veilig gesynchroniseerd worden op basis van server-side brondata. |
| LiveViewAudit.EndedAtUtc | Wordt alleen gevuld wanneer de sessie functioneel eindigt en nog geen eindmoment heeft. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 2 | Technisch | Realtime verbinding | Herverbindingspoging wordt uitgevoerd. |
| 4 | Readmodel | Live viewmodel | Weergave wordt na herstel opnieuw gesynchroniseerd met server-side voortgang. |
| 6 | Update | LiveViewAudit.EndedAtUtc | Eindmoment wordt gevuld wanneer herstel faalt of de livecontext functioneel eindigt. |
| 6 | Technische logging | Reconnectfout | Technische foutinformatie wordt gelogd zonder leerlingrun, antwoorden of scores te wijzigen. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| ExerciseRuns | De docent wijzigt geen runinhoud, afronding of resultaat. |
| ExerciseRunProgress | De docentweergave leest voortgang, maar corrigeert geen antwoorden en markeert geen vragen. |
| UserRelationships | Relaties worden niet aangemaakt, gewijzigd of beëindigd binnen live meekijken. |
| StudentLevelAuthorizations | Autorisaties worden uitsluitend gelezen; beheer hoort in docent-autorisatieusecases. |
| SystemMessages | Live meekijken maakt geen systeemberichten aan. |
| PrivateMessageThreads | Live meekijken start geen privébericht en voegt geen thread-event toe. |
| Tickets | Verbindings- of livefouten worden niet automatisch als melding geregistreerd. |
13. State diagram
De usecase raakt geen persistent statusobject met eigen statusmodel. De live-meekijktoestand is een afgeleide sessie- en realtimecontext. Waar LiveViewAudit.EndedAtUtc wordt gevuld, betreft dit auditafronding en geen zelfstandige functionele statusmachine.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Verbinding definitief verbroken | Afhandeling via livecomponent/routeguard; geen domeinspecifieke popupregister-popup. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft de live-meekijkinteractie binnen een geautoriseerde docentcontext en bevestigt het alleen-lezen karakter van de docentweergave. |
| Technisch Ontwerp | Technisch Ontwerp: live meekijken met SignalR, oefenruns en voortgang en readmodels en livebeschikbaarheid beschrijven de technische uitwerking. Werkt realtime-verwerking, SignalR-abonnementen, routeguardcontrole, LiveViewAudit-grenzen en foutafhandeling technisch uit. |
| Software Requirements Specification | Borgt autorisatie, alleen-lezen gedrag, realtime updates, veilige foutafhandeling en het ontbreken van onbedoelde runmutaties. |
| Database-informatie | Gebruikt LiveViewAudit, ExerciseRuns en voortgangsopslag als bestaande bronnen; er ontstaat geen aparte live-weergavetabel. |
| Ontwerpbronnen | Autorisatiematrix en business rules beschrijven de live-meekijkgrenzen binnen docentcontext. |
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.
| Usecase-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-DOC-LIVE-008-001 | SRS-TCH-001 SRS-LIVE-005 AC-TCH-001 AC-LIVE-005 | Bij verbindingsverlies tijdens live meekijken een herverbindingsmechanisme gebruiken |
REQ-UC-DOC-LIVE-008-002 | SRS-TCH-001 SRS-LIVE-001 SRS-NFR-PER-001 AC-TCH-001 AC-LIVE-001 AC-NFR-PER-001 | Maximaal vijf herverbindingspogingen uitvoeren voordat de liveverbinding als verbroken wordt behandeld |
REQ-UC-DOC-LIVE-008-003 | SRS-AUTH-001 SRS-TCH-001 AC-AUTH-001 AC-TCH-001 | Na succesvolle herverbinding de docentcontext opnieuw server-side valideren |
REQ-UC-DOC-LIVE-008-004 | SRS-AUTH-001 SRS-TCH-001 SRS-LIVE-001 AC-AUTH-001 AC-TCH-001 AC-LIVE-001 | Na herverbinding de liveweergave synchroniseren met server-side voortgang |
REQ-UC-DOC-LIVE-008-005 | SRS-LRN-009 SRS-TCH-001 AC-LRN-009 AC-TCH-001 | Verbindingsverlies niet gebruiken om de leerlingrun te wijzigen of te beëindigen |
REQ-UC-DOC-LIVE-008-006 | SRS-TCH-001 SRS-LIVE-001 AC-TCH-001 AC-LIVE-001 | Bij definitief verbroken verbinding de liveweergave niet langer als actief presenteren |
REQ-UC-DOC-LIVE-008-007 | SRS-TCH-001 SRS-LIVE-003 SRS-NFR-AUD-001 AC-TCH-001 AC-LIVE-003 AC-NFR-AUD-001 | LiveViewAudit.EndedAtUtc vullen wanneer de livecontext door verbindingsverlies functioneel eindigt |
REQ-UC-DOC-LIVE-008-008 | SRS-TCH-001 SRS-NFR-AUD-001 SRS-ARCH-004 AC-TCH-001 AC-NFR-AUD-001 AC-ARCH-004 | Auditafsluiting idempotent verwerken |
REQ-UC-DOC-LIVE-008-009 | SRS-TCH-001 SRS-LIVE-005 SRS-NFR-AVL-001 AC-TCH-001 AC-LIVE-005 AC-NFR-AVL-001 | Technische reconnectfouten loggen zonder interne details onnodig aan de docent te tonen |
REQ-UC-DOC-LIVE-008-010 | SRS-AUTH-001 SRS-TCH-001 SRS-LIVE-005 SRS-NFR-AVL-001 AC-AUTH-001 AC-TCH-001 AC-LIVE-005 AC-NFR-AVL-001 | Bij vervallen autorisatie na reconnect de liveweergave blokkeren |