Skip to main content

UC-LLN-HIS-003 — Resultaatdetail vanuit geschiedenis openen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-HIS-003
NaamResultaatdetail vanuit geschiedenis openen
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 schermenGeschiedenistabel, resultaatdetailweergave, resultaatpopup/resultaatcomponent, terugnavigatie.
Gerelateerde usecasesUC-LLN-HIS-001 — Oefeninggeschiedenis bekijken; UC-LLN-HIS-004 — Geschiedenis alles bekijken; UC-LLN-RES-001 — Resultaat na afronding bekijken; UC-LLN-RES-002 — Resultaatstatistieken bekijken; UC-LLN-RES-003 — Oefening opnieuw maken; UC-LLN-RES-004 — Resultaat als PDF downloaden
Primaire entiteitenExerciseRuns, opgeslagen vraag- en antwoordpayload, uniforme runstatistieken
Secundaire entiteiten / eventsExercises, Categories, Levels, ExerciseModules, opgeslagen resultaatpayload
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing; deze flow gebruikt routeguard-, leegstaat- of componentgedrag.
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een leerling vanuit een geschiedenisregel het resultaatdetail van een afgeronde run opent. Het resultaatdetail gebruikt dezelfde functionele resultaatweergave als de resultaatpopup na afronding, maar de ingang is de geschiedenispagina. De backend controleert opnieuw of de run bestaat, afgerond is en bij de ingelogde leerling hoort of anderszins binnen de toegestane historische context valt.

Deze usecase is een leesflow. De leerling kan vanuit het resultaatdetail vervolgacties starten, zoals PDF-download of opnieuw maken, maar die acties blijven eigen usecases. Het openen van het resultaatdetail mag geen run, statistiek, relatie of autorisatie wijzigen.

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:

  • klikken op een geschiedenisregel
  • server-side valideren van run-id en leerlingcontext
  • controleren dat de run afgerond en resultaatwaardig is
  • laden van dezelfde resultaatdata als de resultaatpopup gebruikt
  • tonen van samenvatting, vraagdetails en resultaatstatus
  • tonen van statistiekensectie via opgeslagen runvelden
  • tonen van duplicaat- of gedeelde context waar relevant
  • aanbieden van vervolgacties volgens bestaande voorwaarden
  • terugnavigeren naar de geschiedenislijst
  • veilig blokkeren van onbekende of niet-toegankelijke runs

