Skip to main content

UC-DOC-RES-003 - Afgeronde oefenrun van leerling bekijken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-RES-003
NaamAfgeronde oefenrun van leerling bekijken
DomeinDocent
SubdomeinResultaten en geschiedenis binnen docentcontext
Primaire actorDocent
Secundaire actor(en)Systeem, Leerling
RolcontextActieve docentcontext met geldige docentrol en resultaatinzage binnen eigen geautoriseerde niveaucontext
Betrokken schermenDocent - Geschiedenis, Docent - Resultaatdetail
Gerelateerde usecasesUC-DOC-RES-001, UC-DOC-RES-004, UC-DOC-RES-005, UC-DOC-RES-006, UC-LLN-HIS-003
Primaire entiteitenUsers, TeacherStudentLevelAccess, ExerciseRuns, Exercises, Categories, TeacherLevels
Secundaire entiteiten / eventsExerciseRunProgress, modulepayload, resultaatdetail-readmodel, autorisatiecontrole
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een docent een afgeronde oefenrun van een leerling opent vanuit de docentgeschiedenis.

De docent krijgt inzicht in de run binnen de eigen onderwijscontext, inclusief samenvatting en vraag-antwoordgegevens die voor resultaatanalyse nodig zijn.

De flow is read-only en mag de historische run niet herschrijven.

3. Scope

3.1 Binnen scope

  • Openen van een concreet resultaat vanuit een toegestane geschiedenisregel.
  • Server-side valideren dat de run binnen de docentcontext valt.
  • Tonen van runmetadata, niveau, categorie, oefening en afrondmoment.
  • Tonen van vraag-antwoordregels voor zover generiek beschikbaar.
  • Voorbereiden van vervolgacties zoals statistieken bekijken of PDF downloaden.

3.2 Buiten scope

  • Herberekenen of corrigeren van historische resultaten.
  • Wijzigen van leerlingantwoorden.
  • Opnieuw starten van een leerlingrun namens de leerling.
  • Bekijken van resultaten buiten docentcontext.
  • Moduleconfiguratie wijzigen.

3.3 DRY-afbakening

  • Leerlingresultaten en statistiekdefinities blijven inhoudelijk bronhoudend in de leerlingresultaat- en centrale FO/TO/SRS-regels.
  • Docentniveau-autorisaties worden hier toegepast, maar het wijzigen ervan blijft bronhoudend in het subdomein Leerlingen en niveau-autorisaties.
  • Relatievorming en relatieontkoppeling blijven bronhoudend in het generieke relatiedomein.
  • PDF-layoutregels worden niet per usecase als nieuwe bronwaarheid herhaald, maar verwijzen naar de centrale resultaat- en PDF-afspraken.
  • Deze usecases maken geen eigen kopie van oefenruns, statistieken of histories voor docenten.
  • Directe toegang via URL, filter of exportverzoek blijft altijd onder dezelfde autorisatiegrens vallen.
  • Systeemberichten, privéberichten en meldingen worden niet aangemaakt door het bekijken van resultaten.
  • Module-specifieke payload blijft eigendom van de technische module; de docentweergave gebruikt veilige representaties.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd.
PRE-002De gebruiker heeft een actieve docentrol.
PRE-003De OefenHub-sessiecontext is server-side opgebouwd.
PRE-004De betrokken leerling, run of resultatenlijst valt potentieel binnen de docentcontext.
PRE-005De backend kan actuele autorisatie-, relatie- en resultaatgegevens ophalen.
PRE-006De relevante resultaatdata is beschikbaar in de persistente run- en voortgangsopslag.

5. Post-condities

IDResultaat
POST-001De docent ziet uitsluitend resultaten die binnen de eigen docentcontext vallen.
POST-002Geen resultaat, oefenrun, autorisatie of profielgegeven is gewijzigd door deze read-only flow.
POST-003Een verboden of verouderd verzoek is veilig geblokkeerd zonder contextlek.
POST-004De frontend toont een actuele lijst, detailweergave, export of veilige afwijzing.
POST-005Fout- en blokkadesituaties worden veilig afgehandeld zonder nieuwe domeinentiteiten te introduceren.
POST-006Vervolgacties blijven binnen de daarvoor bedoelde usecases.

6. Trigger

