Skip to main content

UC-LLN-HIS-004 — Geschiedenis alles bekijken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-HIS-004
NaamGeschiedenis alles 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 schermenGeschiedenis alles-pagina, filterbalk, brede geschiedenistabel, paginering, resultaatdetailroute, lege staat.
Gerelateerde usecasesUC-LLN-HIS-001 — Oefeninggeschiedenis bekijken; UC-LLN-HIS-002 — Geschiedenis filteren en pagineren; UC-LLN-HIS-003 — Resultaatdetail vanuit geschiedenis openen; UC-LLN-DEL-003 — Gedeelde oefening starten; UC-LLN-RES-001 — Resultaat na afronding bekijken
Primaire entiteitenExerciseRuns, historische niveau-, categorie- en oefeningcontext
Secundaire entiteiten / eventsGedeelde-oefeningcontext, duplicate-context, breed geschiedenisreadmodel
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing; deze flow gebruikt routeguard-, leegstaat- of componentgedrag.
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een leerling een brede geschiedenisweergave opent met alle afgeronde eigen oefenruns over niveaus, categorieën en oefeningen heen. Deze pagina verschilt van de oefeninggebonden geschiedenis doordat de basisdataset niet beperkt is tot één oefening, maar nog steeds strikt server-side wordt gefilterd op de ingelogde leerling en toegestane historische context. Afgeronde gedeelde oefeningen mogen in deze brede geschiedenis worden opgenomen wanneer zij als zelfstandige afgeronde run van de leerling bestaan.

De pagina ondersteunt minimaal filters op periode, niveau, categorie en type run. De exacte filterinteractie volgt dezelfde principes als UC-LLN-HIS-002: filters beperken de geautoriseerde dataset en openen nooit data van andere leerlingen.

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 brede leerlinggeschiedenis
  • server-side ophalen van alle afgeronde eigen runs
  • opnemen van afgeronde gedeelde oefeningen als eigen runs
  • onderscheiden van normale runs, duplicate runs en gedeelde runs waar relevant
  • tonen van periode-, niveau-, categorie- en typefilter
  • tonen van samenvattende geschiedenisregels
  • pagineren van brede geschiedenis
  • doorklikken naar resultaatdetail
  • veilig tonen van lege brede geschiedenis
  • uitsluiten van niet-afgeronde runs en testruns

