Skip to main content

UC-LLN-OEF-008 — Oefening afronden

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-OEF-008
NaamOefening afronden
DomeinLeerling / Oefenen en voortgang
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, technische oefenmodule, database, statistiekservice, SignalR-hub
RolcontextIngelogde gebruiker met actieve leerlingrol en een lopende exercise run waarvan de laatste vraag succesvol is verwerkt.
Betrokken schermenOefenscherm, laatste vraag, voortgangsindicator, resultaatroute/resultaatpopup, live-meekijkupdates.
Gerelateerde usecasesUC-LLN-OEF-004 — Vraag beantwoorden; UC-LLN-OEF-005 — Antwoord tonen na bevestiging; UC-LLN-OEF-006 — Geen idee gebruiken; UC-LLN-RES-001 — Resultaat na afronding bekijken; UC-LLN-RES-002 — Resultaatstatistieken bekijken; UC-LLN-HIS-001 — Oefeninggeschiedenis bekijken
Primaire entiteitenExerciseRuns, ExerciseRunProgress
Secundaire entiteiten / eventsExerciseRunCompleted, ExerciseRunStatisticsCalculated, ExerciseResultAvailable, LiveViewProgressUpdated, ExerciseCompletionRejected
Gerelateerde popupsResultaatpopup wordt door resultaatusecases uitgewerkt
PopupregisterNiet van toepassing voor afronding zelf
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een leerling een lopende oefening formeel afrondt nadat de laatste vraag van de exercise run is verwerkt. De leerling komt bij de afrondactie doordat de laatste vraag is beantwoord, of doordat na het tonen van antwoordfeedback de vervolgknop functioneel verandert naar Bekijk resultaat.

Afronden betekent dat de exercise run administratief wordt voltooid. Het systeem vult het afrondmoment, zet de run op afgerond, berekent of consolideert de uniforme totalen en berekent de eindstatistieken die later nodig zijn voor resultaatweergave, geschiedenis en PDF-export. De modulespecifieke vraag- en antwoorddetails blijven beschikbaar in de opgeslagen payload of voortgangsstructuur, maar de uniforme runvelden worden na afronding leidend voor normale uitleesscenario's.

Deze usecase gaat over de overgang van een lopende run naar een afgeronde run. Het gedetailleerd tonen van het resultaat, de volledige resultatentabel, statistiekensectie en PDF-export vallen onder de resultaat- en geschiedenisusecases. Deze usecase mag de resultaatweergave openen, maar wordt niet de bron voor alle presentatie- en PDF-regels.

DRY-afbakening: vraagverwerking blijft onderdeel van UC-LLN-OEF-004, antwoordfeedback van UC-LLN-OEF-005 en Geen idee van UC-LLN-OEF-006. Resultaatweergave, opnieuw maken en PDF-export blijven onderdeel van het subdomein Resultaten, statistieken, geschiedenis en PDF-export.

3. Scope

Deze usecase omvat wel:

  • vaststellen dat de laatste vraag is verwerkt
  • tonen of beschikbaar maken van de afrondactie
  • server-side controle dat de run afgerond mag worden
  • vullen van afrondmoment en afgeronde status
  • consolideren van uniforme totalen op runniveau
  • berekenen en opslaan van eindstatistieken
  • beschikbaar maken van het resultaat voor resultaatweergave
  • opnemen van de run in afgeronde geschiedenis
  • beëindigen of actualiseren van live-meekijkcontexten
  • blokkeren van dubbele afronding
  • veilige foutafhandeling wanneer niet alle vragen definitief verwerkt zijn

Deze usecase omvat niet:

  • genereren van een nieuwe run
  • beantwoorden van individuele vragen
  • inhoudelijke modulespecifieke antwoordcontrole
  • tonen van volledige resultaatpopupdetails
  • PDF-export
  • opnieuw maken van dezelfde oefening
  • delen van een afgeronde oefening
  • verwijderen of aanpassen van geschiedenis
  • docent-testmodus als afzonderlijk proces
  • beheren van oefeningconfiguratie

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd of de afrondrequest bevat nog een geldige applicatiecontext.
PRE-002De gebruiker heeft een actieve leerlingrol.
PRE-003Er bestaat een lopende ExerciseRuns-record voor deze leerling.
PRE-004De run is nog niet eerder afgerond.
PRE-005De laatste vraag van de run is succesvol verwerkt.
PRE-006Alle verplichte vraagvoortgang die nodig is voor afronding is server-side beschikbaar.
PRE-007De gekoppelde oefening- en modulecontext is voldoende herleidbaar voor resultaatreconstructie.
PRE-008De statistiekservice kan de uniforme eindwaarden berekenen of veilig falen zonder gedeeltelijke afronding.

5. Post-condities

