Skip to main content

UC-LLN-HIS-001 — Oefeninggeschiedenis bekijken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-HIS-001
NaamOefeninggeschiedenis bekijken
DomeinLeerling / Resultaten, statistieken, geschiedenis en PDF-export
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, database, technische oefenmodule
RolcontextIngelogde leerling met een geldige leerlingcontext en toegang tot de eigen resultaat- of geschiedenisgegevens.
Betrokken schermenOefening-startpagina, oefeninggeschiedenispagina, geschiedenisoverzicht, leegstaatcomponent, terugnavigatie.
Gerelateerde usecasesUC-LLN-OEF-001 — Oefening-startpagina openen; UC-LLN-HIS-002 — Geschiedenis filteren en pagineren; UC-LLN-HIS-003 — Resultaatdetail vanuit geschiedenis openen; UC-LLN-RES-001 — Resultaat na afronding bekijken; UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen
Primaire entiteitenExerciseRuns, Exercises, Categories, Levels
Secundaire entiteiten / eventsExerciseModules, opgeslagen resultaatpayload, readmodel voor oefeninggeschiedenis
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing; deze flow gebruikt routeguard-, leegstaat- of componentgedrag.
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een leerling de geschiedenis van een specifieke oefening bekijkt. De geschiedenis is gekoppeld aan de actuele oefeningcontext en toont afgeronde exercise runs die horen bij de huidige oefening, categorie en niveaucontext. De lijst gebruikt opgeslagen uniforme runvelden zoals afrondmoment, aantal vragen, aantal goed, aantal fout en aantal Geen idee. Niet-afgeronde runs, docent-testruns en runs buiten de toegestane leerlingcontext worden niet als reguliere geschiedenisregels getoond.

De geschiedenispagina is een leesflow. De leerling kan vanuit de lijst doorklikken naar een resultaatdetail, maar het openen van dat detail hoort bij UC-LLN-HIS-003. Filteren en pagineren horen bij UC-LLN-HIS-002. De usecase bewaakt vooral welke dataset als oefeninggeschiedenis zichtbaar mag worden.

Deze usecase is onderdeel van het leerlingdomein Resultaten, statistieken, geschiedenis en PDF-export. De flow gebruikt bestaande exercise-rungegevens, historische niveau-, categorie- en oefeningcontext en de uniforme resultaatvelden die tijdens oefenen en afronden zijn opgeslagen.

DRY-afbakening: deze usecase is niet de bron voor oefeninggeneratie, antwoordcontrole, statistiekberekening, autorisatiebeheer door docenten, relatievorming, profielbeheer of PDF-layoutregels buiten de eigen context. Waar die onderwerpen relevant zijn, verwijst de usecase naar de bestaande bronflows en centrale ontwerpbronnen.

3. Scope

Deze usecase omvat wel:

  • openen van de oefeninggebonden geschiedenispagina
  • server-side bepalen van de relevante oefening-, categorie- en niveaucontext
  • ophalen van afgeronde runs voor de ingelogde leerling binnen die context
  • uitsluiten van niet-afgeronde runs
  • uitsluiten van testruns
  • tonen van afrondmoment, aantal vragen, goed, fout en Geen idee
  • tonen van functioneel herkenbare contextinformatie zonder technische GUID's
  • tonen van een lege staat wanneer geen afgeronde runs bestaan
  • aanbieden van doorklik naar resultaatdetail
  • aanbieden van terugnavigatie naar de oefeningpagina