Deze usecase omvat niet:

  • oefeninggebonden geschiedenis als startpunt
  • gedetailleerde resultaatweergave zelf
  • PDF exporteren
  • oefening opnieuw maken
  • delen met vrienden
  • docent- of oudergeschiedenis
  • beheeranalyse van alle gebruikers
  • verwijderen van geschiedenis
  • aanpassen van niveauautorisaties
  • herberekenen van statistieken

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 de brede pagina Geschiedenis (alles) opent vanuit de leerlingnavigatie, frontpage of een andere toegestane route.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingNavigatie / frontpageOpent Geschiedenis (alles).Frontend opent brede geschiedenisroute.Leerlingroute.
2OefenHub frontendGeschiedenis alles-routeVraagt brede geschiedenisdataset op.Backendvalidatie start.Geen client-side autorisatie.
3OefenHub backendRouteguardControleert sessie en leerlingrol.Ongeldige context wordt geblokkeerd.Users.Id, rol Leerling.
4OefenHub backendGeschiedenisserviceBepaalt basisdataset voor deze leerling.Alleen eigen runs komen in aanmerking.Server-side user filter.
5OefenHub backendGeschiedenisserviceSelecteert afgeronde runs over alle niveaus en categorieën.Brede dataset wordt opgebouwd.CompletedAtUtc.
6OefenHub backendGeschiedenisserviceSluit niet-afgeronde runs uit.Lopende runs verschijnen niet.Runstatus.
7OefenHub backendGeschiedenisserviceSluit testruns uit.Testdata verschijnt niet in leerlinggeschiedenis.IsTestRun = false.
8OefenHub backendGeschiedenisserviceNeemt afgeronde gedeelde runs op wanneer zij eigen runs zijn.Ontvangen gedeelde oefeningen zijn zichtbaar na afronding.Zelfstandige run ontvanger.
9OefenHub backendGeschiedenisserviceLaadt historische contextlabels.Niveau, categorie en oefening kunnen worden getoond.Snapshots/context.
10OefenHub backendFilterservicePast standaardfilter toe.Defaultdataset wordt begrensd.Periode/type default.
11OefenHub backendPagineringBerekent totaal en eerste pagina.Paginering is beschikbaar.Query.
12OefenHub backendAPI responseStuurt breed geschiedenisreadmodel terug.Frontend ontvangt regels, filters en totalen.Readmodel.
13OefenHub frontendGeschiedenis allesToont titel en toelichting.Leerling herkent brede geschiedeniscontext.Geen beheercontext.
14OefenHub frontendFilterbalkToont filters op periode, niveau, categorie en type run.Leerling kan dataset beperken.UC-LLN-HIS-002-principes.
15OefenHub frontendGeschiedenistabelToont regels met datum, niveau, categorie, oefening en totalen.Leerling ziet eigen afgeronde oefenhistorie.Uniforme velden.
16OefenHub frontendGeschiedenistabelToont type run waar relevant.Normaal, opnieuw gemaakt of gedeeld kan worden onderscheiden.Afgeleide context.
17OefenHub frontendPagineringToont pagina-informatie.Leerling kan navigeren.Afgeleid totaal.
18LeerlingFilterbalkPast filter toe.Frontend vraagt nieuwe gefilterde dataset.Zie filterprincipes.
19OefenHub backendGeschiedenisservicePast filter toe binnen eigen dataset.Dataset wordt beperkt, niet uitgebreid.Server-side.
20LeerlingGeschiedenistabelKlikt op een resultaatregel.Frontend start resultaatdetailusecase.UC-LLN-HIS-003.
21LeerlingGeschiedenis allesBekijkt of verlaat de pagina.Geen brondata wordt gewijzigd.Read-only.
22OefenHub frontendLeegstaatToont lege staat wanneer geen afgeronde runs bestaan.Normale toestand.Geen fout.
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 brede geschiedenis.Niet van toepassingGeen
ALT-0025Geen afgeronde runsFrontend toont lege brede geschiedenis.Niet van toepassingGeen
ALT-0038Gedeelde run heeft historische snapshotcontextSysteem toont snapshotcontext zoals bij afronding of delen beschikbaar.Niet van toepassingGeen
ALT-0049Historische context ontbreekt gedeeltelijkSysteem toont beschikbare functionele context zonder technische GUID's.Niet van toepassingGeen
ALT-00510Filtercombinatie levert geen resultaten opFrontend toont lege filterstaat.Niet van toepassingGeen
ALT-00614Filterwaarde niet toegestaanBackend weigert of corrigeert naar veilige default.Niet van toepassingGeen
ALT-00715Run hoort bij ingetrokken actuele autorisatieAfgeronde geschiedenis blijft zichtbaar voor de leerling zelf.Niet van toepassingGeen
ALT-00816Type run niet eenduidigSysteem toont algemene historiecontext en vermijdt misleidende labels.Niet van toepassingGeen
ALT-00920Resultaatdetail niet toegankelijkUC-LLN-HIS-003 blokkeert de detailroute.Niet van toepassingGeen
ALT-01022Databasefout bij brede querySysteem toont veilige foutafhandeling zonder gedeeltelijke data.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-004 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
LeerlingcontextBasisdataset wordt altijd bepaald vanuit de server-side ingelogde leerling.
RunstatusAlleen afgeronde runs worden getoond.
TestrunTestruns worden uitgesloten.
Gedeelde runEen gedeelde oefening telt pas mee wanneer voor de leerling een zelfstandige afgeronde run bestaat.
NiveaufilterNiveaufilter mag alleen waarden gebruiken die in de eigen historische dataset voorkomen.
CategoriefilterCategoriefilter mag alleen de eigen historische dataset beperken.
TypefilterType run wordt afgeleid uit runcontext en mag niet client-side worden verzonnen.
PeriodefilterPeriodefilter gebruikt afrondmoment.
PagineringPaginering blijft binnen gefilterde eigen dataset.
ResultaatdetailDoorklik vereist nieuwe autorisatiecontrole.

11. Datamutaties en events