IDResultaat
POST-001De exercise run is formeel afgerond.
POST-002ExerciseRuns.IsCompleted of equivalente afrondvlag is gezet.
POST-003ExerciseRuns.CompletedAtUtc is gevuld met het server-side afrondmoment.
POST-004Uniforme totalen voor aantal vragen, goed, fout en Geen idee zijn consistent opgeslagen.
POST-005Eindstatistieken zijn berekend en opgeslagen op runniveau waar het datamodel deze velden ondersteunt.
POST-006De run is beschikbaar voor resultaatweergave en geschiedenis.
POST-007Niet-afgeronde-hervatlogica ziet deze run niet meer als hervatbare run.
POST-008Eventuele live-meekijkers ontvangen een laatste update of beëindigingssignaal.
POST-009Dubbele afronding veroorzaakt geen tweede berekening met afwijkende uitkomst.
POST-010Er zijn geen relaties, autorisaties, profielinstellingen, berichten of meldingen gewijzigd.

6. Trigger

De usecase start wanneer de leerling na het verwerken van de laatste vraag de afrondactie gebruikt, bijvoorbeeld via de knop Bekijk resultaat, of wanneer de backend na het laatste bevestigde antwoord bepaalt dat de run formeel afgerond moet worden.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingOefenschermBeantwoordt of bevestigt de laatste vraag.Vraagverwerking is succesvol afgerond.UC-LLN-OEF-004 of UC-LLN-OEF-006.
2OefenHub backendVoortgangsserviceBepaalt dat alle vragen definitief verwerkt zijn.Run komt in aanmerking voor afronding.Alle verplichte vraagstatussen voltooid.
3OefenHub frontendOefenschermToont de afrondactie.Leerling kan resultaat bekijken.Knoptekst volgt configuratie en vraagpositie.
4LeerlingOefenschermKiest Bekijk resultaat of afrondactie.Frontend vraagt afronding/resultaatcontext op.Request bevat runcontext.
5OefenHub backendRouteguardControleert sessie, leerlingrol en run-eigenaar.Alleen de eigenaar mag de run afronden.ExerciseRuns.UserId.
6OefenHub backendRunserviceControleert dat de run nog niet afgerond is.Dubbele afronding wordt voorkomen.Idempotente afronding.
7OefenHub backendRunserviceControleert dat alle vragen definitief verwerkt zijn.Onvolledige run wordt niet afgerond.Vraagstatussen zijn leidend.
8OefenHub backendStatistiekserviceLeest vraaggebonden timing- en resultaatdata.Berekening van eindstatistieken kan starten.Payload / voortgangsrecords.
9OefenHub backendStatistiekserviceBerekent uniforme eindstatistieken.Gemiddelde, mediaan, grenzen, uitschieters en totalen worden bepaald.Definities uit centrale resultaatregels.
10OefenHub backendRunserviceVult afrondmoment en afgeronde status.Run is formeel voltooid.Server-side tijd.
11OefenHub backendRunserviceSlaat eindtotalen en statistiekvelden op.Run is geschikt voor geschiedenis en resultaatweergave.Uniforme runvelden zijn leidend.
12OefenHub backendDatabaseCommit de afronding transactioneel.Geen gedeeltelijke afronding.Afronding en statistieken samen consistent.
13OefenHub backendSignalR-hubPubliceert laatste voortgangs-/afrondupdate.Live-meekijkers zien dat de run is afgerond of niet langer live is.Alleen geautoriseerde meekijkers.
14OefenHub backendResultaatrouteringMaakt resultaatcontext beschikbaar.Frontend kan resultaatweergave openen.UC-LLN-RES-001.
15OefenHub frontendResultaatweergaveOpent resultaatweergave of resultaatpopup.Leerling ziet vervolgweergave vanuit resultaatusecase.Presentatie valt buiten deze usecase.
16OefenHub backendGeschiedenis-readmodelRun is nu opneembaar in afgeronde geschiedenis.Geschiedenis kan de run tonen.CompletedAtUtc aanwezig.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0014Leerling verlaat scherm vóór afrondactieRun blijft niet-afgerond volgens UC-LLN-OEF-007.Niet van toepassingGeen afronding
ALT-0025Sessie is verlopenRouteguard handelt sessie af; run wordt niet afgerond tenzij afrondrequest geldig verwerkt kan worden.Niet van toepassingGeen of reeds geldige vraagmutatie
ALT-0035Run hoort niet bij deze leerlingBackend weigert afronding.ToegangafhandelingGeen
ALT-0046Run is al afgerondBackend geeft bestaande afgeronde toestand terug zonder tweede mutatie.Niet van toepassingGeen nieuwe mutatie
ALT-0057Niet alle vragen zijn definitief verwerktBackend weigert afronding en houdt run lopend.ComponentmeldingGeen afronding
ALT-0068Timingdata ontbreekt voor één of meer vragenSysteem berekent alleen toegestane velden of weigert afronding volgens technische regel.Componentmelding bij weigeringGeen gedeeltelijke afronding
ALT-0079Statistiekberekening faaltTransactie wordt niet gecommit of afronding wordt veilig geblokkeerd.ComponentmeldingGeen gedeeltelijke afronding
ALT-00812Databasecommit faaltAfronding wordt teruggedraaid.ComponentmeldingGeen blijvende mutatie
ALT-00913SignalR-update faaltAfronding blijft geldig; live-update is secundair.Niet van toepassingAfronding blijft geldig
ALT-01014Resultaatweergave kan niet direct openenRun blijft afgerond; resultaat is later via geschiedenis beschikbaar.ComponentmeldingAfronding blijft geldig
ALT-0117Run is administratief niet meer hervatbaar door account- of toegangsblokkadeAfronding wordt alleen toegestaan wanneer de laatste geldige verwerking al binnen dezelfde context is geaccepteerd; anders wordt geblokkeerd.ComponentmeldingGeen onveilige afronding
ALT-0126Dubbele klik op Bekijk resultaatEerste geldige afronding wint; tweede request krijgt bestaande resultaatcontext.Niet van toepassingGeen dubbele mutatie

