UC-OVG-RES-005 — Resultaatdetails en statistieken bekijken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-RES-005 |
| Naam | Resultaatdetails en statistieken bekijken |
| Domein | Ouder/voogd / Resultaten en geschiedenis |
| Primaire actor | Ouder/voogd |
| Secundaire actor(en) | Frontend, backend, database, module-renderer |
| Rolcontext | Actieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Resultaatdetail, Statistieken, Vraagdetails |
| Gerelateerde usecases | UC-OVG-RES-004, UC-OVG-RES-006, UC-LLN-RES-002, UC-DOC-RES-004 |
| Primaire entiteiten | ExerciseRuns, ExerciseRunProgress, ExerciseModulePayload |
| Secundaire entiteiten / events | GuardianResultStatisticsReadModel |
| Gerelateerde popups | POP-OVG-RESULT-DETAIL-NOT-AVAILABLE |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een ouder/voogd binnen een afgeronde run de vraagdetails en statistiekensectie bekijkt. De gegevens zijn gelijkwaardig aan de historische resultaatweergave voor de leerling, maar worden via ouder-/voogdautorisatie ontsloten.
De statistieken worden gelezen uit opgeslagen runvelden of consistent afgeleid uit opgeslagen rungegevens. De frontend herberekent geen scores vanuit clientstate en de ouder/voogd kan geen antwoorden corrigeren.
Uitgangspunten
- Statistiekweergave is read-only.
- Opgeslagen uniforme runvelden zijn leidend.
- Vraagdetails mogen alleen zichtbaar zijn voor gekoppelde kinderen.
- Ouder/voogd kan geen score of antwoord wijzigen.
- Module-specifieke weergave blijft ondersteunend aan de historische runbron.
3. Scope
Deze usecase beschrijft:
- tonen van vraag-antwoordregels;
- tonen van goed/fout/Geen idee;
- tonen van gemiddelde tijd, mediaan, doorlooptijd en uitschieters waar beschikbaar;
- tonen van juiste antwoord bij fout of Geen idee;
- veilig omgaan met module-specifieke representatie.
Deze usecase beschrijft niet:
- herberekenen van statistieken als normale schermactie;
- antwoorden aanpassen;
- nieuwe run maken;
- moduleconfiguratie bewerken.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Leerling / Resultaten | De historische run, statistiekvelden en PDF-bron blijven dezelfde bron als in het leerlingdomein; de ouder-/voogdweergave voegt alleen autorisatie en selectie op oudercontext toe. |
| Docent / Resultaten | Docentresultaten blijven beperkt tot de eigen docentcontext; ouder/voogd mag juist alle niveaus van het gekoppelde kind zien. |
| Generiek / Relaties | Relatievorming, uitnodigingen en algemene relatie-lifecycle blijven buiten deze resultaatusecases. |
| Database / Readmodels | Tellers, filters en overzichten zijn afgeleide readmodels boven bestaande relatie-, niveau-, oefening- en rungegevens. |
4. Pre-condities
| 001 | Er is een geautoriseerde afgeronde run geopend. | | 002 | De run bevat opgeslagen detail- of payloadgegevens. | | 003 | De uniforme totalen en statistiekvelden zijn beschikbaar of veilig afleidbaar. | | 004 | De ouder-/voogdrelatie is nog actief. |
5. Post-condities
| 001 | Vraagdetails en statistieken zijn read-only getoond. | | 002 | Geen antwoord, score of statistiek is gewijzigd. | | 003 | Ontbrekende detaildata is veilig afgehandeld. | | 004 | PDF-export kan dezelfde historische bron gebruiken. |
6. Trigger
De ouder/voogd opent de detail- of statistiekensectie binnen een resultaatdetail.
7. Normale processtroom
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Ouder/voogd | Opent statistiekensectie | Frontend vraagt uitgebreid detail op | RunId |
| 2 | Backend | Herhaalt autorisatiecontrole | Run blijft toegestaan | UserRelationships |
| 3 | Backend | Leest vraagdetails en statistiekvelden | Readmodel wordt opgebouwd | ExerciseRunProgress + ExerciseRuns |
| 4 | Module-renderer | Levert veilige representatie waar nodig | Complexe notatie wordt veilig weergegeven | Module renderer |
| 5 | Frontend | Toont vraagdetails | Ouder/voogd ziet antwoorden en status | Readmodel |
| 6 | Frontend | Toont statistieken | Gemiddelden en uitschieters zichtbaar | Stored statistics |
7.1 Scherm- en routegedrag
- De resultatenroutes worden altijd opnieuw server-side geautoriseerd.
- De ouder-/voogdweergave toont read-only informatie over gekoppelde kinderen.
- De pagina gebruikt functionele namen en context, geen technische identifiers als herkenningsmiddel.
- Oude filters, routeparameters of browserstate mogen geen toegang afdwingen.
8. Alternatieve en exceptionele processtromen
| 001 | Vraagpayload bevat modulespecifieke inhoud die niet volledig renderbaar is: generieke veilige representatie wordt gebruikt. | | 002 | Statistiekveld ontbreekt door historisch record: backend toont beschikbare velden zonder de run te overschrijven. | | 003 | Relatie vervalt tijdens bekijken: vervolgverzoeken worden geweigerd. | | 004 | Run is niet afgerond: statistiekensectie wordt niet getoond. | | 005 | PDF-export is beschikbaar, maar gebruikt dezelfde autorisatie opnieuw. |
8.1 Afhandeling van verouderde of ongeldige clientstate
- De backend herhaalt autorisatie bij iedere raadpleeg-, filter-, export- of liveactie.
- Oude routeparameters, browserselecties en clientcache worden genegeerd wanneer de actuele server-side context geen toegang geeft.
- De frontend mag het scherm herstellen door het actuele readmodel opnieuw op te vragen.
9. Business rules
| 001 | Voor schermweergave zijn opgeslagen runvelden leidend. | | 002 | Vraagdetails worden alleen getoond voor geautoriseerde runs. | | 003 | Geen idee telt functioneel als fout en moet als afzonderlijke markering zichtbaar kunnen zijn. | | 004 | Module-specifieke rendering mag geen vrije HTML of actieve inhoud introduceren. | | 005 | Statistiekenweergave mag geen herstel- of herberekenactie triggeren. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Vraagregels | Vraagnummer, opgave, gegeven antwoord, juiste antwoord en resultaatstatus. | Alleen voor geautoriseerde afgeronde run. |
| Statistieken | Gemiddelde, mediaan, totale doorlooptijd, uitschieters en grenzen indien opgeslagen. | Geen clientside herberekening. |
| Geen idee | Aparte markering naast fouttelling. | Alleen tonen wanneer relevant voor de run. |
| Moduleweergave | Veilige representatie voor complexe notatie. | Geen actieve inhoud. |
9.2 Autorisatie- en privacygrenzen
- De zichtbare dataset wordt altijd server-side beperkt tot actieve ouder-/voogdrelaties.
- Een gebruiker met gecombineerde rollen krijgt binnen deze routes geen impliciete docent- of beheerderinzage.
- Resultaat- en livegegevens van niet-gekoppelde kinderen worden nooit gedeeltelijk getoond.
10. Datavalidatie
| 001 | Run moet nog steeds geautoriseerd zijn. | | 002 | Run moet afgerond zijn. | | 003 | Vraagdetails moeten bij dezelfde run horen. | | 004 | Module-renderhulp mag alleen veilige output leveren. | | 005 | Statistiekvelden moeten consistent bij de runcontext horen. |
11. Datamutaties en events
| 001 | Geen functionele datamutaties. | | 002 | Detail- en statistiekweergave worden opgebouwd uit bestaande rungegevens. |
12. Geen datamutaties
| 001 | Antwoorden worden niet gewijzigd. | | 002 | Scores worden niet gewijzigd. | | 003 | Statistiekvelden worden niet herberekend of overschreven. | | 004 | Moduleconfiguratie wordt niet gewijzigd. |
13. State diagram
Niet van toepassing. Deze usecase toont read-only detail- en statistiekgegevens en wijzigt geen persistent statusobject.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-OVG-RESULT-DETAIL-NOT-AVAILABLE | Wordt gebruikt wanneer detail- of statistiekgegevens veilig niet beschikbaar zijn. |
Popupteksten, knopteksten, inputlabels en themakeuzes worden niet in deze usecase gedupliceerd. Het popupregister en de popupthemes blijven bronhoudend.
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| 001 | Resultaatdetails voor ouder/voogd tonen dezelfde inhoudelijke runbron als leerlingresultaten. | | 002 | Statistieken worden niet vanuit clientstate berekend. | | 003 | Module-specifieke weergave mag ondersteunen, maar niet de generieke autorisatie- en opslagregels vervangen. |
18.1 Impact voor database-informatie en ontwerpbronnen
| 001 | Autorisatiematrix moet ouder-/voogdraadpleging onderscheiden van docentraadpleging. | | 002 | Usecase-scherm-matrix moet de betrokken ouder-/voogdschermen koppelen aan deze usecase. | | 003 | Usecase-requirement-matrix moet de requirements uit hoofdstuk 19 opnemen. | | 004 | Readmodeldefinities voor ouder-/voogdresultaten moeten alle niveaus van het gekoppelde kind omvatten. |
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.
Er zijn voor deze usecase geen aparte requirement-afleidingen vastgelegd. De procesbeschrijving blijft broncontext voor de SRS-traceability.