StapTypeEntiteit / gegevensbronMutatie
1ReadSessie- en leerlingcontextDe actuele leerlingcontext wordt gecontroleerd.
4ReadExerciseRunsEigen afgeronde runs over toegestane contexten worden gelezen.
8ReadGedeelde-oefeningcontextAfgeronde eigen runs uit ontvangen gedeelde oefeningen worden meegenomen.
10ReadmodelStandaardfilterDe standaardweergave wordt afgeleid uit bestaande gegevens.
18ReadmodelFilter- en pagineringsparametersFilters beperken dezelfde eigen dataset.
22PresentatieLeegstaatEen lege brede geschiedenis wordt getoond zonder domeinmutatie.

Brede geschiedenis bekijken registreert geen functioneel domeinevent en wijzigt geen brondata.

12. Geen datamutaties

EntiteitReden
ExerciseRunsBrede geschiedenis leest runs en wijzigt deze niet.
SharedExerciseRecipientsOntvangen gedeelde oefeningen worden niet gewijzigd door geschiedenis te bekijken.
ExerciseRunProgress / payloadVraagdetails worden niet aangepast.
UserSettingsFilters worden niet als blijvende voorkeur opgeslagen in deze usecase.
TeacherStudentLevelAccessAutorisaties worden niet gewijzigd.
UserRelationshipsRelaties worden niet gewijzigd.
SystemMessagesEr wordt geen systeembericht aangemaakt.
PDF-bestandEr wordt geen PDF gegenereerd.
Duplicate runEr ontstaat geen duplicate run.
TicketsEr wordt geen melding aangemaakt.

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 toepassingBrede geschiedenisLege of geweigerde context wordt op de pagina 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-004-001SRS-RDM-001
SRS-RDM-005
SRS-RDM-006
SRS-LRN-010
SRS-NFR-AUD-001
AC-RDM-001
AC-RDM-005
AC-RDM-006
AC-LRN-010
AC-NFR-AUD-001
Een brede geschiedenispagina voor leerlingen kunnen tonen
REQ-UC-LLN-HIS-004-002SRS-LRN-008
SRS-NFR-AUD-001
AC-LRN-008
AC-NFR-AUD-001
Brede geschiedenis beperken tot eigen afgeronde runs
REQ-UC-LLN-HIS-004-003SRS-LRN-008
SRS-NFR-AUD-001
AC-LRN-008
AC-NFR-AUD-001
Niet-afgeronde runs en testruns uitsluiten van brede geschiedenis
REQ-UC-LLN-HIS-004-004SRS-LRN-009
SRS-SHR-001
AC-LRN-009
AC-SHR-001
Afgeronde gedeelde oefeningen opnemen wanneer zij als eigen run bestaan
REQ-UC-LLN-HIS-004-005SRS-RDM-001
SRS-RDM-005
SRS-RDM-006
SRS-CAT-001
SRS-LRN-009
AC-RDM-001
AC-RDM-005
AC-RDM-006
AC-CAT-001
AC-LRN-009
Filters op periode, niveau, categorie en type run kunnen ondersteunen
REQ-UC-LLN-HIS-004-006SRS-AUTH-001
SRS-RDM-001
SRS-LRN-009
AC-AUTH-001
AC-RDM-001
AC-LRN-009
Filters alleen binnen de geautoriseerde dataset toepassen
REQ-UC-LLN-HIS-004-007SRS-RDM-001
SRS-RDM-006
SRS-LRN-010
SRS-NFR-AUD-001
SRS-NFR-PER-001
AC-RDM-001
AC-RDM-006
AC-LRN-010
AC-NFR-AUD-001
AC-NFR-PER-001
Paginering ondersteunen op brede geschiedenis
REQ-UC-LLN-HIS-004-008SRS-AUTH-001
SRS-LRN-006
SRS-NFR-AUD-001
AC-AUTH-001
AC-LRN-006
AC-NFR-AUD-001
Resultaatdetail vanuit brede geschiedenis kunnen starten via server-side controle
REQ-UC-LLN-HIS-004-009SRS-LRN-010
SRS-NFR-SEC-001
SRS-NFR-AUD-001
AC-LRN-010
AC-NFR-SEC-001
AC-NFR-AUD-001
Een lege brede geschiedenis veilig tonen
REQ-UC-LLN-HIS-004-010SRS-LRN-010
SRS-NFR-AUD-001
AC-LRN-010
AC-NFR-AUD-001
Bij bekijken van brede geschiedenis geen domeindata wijzigen