9. Business rules

IDRegel
BR-001Een exercise run mag pas worden afgerond wanneer alle verplichte vragen definitief verwerkt zijn.
BR-002Afronding wordt server-side bepaald en mag niet uitsluitend op clientstate vertrouwen.
BR-003Het afrondmoment wordt server-side vastgelegd.
BR-004Een afgeronde run mag niet opnieuw als lopende run worden hervat.
BR-005Uniforme eindstatistieken worden na afronding opgeslagen op runniveau voor normale uitleesscenario's.
BR-006Resultaatweergave en geschiedenis lezen na afronding primair uit uniforme runvelden en opgeslagen vraagdetails.
BR-007Afronding moet idempotent zijn bij dubbele klik, refresh of netwerkherhaling.
BR-008Een onvolledige run blijft lopend en wordt niet als afgerond getoond.
BR-009De afronding mag geen relaties, autorisaties, berichten, meldingen of profielinstellingen wijzigen.
BR-010Live-meekijkupdates zijn secundair aan de opgeslagen afronding.
BR-011PDF-export wordt pas mogelijk doordat de run afgerond en resultaatdata beschikbaar is.
BR-012Geschiedenis toont alleen runs met geldige afronding.
BR-013De technische module levert of ondersteunt vraagdetails, maar de generieke applicatie bewaart de uniforme runuitkomst.
BR-014Wanneer Geen idee is gebruikt, telt die vraag als fout en wordt het aantal Geen idee in de uniforme totalen meegenomen.
BR-015Eindstatistieken worden niet bij onderbreking maar bij afronding berekend.
BR-016De leerling ziet geen technische berekeningsdetails die niet functioneel bedoeld zijn.

10. Datavalidatie

Veld / objectValidatie
ExerciseRunIdMoet bestaan, bij de leerling horen en nog afrondbaar zijn.
ExerciseRuns.IsCompletedMag nog niet waar zijn voor een nieuwe afrondmutatie.
VraagstatussenAlle verplichte vragen moeten definitief verwerkt zijn.
CompletedAtUtcWordt server-side gevuld en mag niet door client worden aangeleverd.
Uniforme totalenMoeten consistent zijn met vraagresultaten.
Dunno-tellerMoet overeenkomen met vragen die via Geen idee zijn gemarkeerd.
TimingdataMoet voldoende zijn voor de statistieken die als verplicht worden berekend.
ModulepayloadMoet herleidbaar blijven voor resultaatdetails.
ResultaatcontextMag alleen worden teruggegeven aan geautoriseerde gebruiker of later toegestane inzagers.
Dubbele requestMag niet leiden tot dubbele afronding of afwijkende statistiekwaarden.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
9BerekeningStatistiekserviceEindstatistieken worden berekend op basis van opgeslagen vraagdata.
10MutatieExerciseRunsAfrondvlag wordt gezet en CompletedAtUtc wordt gevuld.
11MutatieExerciseRunsUniforme totalen en statistiekvelden worden opgeslagen.
12EventExerciseRunCompletedRun is formeel afgerond.
12EventExerciseRunStatisticsCalculatedEindstatistieken zijn berekend en opgeslagen.
13EventLiveViewProgressUpdatedLive-meekijkers ontvangen afrondstatus of laatste voortgang.
14EventExerciseResultAvailableResultaatcontext is beschikbaar voor resultaatweergave.
16Afgeleid readmodelGeschiedenisDe afgeronde run wordt zichtbaar doordat CompletedAtUtc en de afrondvlag zijn opgeslagen.