Deze usecase omvat niet:

  • filteren en pagineren als aparte interactieflow
  • resultaatdetail tonen
  • PDF exporteren
  • oefening opnieuw maken
  • oefening starten of hervatten
  • geschiedenis verwijderen
  • docent- of ouderweergave van resultaten
  • herberekenen van resultaatstatistieken uit de payload
  • beheer van niveauautorisaties
  • wijzigen van profiel- of niveaukeuze

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is ingelogd als leerling.
PRE-002De server-side sessiecontext bevat een geldig intern Users.Id.
PRE-003De leerlingcontext is geldig en niet geblokkeerd door account- of routeguardafhandeling.
PRE-004De relevante run-, oefening-, categorie- of niveaugegevens bestaan of kunnen veilig als leeg resultaat worden afgehandeld.
PRE-005De backend kan de benodigde autorisatiecontrole uitvoeren op basis van de huidige gebruiker en historische runcontext.
PRE-006De betreffende feature voor geschiedenis/resultaatweergave is beschikbaar binnen de applicatie.
PRE-007De frontendroute is een geldige leerlingroute of wordt door routeguard geblokkeerd.
PRE-008Er is geen client-side identifier die zonder server-side validatie als autorisatiebron wordt gebruikt.

5. Post-condities

IDResultaat
POST-001De leerling krijgt uitsluitend geautoriseerde resultaat- of geschiedenisgegevens te zien.
POST-002De weergegeven dataset is server-side gefilterd op de ingelogde leerling en de toegestane context.
POST-003Er ontstaan geen nieuwe relaties, rollen, meldingen, privéberichten of systeemnotificaties.
POST-004Niet-toegankelijke of ontbrekende gegevens worden veilig geblokkeerd of als lege staat getoond.
POST-005Zoeken, filteren, openen of bekijken wijzigt geen brondata van de exercise run.
POST-006Navigatie naar resultaat, oefening of PDF verloopt via vervolgusecases.
POST-007De schermweergave gebruikt functioneel begrijpelijke labels en geen technische GUID's als primaire herkenning.
POST-008De zichtbare gegevens blijven consistent met de opgeslagen historische runcontext.

6. Trigger