De docent klikt in de leerlinggeschiedenis op een afgeronde oefenrun.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1DocentGeschiedenisregelKlikt op een afgeronde oefenrunFrontend vraagt detail opExerciseRunId
2FrontendRouteguardStuurt detailverzoekBackend start controleClient-ID is niet leidend
3SysteemResultatenserviceLaadt runmetadataControleert dat run bestaat en afgerond isExerciseRuns
4SysteemAutorisatieserviceControleert docentcontext voor runniveau en leerlingBepaalt zichtbaarheidTeacherStudentLevelAccess
5SysteemResultatenserviceLaadt uniforme totalenBouwt samenvattingTotalCorrect, TotalWrong, CompletedAtUtc
6SysteemResultatenserviceLaadt generieke vraag-antwoordweergaveBouwt resultaatdetailProgress/payload
7SysteemContextserviceLaadt niveau-, categorie- en oefencontextVerrijkt detailweergaveTeacherLevels, Categories, Exercises
8SysteemReadmodelControleert of modulepresentatie beschikbaar isGebruikt veilige fallback waar nodigExerciseModules
9FrontendResultaatdetailToont detailinformatieDocent ziet alleen read-only resultaatGeen mutatie
10DocentResultaatdetailKiest eventueel statistieken of PDFVervolg naar UC-DOC-RES-004 of UC-DOC-RES-005Read-only vervolg

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Run bestaat nietSysteem toont niet-beschikbaarafhandeling.Niet van toepassingGeen
ALT-0023Run is niet afgerondSysteem weigert detailweergave als geschiedenisresultaat.Niet van toepassingGeen
ALT-0034Run valt buiten docentcontextSysteem blokkeert toegang zonder inhoud te tonen.Niet van toepassingGeen
ALT-0046Vraagpayload is technisch niet renderbaarSysteem toont generieke veilige fallback of blokkeert detaildeel.Niet van toepassingGeen
ALT-0058Gekoppelde module is niet meer actiefHistorisch resultaat blijft zichtbaar zolang renderrepresentatie beschikbaar is.Niet van toepassingGeen
ALT-0069Frontendcache bevat verouderde runlinkSysteem gebruikt actuele autorisatiecontrole en ververst de lijst.Niet van toepassingGeen

9. Business rules

IDRegel
BR-001Een docent mag alleen afgeronde runs openen binnen de eigen geautoriseerde docentcontext.
BR-002Een afgeronde run wordt read-only getoond.
BR-003Resultaatdetails worden niet opnieuw berekend als dat niet nodig is voor herstel of controle.
BR-004Uniforme runvelden zijn leidend voor samenvatting en totalen.
BR-005Module-specifieke payload wordt alleen gebruikt voor veilige vraag-antwoordrepresentatie.
BR-006Historische resultaten blijven functioneel leesbaar wanneer de oefening wijzigt.
BR-007Testruns worden niet als leerlingresultaatdetail getoond.
BR-008Open of onderbroken runs worden niet via deze resultaatdetailflow getoond.
BR-009Directe URL-toegang wordt altijd server-side gevalideerd.
BR-010Technische GUIDs zijn geen gebruikersgerichte herkenningsgegevens.
BR-011Een gedeelde oefening die als zelfstandige run is afgerond, blijft een zelfstandige run met eigen resultaat.
BR-012Detailweergave mag geen toegang geven tot andere leerlinggegevens buiten context.

10. Datavalidatie

Veld / objectValidatie
DocentUserIdMoet overeenkomen met de server-side ingelogde gebruiker en mag niet uit formulierinvoer worden vertrouwd.
StudentUserIdMoet binnen de toegestane docentcontext vallen voordat resultaten worden gelezen.
ExerciseRunIdMoet bestaan, afgerond zijn en binnen de toegestane context vallen.
TeacherLevelIdMoet onderdeel zijn van de eigen docentcontext of historische resultaatcontext waar de docent recht op heeft.
CategoryIdMag alleen als filter worden toegepast binnen de reeds toegestane dataset.
ExerciseIdMag alleen als filter of context worden gebruikt binnen de toegestane dataset.
PeriodefilterMoet geldige datums bevatten en mag niet leiden tot datasetuitbreiding buiten autorisatie.
PagineringMoet worden begrensd op toegestane waarden en bij lege pagina veilig terugvallen.
PDF-bestandsnaamMoet worden opgeschoond van ongeldige tekens en lengtebeperkingen respecteren.
ModulepayloadMag alleen via veilige render- of exportrepresentatie worden gebruikt.

11. Datamutaties en events

StapTypeEntiteit / readmodelGedrag
1QueryDocentcontext-readmodelControleert actuele docenttoegang tot de leerling, het niveau en de run.
2QueryExerciseRunsLeest de afgeronde run als deze binnen de docentcontext valt.
3QueryExerciseRunProgress / resultaatdetail-readmodelLeest vraagdetails, antwoorden, uniforme totalen en opgeslagen statistiekvelden.
4Geen domeinmutatieExerciseRuns / ExerciseRunProgressHet openen van een afgerond resultaat wijzigt geen runinhoud, score of voortgang.
5Geen domeinmutatieExercises / Categories / TeacherLevelsHistorische of betekenisvolle context wordt gelezen, niet aangepast.
6Geen domeinmutatieSystemMessages / PrivateMessages / TicketsResultaatdetailinzage maakt geen communicatie- of meldingsrecords aan.

12. Geen datamutaties