12. Geen datamutaties

EntiteitReden
UsersAfronding wijzigt het account niet.
UserSettingsAfronding wijzigt geen voorkeuren of niveaukeuze.
UserRolesRollen blijven ongewijzigd.
UserRelationshipsRelaties zijn niet betrokken.
StudentLevelAuthorizationsAutorisaties worden niet gewijzigd.
ExercisesOefeningconfiguratie blijft ongewijzigd.
ExerciseModulesModulemetadata blijft ongewijzigd.
SystemMessagesAfronding maakt geen systeembericht aan.
PrivateMessageThreadsAfronding maakt geen privébericht aan.
TicketsAfronding maakt geen melding aan.
SharedExercisesDelen van een resultaat is een aparte vervolgflow.
PDF-bestandPDF wordt pas op aanvraag gegenereerd in resultaat-/exportusecase.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Normale afronding

16.2 Dubbele afrondrequest

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingAfronden van de runAfronding zelf gebruikt geen popupregister-popup; resultaatweergave wordt in resultaatusecases uitgewerkt.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpFunctioneel Ontwerp beschrijft starten, hervatten, beantwoorden, Geen idee, onderbreken, afronden en resultaatnavigatie binnen de leerling-oefenflow.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, oefenmodulecontract, oefenruns en voortgang, live meekijken en frontend-oefencontext beschrijft de technische afbakening, server-side brondata, autorisatie en UI-compositie voor deze usecase.
Software Requirements SpecificationSoftware Requirements Specification bevat centrale eisen en acceptatiecriteria voor oefenruns, voortgangsopslag, modulegedrag, foutafhandeling en veilige server-side verwerking.
Database-informatieDatabase-informatie blijft bron voor ExerciseRuns, ExerciseRunProgress, payloadvelden, snapshots en soft links richting gebruiker en catalogus.
OntwerpbronnenOntwerpbronnen bevatten aanvullende businessregels voor oefenflow, modulepayloads, Geen idee en voortgangsregistratie.

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-afleidingDektUsecasecontext
REQ-UC-LLN-OEF-008-001SRS-LRN-006
AC-LRN-006
Een exercise run pas afronden wanneer alle verplichte vragen definitief verwerkt zijn
REQ-UC-LLN-OEF-008-002SRS-AUTH-001
SRS-LRN-006
SRS-NFR-AUD-001
AC-AUTH-001
AC-LRN-006
AC-NFR-AUD-001
Het afrondmoment server-side vastleggen
REQ-UC-LLN-OEF-008-003SRS-LRN-002
SRS-LRN-007
AC-LRN-002
AC-LRN-007
Een afgeronde run als afgerond markeren zodat deze niet meer als lopende run hervat wordt
REQ-UC-LLN-OEF-008-004SRS-CAT-001
SRS-LRN-006
AC-CAT-001
AC-LRN-006
Uniforme totalen op runniveau opslaan bij afronding
REQ-UC-LLN-OEF-008-005SRS-LRN-006
AC-LRN-006
Eindstatistieken berekenen en opslaan bij afronding
REQ-UC-LLN-OEF-008-006SRS-LRN-006
AC-LRN-006
Een afgeronde run beschikbaar maken voor resultaatweergave
REQ-UC-LLN-OEF-008-007SRS-LRN-008
SRS-NFR-AUD-001
AC-LRN-008
AC-NFR-AUD-001
Een afgeronde run beschikbaar maken voor geschiedenisweergave
REQ-UC-LLN-OEF-008-008SRS-LRN-006
SRS-ARCH-004
AC-LRN-006
AC-ARCH-004
Dubbele afrondrequests idempotent afhandelen
REQ-UC-LLN-OEF-008-009SRS-AUTH-001
SRS-LRN-003
AC-AUTH-001
AC-LRN-003
Afronding blokkeren wanneer de run onvolledige of inconsistente vraagvoortgang heeft
REQ-UC-LLN-OEF-008-010SRS-LRN-009
SRS-LIVE-001
AC-LRN-009
AC-LIVE-001
Live-meekijkers kunnen informeren dat de run is afgerond
REQ-UC-LLN-OEF-008-011SRS-AUTH-001
SRS-ACC-003
SRS-REL-001
SRS-MSG-001
SRS-TIC-002
SRS-LRN-006
AC-AUTH-001
AC-ACC-003
AC-REL-001
AC-MSG-001
AC-TIC-002
AC-LRN-006
Bij afronding geen relaties, autorisaties, berichten, meldingen of profielinstellingen wijzigen
REQ-UC-LLN-OEF-008-012SRS-LRN-006
SRS-PDF-001
AC-LRN-006
AC-PDF-001
Resultaat- en PDF-vervolgacties baseren op de historisch opgeslagen runcontext