De usecase start wanneer de leerling vanaf de oefening-startpagina of een gelijkwaardige leerlingroute de actie Geschiedenis kiest voor een specifieke oefening.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingOefening-startpaginaKiest Geschiedenis.Frontend opent de geschiedenisroute voor de gekozen oefening.ExerciseId, niveaucontext.
2OefenHub frontendGeschiedenisrouteStuurt de oefening- en contextidentificatie naar de backend.Backendvalidatie start.Geen client-side autorisatie.
3OefenHub backendRouteguardControleert ingelogde leerlingcontext.Ongeldige sessie wordt geblokkeerd.Users.Id, rol Leerling.
4OefenHub backendContextserviceLaadt de actuele of historische oefeningcontext.Oefening, categorie en niveau worden bepaald.ExerciseId, CategoryId, LevelId.
5OefenHub backendAutorisatieserviceControleert of de leerling deze oefeningcontext mag openen.Alleen toegestane context gaat door.Server-side controle.
6OefenHub backendGeschiedenisserviceSelecteert afgeronde runs voor deze leerling en oefeningcontext.Dataset wordt beperkt tot eigen afgeronde runs.CompletedAtUtc gevuld.
7OefenHub backendGeschiedenisserviceSluit niet-afgeronde runs uit.Lopende of verlaten runs verschijnen niet in de lijst.Geen geschiedenisregel.
8OefenHub backendGeschiedenisserviceSluit testruns uit.Docent-testdata komt niet in leerlinggeschiedenis.IsTestRun = false.
9OefenHub backendGeschiedenisserviceLeest uniforme totalen uit runvelden.Samenvattingskolommen worden gevuld.Geen herberekening.
10OefenHub backendGeschiedenisserviceSorteert standaard op afrondmoment aflopend.Meest recente afgeronde run staat bovenaan.CompletedAtUtc desc.
11OefenHub backendGeschiedenisserviceBepaalt eerste pagina volgens standaardgrootte.Maximaal het standaard aantal regels wordt voorbereid.Paginering.
12OefenHub backendAPI responseStuurt readmodel naar frontend.Frontend ontvangt lijst, totalen en navigatiecontext.Afgeleid readmodel.
13OefenHub frontendGeschiedenisoverzichtToont titel en toelichting.Leerling herkent de oefeningcontext.Geen bronmutatie.
14OefenHub frontendGeschiedenisoverzichtToont filterregel in standaardstand.Standaardperiode of defaultfilter is zichtbaar.UC-LLN-HIS-002 voor interactie.
15OefenHub frontendGeschiedenistabelToont geschiedenisregels.Leerling ziet afgerond, aantal vragen, goed, fout en Geen idee.Uniforme runvelden.
16OefenHub frontendGeschiedenistabelMaakt regels klikbaar voor resultaatdetail.Doorklikcontext is beschikbaar.UC-LLN-HIS-003.
17OefenHub frontendPagineringToont standaardpaginering wanneer nodig.Leerling ziet actuele reeks en navigatie.UC-LLN-HIS-002.
18OefenHub frontendLeegstaatToont lege staat wanneer geen runs bestaan.Geen foutmelding nodig.Normale toestand.
19LeerlingGeschiedenisoverzichtBekijkt de lijst.Er vindt geen domeinmutatie plaats.Read-only.
20LeerlingNavigatieKiest Terug naar <oefening>.Frontend keert terug naar oefening-startpagina.Routecontext.
21OefenHub frontendOefening-startpaginaToont oefeningcontext opnieuw.Leerling kan andere oefenacties kiezen.Geen mutatie.
22OefenHub backendLoggingKan technische requestlogging vastleggen.Geen domeinevent vereist.Applicatielogging.
23OefenHub backendResultaat-/geschiedenisserviceVoert aanvullende consistentiecontrole 23 uit.Alleen bruikbare gegevens gaan door naar de frontend.Server-side afleiding.
24OefenHub backendResultaat-/geschiedenisserviceVoert aanvullende consistentiecontrole 24 uit.Alleen bruikbare gegevens gaan door naar de frontend.Server-side afleiding.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Geen geldige leerlingcontextRouteguard blokkeert de geschiedenisroute en leidt naar login of veilige contextafhandeling.Niet van toepassingGeen
ALT-0024Oefening bestaat niet meer als actuele startcontextSysteem probeert historische context veilig te tonen wanneer er afgeronde runs bestaan; anders volgt niet-beschikbaarafhandeling.Niet van toepassingGeen
ALT-0035Leerling heeft geen toegang tot de contextBackend geeft geen geschiedenisdataset terug.Niet van toepassingGeen
ALT-0046Geen afgeronde runs gevondenFrontend toont lege staat met terugnavigatie.Niet van toepassingGeen
ALT-0057Alleen niet-afgeronde runs aanwezigLijst blijft leeg omdat deze runs niet als geschiedenis gelden.Niet van toepassingGeen
ALT-0068Dataset bevat testrunsBackend filtert testruns uit.Niet van toepassingGeen
ALT-00710Historische naamgeving ontbreekt gedeeltelijkSysteem toont beschikbare snapshot- of fallbackcontext zonder technische GUID's.Niet van toepassingGeen
ALT-00811Paginering vraagt pagina buiten bereikBackend corrigeert naar geldige pagina of levert lege pagina binnen grenzen.Niet van toepassingGeen
ALT-00912Databasefout bij ladenSysteem toont veilige foutafhandeling en geen gedeeltelijke dataset.Niet van toepassingGeen
ALT-01016Resultaatdetail niet langer toegankelijkDoorklik wordt geblokkeerd door UC-LLN-HIS-003.Niet van toepassingGeen

9. Business rules