Deze usecase omvat niet:

  • berekenen van statistieken als nieuwe afrondactie
  • PDF genereren
  • oefening opnieuw maken
  • oefening delen
  • geschiedenis filteren
  • run wijzigen
  • vraagantwoorddata corrigeren
  • docent- of ouderdetailweergave
  • beheeraudit bekijken
  • nieuwe domeinstatus aanmaken

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 in de oefeninggeschiedenis of geschiedenis-alles een afgeronde run selecteert om het resultaatdetail te openen.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingGeschiedenistabelKlikt op een geschiedenisregel.Frontend start resultaatdetailroute.ExerciseRunId.
2OefenHub frontendResultaatdetailrouteStuurt runreferentie naar backend.Backendvalidatie start.Geen client-side autorisatie.
3OefenHub backendRouteguardControleert leerlingcontext.Ongeldige sessie wordt geblokkeerd.Users.Id.
4OefenHub backendResultaatserviceZoekt de run op.Onbekende run wordt geweigerd.ExerciseRuns.Id.
5OefenHub backendResultaatserviceControleert eigenaar of toegestane historische inzage.Onbevoegde inzage wordt geweigerd.Server-side.
6OefenHub backendResultaatserviceControleert dat de run afgerond is.Alleen afgeronde runs tonen volledig resultaat.CompletedAtUtc.
7OefenHub backendResultaatserviceLaadt uniforme runvelden.Samenvatting en statistieken zijn beschikbaar.Opgeslagen velden.
8OefenHub backendResultaatserviceLaadt vraag- en antwoorddetails.Resultatentabel kan worden opgebouwd.Payload.
9OefenHub backendResultaatserviceLaadt historische context.Niveau, categorie en oefening worden herkenbaar getoond.Snapshot/context.
10OefenHub backendResultaatserviceBepaalt beschikbare vervolgacties.Knoppen worden volgens voorwaarden getoond.PDF, opnieuw maken, delen.
11OefenHub backendAPI responseStuurt resultaatreadmodel terug.Frontend kan detailweergave renderen.Readmodel.
12OefenHub frontendResultaatdetailToont titel en context.Leerling herkent de afgeronde run.Historische labels.
13OefenHub frontendResultaatdetailToont samenvatting.Aantal vragen, goed, fout en datum zijn zichtbaar.Uniforme velden.
14OefenHub frontendResultaatdetailToont vraagdetails.Leerling ziet gegeven en juiste antwoorden.Payload.
15OefenHub frontendResultaatdetailToont resultaatstatussen.Goed, fout en Geen idee zijn onderscheidbaar.Visuele status.
16OefenHub frontendStatistiekensectieToont opgeslagen statistieken.Leerling ziet tijd- en spreidingsinformatie.UC-LLN-RES-002.
17OefenHub frontendResultaatactiesToont toegestane vervolgacties.Leerling kan een vervolgusecase starten.Voorwaarden.
18LeerlingResultaatdetailBekijkt het resultaat.Geen domeinmutatie vindt plaats.Read-only.
19LeerlingResultaatdetailKiest terug naar geschiedenis.Frontend navigeert terug naar vorige lijstcontext.Routecontext.
20OefenHub frontendGeschiedenisoverzichtHerstelt lijstcontext waar mogelijk.Filter/pagina kan zichtbaar blijven.Clientstate opnieuw veilig.
21OefenHub backendLoggingKan technische requestlogging vastleggen.Geen domeinevent vereist.Applicatielogging.
22OefenHub frontendResultaatdetailBlijft binnen leerlinglayout.Geen beheer- of docentdata zichtbaar.Rolcontext.
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-0013Sessie verlopenRouteguard leidt naar login of veilige context.Niet van toepassingGeen
ALT-0024Run bestaat nietSysteem toont niet-beschikbaarafhandeling.Niet van toepassingGeen
ALT-0035Run hoort niet bij leerlingBackend weigert detaildata.Niet van toepassingGeen
ALT-0046Run is niet afgerondSysteem blokkeert resultaatdetail en verwijst naar hervatten wanneer de oefencontext dat toestaat.Niet van toepassingGeen
ALT-0057Uniforme statistiekvelden ontbrekenSysteem toont veilige fout of beperkt resultaat volgens centrale herstelregels.Niet van toepassingGeen
ALT-0068Vraagpayload kan niet worden gelezenSysteem toont veilige niet-beschikbaarafhandeling voor detaildata.Niet van toepassingGeen
ALT-0079Historische oefeningnaam ontbreektSysteem toont beschikbare context zonder technische GUID's.Niet van toepassingGeen
ALT-00810PDF-actie niet beschikbaarFrontend verbergt of blokkeert de actie.Niet van toepassingGeen
ALT-00910Opnieuw maken niet beschikbaarFrontend verbergt of blokkeert de actie.Niet van toepassingGeen
ALT-01019Vorige lijstcontext ontbreektFrontend navigeert naar standaardgeschiedenis of oefeningpagina.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-003 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
ExerciseRunIdMoet bestaan en server-side bij de juiste leerlingcontext passen.
RunstatusRun moet afgerond of formeel resultaatwaardig zijn.
EigenaarDe run moet eigendom van de leerling zijn of binnen een expliciet toegestane historische context vallen.
VraagpayloadPayload moet veilig leesbaar zijn door de resultaatcomponent.
Uniforme veldenSamenvatting en statistieken komen uit opgeslagen runvelden.
Historische contextNiveau-, categorie- en oefeninglabels moeten functioneel uitlegbaar zijn.
VervolgactiesElke actie krijgt eigen server-side voorwaarden.
TerugnavigatieVorige lijstcontext mag geen autorisatie overslaan.
Technische identifiersGUID's worden niet als primaire zichtbare context getoond.
AnonimiseringGeanonimiseerde namen worden niet herleidbaar gemaakt.