EntiteitReden
UsersResultaat- en geschiedenisweergave wijzigt geen gebruikersaccount.
UserRoles / RolesBekijken of exporteren van resultaten wijzigt geen rollen.
UserRelationshipsDocent-leerlingrelaties worden alleen gecontroleerd, niet gewijzigd.
TeacherStudentLevelAccessAutorisaties worden gecontroleerd, niet aangepast.
TeacherLevelsNiveaucontext wordt gelezen en niet gewijzigd.
CategoriesCategoriecontext wordt gelezen en niet gewijzigd.
ExercisesOefeningcontext wordt gelezen en niet gewijzigd.
ExerciseRunsBekijken, filteren of exporteren wijzigt de run niet.
ExerciseRunProgressVraagdetails worden gelezen en niet aangepast.
SystemMessagesResultaatinzage maakt geen systeemberichten aan.
PrivateMessagesResultaatinzage maakt geen privéberichten aan.
TicketsResultaatinzage maakt geen melding aan.

13. State diagram

Niet van toepassing als persistent statusmodel. De usecase leest bestaande oefenrunstatussen en autorisatiecontext, maar introduceert geen nieuwe status voor docentresultaatinzage.

14. Decision flow

15. Data lifecycle diagram

Deze usecase maakt geen nieuwe resultaatdata aan. Het lifecyclebeeld toont dat bestaande runs alleen worden gelezen.

16. Sequence diagrammen

16.1 Afgeronde run openen

16.2 Directe route of verouderde clientstate blokkeren

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingAlle momentenResultaatinzage, filtering, export en blokkades gebruiken geen nieuwe domeinspecifieke popupregister-popup.
Niet van toepassingPDF-downloadfoutEen exportfout wordt via generieke foutafhandeling verwerkt zonder popupteksten in de usecase te dupliceren.

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

DoeldocumentAfleiding
Functioneel OntwerpDocentresultaten moeten expliciet contextgebonden worden beschreven: alleen resultaten van niveaus die de docent zelf aan de leerling heeft geautoriseerd of waarvoor de docent volgens de geldende docentcontext inzagerecht heeft.
Technisch OntwerpTechnisch Ontwerp: oefenruns, resultaten en PDF-brondata, PDF-export, readmodels en resultaatlezers en autorisatie beschrijven de technische uitwerking. Backendqueries voor geschiedenis, filters, resultaatdetails en PDF-export moeten altijd eerst autorisatiecontext toepassen en daarna pas filters, sortering of exportlogica.
Software Requirements SpecificationRequirements moeten vastleggen dat directe URL-toegang, filterparameters en exportverzoeken geen toegang buiten docentcontext mogen opleveren.
Database-informatieExerciseRuns en gerelateerde resultaatdata blijven bronhoudend; er is geen aparte docentresultatentabel nodig.
OntwerpbronnenAutorisatiematrix, business rules en usecase-matrices moeten docentresultaatinzage en blokkades buiten context opnemen. Read-only resultaatinzage vraagt geen nieuw domeinevent.
Privacy/AVGResultaatinzage door docenten moet dataminimalisatie respecteren en geen resultaten buiten onderwijscontext zichtbaar maken.

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-DOC-RES-003-001SRS-LRN-009
SRS-TCH-001
AC-LRN-009
AC-TCH-001
Een afgeronde oefenrun binnen docentcontext kunnen tonen
REQ-UC-DOC-RES-003-002SRS-AUTH-001
SRS-LRN-006
SRS-TCH-004
AC-AUTH-001
AC-LRN-006
AC-TCH-004
Niet-afgeronde runs weigeren als resultaatdetail
REQ-UC-DOC-RES-003-003SRS-LRN-003
SRS-TCH-001
SRS-NFR-SEC-001
AC-LRN-003
AC-TCH-001
AC-NFR-SEC-001
Vraag-antwoordgegevens veilig renderen
REQ-UC-DOC-RES-003-004SRS-LRN-009
SRS-TCH-001
AC-LRN-009
AC-TCH-001
Historische runcontext behouden
REQ-UC-DOC-RES-003-005SRS-AUTH-001
SRS-TCH-001
AC-AUTH-001
AC-TCH-001
Directe toegang buiten context blokkeren
REQ-UC-DOC-RES-003-006SRS-TCH-004
AC-TCH-004
Resultaatdetails niet wijzigen bij bekijken
REQ-UC-DOC-RES-003-007SRS-AUTH-001
SRS-LRN-009
SRS-TCH-001
AC-AUTH-001
AC-LRN-009
AC-TCH-001
Toegang tot leerlingresultaten altijd server-side valideren
REQ-UC-DOC-RES-003-008SRS-LRN-009
SRS-TCH-005
AC-LRN-009
AC-TCH-005
Testruns uitsluiten van docentresultaten
REQ-UC-DOC-RES-003-009SRS-LRN-006
SRS-TCH-004
SRS-NFR-AUD-001
AC-LRN-006
AC-TCH-004
AC-NFR-AUD-001
Niet-afgeronde runs buiten resultaatgeschiedenis houden
REQ-UC-DOC-RES-003-010SRS-TCH-001
AC-TCH-001
Technische identifiers niet als gebruikersgerichte herkenningsgegevens tonen
REQ-UC-DOC-RES-003-011SRS-TCH-004
AC-TCH-004
Resultaatinzage zonder domeinmutatie verwerken