IDRegel
BR-001Geschiedenis toont alleen exercise runs waarvoor de ingelogde leerling server-side inzagerecht heeft.
BR-002Afgeronde leerlingruns blijven zichtbaar in geschiedenis, ook wanneer actuele oefening- of niveauautorisatie later wijzigt.
BR-003Niet-afgeronde runs verschijnen niet als afgeronde geschiedenisregel.
BR-004Docent-testruns worden niet als permanente leerlinggeschiedenis getoond.
BR-005Uniforme totalen en statistieken worden gelezen uit opgeslagen runvelden en niet telkens opnieuw uit de modulepayload berekend.
BR-006Technische identifiers zoals GUID's worden niet als herkenningsmiddel aan de leerling getoond.
BR-007Zoeken, filteren en pagineren wijzigen geen domeindata.
BR-008Een resultaatdetail mag alleen worden geopend voor een run die binnen de geautoriseerde leerlingcontext valt.
BR-009Historische niveau-, categorie- en oefeningcontext blijft leidend voor geschiedenisweergave.
BR-010PDF-download gebruikt dezelfde historisch opgeslagen runcontext als de resultaatweergave.
BR-011UC-LLN-HIS-001 gebruikt bestaande resultaat- en geschiedenisbronnen en maakt geen alternatieve bron van waarheid aan.
BR-012Wanneer actuele toegang is vervallen, blijft eerder afgeronde geschiedenis alleen zichtbaar voor zover historie volgens de bestaande regels bewaard mag blijven.
BR-013Browsergeschiedenis, URL-manipulatie en clientcache geven geen recht op extra resultaten of geschiedenis.
BR-014De frontend mag de dataset niet uitbreiden buiten de door backend geleverde geautoriseerde selectie.

10. Datavalidatie

Veld / objectValidatie
OefeningcontextDe oefening moet bij de gevraagde historische of actuele context horen en mag niet alleen uit clientstate worden vertrouwd.
Leerling-idDe backend gebruikt de server-side gebruiker en nooit een client-aangeleverde leerling-id als bron voor eigen geschiedenis.
RunstatusAlleen afgeronde runs met afrondmoment worden als geschiedenisregel getoond.
TestrunIsTestRun mag niet zichtbaar worden als permanente leerlinggeschiedenis.
NiveaucontextDe run moet binnen de gevraagde oefening- en niveaucontext vallen of als historische context verklaarbaar zijn.
SamenvattingsveldenAantal vragen, goed, fout en Geen idee moeten uit opgeslagen uniforme velden komen.
SorteringStandaardsortering is aflopend op afrondmoment.
Leeg resultaatGeen geschiedenisregels is een geldige toestand.
Technische identifiersGUID's worden niet als zichtbare herkenningswaarde getoond.
AutorisatieDe dataset wordt voor iedere request opnieuw server-side gefilterd.

11. Datamutaties en events

StapTypeEntiteit / gegevensbronMutatie
1ReadSessie- en leerlingcontextDe actuele leerlingcontext wordt gecontroleerd.
4ReadOefening-, categorie- en niveaucontextDe gevraagde oefeningcontext wordt server-side gevalideerd.
6ReadExerciseRunsAfgeronde eigen runs binnen de toegestane context worden gelezen.
9ReadUniforme runveldenAfrondmoment, aantallen en samenvattingswaarden worden gelezen.
12PresentatieGeschiedenisreadmodelHet overzicht wordt opgebouwd uit bestaande data.
18PresentatieLeegstaatEen lege geschiedenis wordt getoond zonder domeinmutatie.

Er worden in deze usecase geen functionele domeinevents geregistreerd. Technische requestlogging valt buiten de usecasebron en verandert geen domeindata.

12. Geen datamutaties

EntiteitReden
ExerciseRunsDe runs worden gelezen maar niet gewijzigd.
ExerciseRunProgress / payloadVraagdetails worden in deze lijstweergave niet aangepast.
UsersHet bekijken van geschiedenis wijzigt geen accountgegevens.
UserSettingsFilterstand wordt in deze usecase niet als structurele voorkeur opgeslagen.
UserRelationshipsRelatiecontext wordt niet gewijzigd.
TeacherStudentLevelAccessAutorisaties worden niet gewijzigd.
SystemMessagesEr wordt geen systeembericht aangemaakt.
PrivateMessageThreadsEr wordt geen privébericht aangemaakt.
TicketsEr wordt geen melding aangemaakt.
PDF-bestandEr wordt geen PDF gegenereerd in deze usecase.