11. Datamutaties en events

StapTypeEntiteit / gegevensbronMutatie
1ReadGeschiedenisregel / run-idDe geselecteerde resultaatcontext wordt aangeboden aan de backend.
4ReadExerciseRunsDe afgeronde run wordt gelezen.
5ReadSessie- en eigenaarscontroleDe backend controleert dat de leerling dit resultaat mag zien.
7ReadUniforme runveldenSamenvatting, totalen en statistieken worden gelezen.
8ReadVraag- en antwoordpayloadVraagdetails en antwoorden worden gelezen.
11PresentatieResultaatdetailviewmodelHet resultaatdetail wordt opgebouwd uit bestaande rundata.

Het openen van resultaatdetail vanuit geschiedenis registreert geen functioneel domeinevent en wijzigt geen run, resultaat, autorisatie of relatie.

12. Geen datamutaties

EntiteitReden
ExerciseRunsResultaatdetail leest de run maar wijzigt deze niet.
ExerciseRunProgress / payloadAntwoorddetails worden niet aangepast.
ExerciseModulesModulecontext wordt niet gewijzigd.
ExercisesOefeningconfiguratie wordt niet gewijzigd.
UserSettingsEr wordt geen voorkeur gewijzigd.
SystemMessagesEr wordt geen systeembericht aangemaakt.
PrivateMessageThreadsEr wordt geen privébericht aangemaakt.
TicketsEr wordt geen melding aangemaakt.
PDF-bestandBinnen deze usecase wordt geen PDF aangemaakt; PDF-export start uitsluitend via UC-LLN-RES-004.
Duplicate runBinnen deze usecase ontstaat geen nieuwe run; opnieuw maken start uitsluitend via UC-LLN-RES-003.

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 toepassingOpenen resultaatdetailNiet-beschikbaar of geweigerd wordt via routeguard of component afgehandeld.

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-003-001SRS-LRN-006
SRS-NFR-AUD-001
AC-LRN-006
AC-NFR-AUD-001
Resultaatdetail vanuit een geschiedenisregel kunnen openen
REQ-UC-LLN-HIS-003-002SRS-AUTH-001
SRS-LRN-006
AC-AUTH-001
AC-LRN-006
De run server-side valideren voordat resultaatdetails worden getoond
REQ-UC-LLN-HIS-003-003SRS-AUTH-001
SRS-LRN-006
AC-AUTH-001
AC-LRN-006
Resultaatdetail blokkeren voor runs buiten de leerlingcontext
REQ-UC-LLN-HIS-003-004SRS-AUTH-001
SRS-LRN-006
AC-AUTH-001
AC-LRN-006
Resultaatdetail blokkeren voor niet-afgeronde runs
REQ-UC-LLN-HIS-003-005SRS-LRN-006
AC-LRN-006
Dezelfde brondata gebruiken als de resultaatweergave na afronding
REQ-UC-LLN-HIS-003-006SRS-RDM-001
SRS-RDM-002
SRS-LRN-009
AC-RDM-001
AC-RDM-002
AC-LRN-009
Samenvatting, vraagdetails en statistieken tonen waar beschikbaar
REQ-UC-LLN-HIS-003-007SRS-LRN-009
AC-LRN-009
Vervolgacties alleen tonen wanneer hun voorwaarden gelden
REQ-UC-LLN-HIS-003-008SRS-LRN-010
SRS-NFR-AUD-001
AC-LRN-010
AC-NFR-AUD-001
Terugnavigatie naar de geschiedeniscontext ondersteunen
REQ-UC-LLN-HIS-003-009SRS-LRN-009
AC-LRN-009
Technische identifiers niet als primaire context tonen
REQ-UC-LLN-HIS-003-010SRS-LRN-006
AC-LRN-006
Bij alleen openen van resultaatdetail geen domeindata wijzigen