13. State diagram

Niet van toepassing als zelfstandig statusmodel. Deze usecase wijzigt geen persistent statusobject. De zichtbaarheid van geschiedenis en resultaten wordt afgeleid uit bestaande runvelden, accountcontext, autorisatiecontext en historische data.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Hoofdroute

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingAlle stappenGeschiedenis gebruikt geen popupregister-popup.

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

DoeldocumentAfleiding
Functioneel OntwerpFunctioneel Ontwerp beschrijft geschiedenis, filters, resultaatdetail, statistieken, opnieuw maken en PDF-download vanuit leerlingcontext.
Technisch OntwerpTechnisch Ontwerp: oefenruns en resultaten, PDF-export, readmodels en tellers, frontend-resultaatweergave en privacy/retentie 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 resultaten, geschiedenis, statistieken, PDF-export en autorisatie op historische data.
Database-informatieDatabase-informatie blijft bron voor runresultaten, voortgangsrecords, snapshots en exportbrondata; normale PDF-downloads introduceren geen permanente PDF-tabel.
OntwerpbronnenOntwerpbronnen bevatten aanvullende businessregels voor resultaatweergave, geschiedenis, statistieken en exportrepresentatie.

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-HIS-001-001SRS-LRN-010
SRS-NFR-AUD-001
AC-LRN-010
AC-NFR-AUD-001
Een leerling de geschiedenis van een specifieke oefening kunnen tonen
REQ-UC-LLN-HIS-001-002SRS-AUTH-001
SRS-RDM-001
SRS-RDM-005
SRS-RDM-006
SRS-LRN-010
SRS-NFR-AUD-001
AC-AUTH-001
AC-RDM-001
AC-RDM-005
AC-RDM-006
AC-LRN-010
AC-NFR-AUD-001
Geschiedenis server-side filteren op de ingelogde leerling
REQ-UC-LLN-HIS-001-003SRS-LRN-008
SRS-NFR-AUD-001
AC-LRN-008
AC-NFR-AUD-001
Alleen afgeronde runs als oefeninggeschiedenis tonen
REQ-UC-LLN-HIS-001-004SRS-RDM-001
SRS-RDM-006
SRS-LRN-008
SRS-NFR-AUD-001
AC-RDM-001
AC-RDM-006
AC-LRN-008
AC-NFR-AUD-001
Niet-afgeronde runs uitsluiten van de afgeronde geschiedenislijst
REQ-UC-LLN-HIS-001-005SRS-LRN-010
SRS-TCH-004
SRS-NFR-AUD-001
AC-LRN-010
AC-TCH-004
AC-NFR-AUD-001
Docent-testruns uitsluiten van leerlinggeschiedenis
REQ-UC-LLN-HIS-001-006SRS-LRN-010
SRS-NFR-AUD-001
AC-LRN-010
AC-NFR-AUD-001
Uniforme runvelden gebruiken voor geschiedenisregels
REQ-UC-LLN-HIS-001-007SRS-LRN-010
SRS-NFR-SEC-001
SRS-NFR-AUD-001
AC-LRN-010
AC-NFR-SEC-001
AC-NFR-AUD-001
Een lege geschiedenis veilig kunnen tonen
REQ-UC-LLN-HIS-001-008SRS-LRN-009
AC-LRN-009
Technische identifiers verbergen voor leerlingen
REQ-UC-LLN-HIS-001-009SRS-AUTH-001
SRS-LRN-006
AC-AUTH-001
AC-LRN-006
Doorklikken naar resultaatdetail alleen toestaan voor geautoriseerde runs
REQ-UC-LLN-HIS-001-010SRS-LRN-010
SRS-NFR-AUD-001
AC-LRN-010
AC-NFR-AUD-001
Bij het bekijken van geschiedenis geen domeindata wijzigen