UC-OVG-RES-001 — Resultatensamenvatting van kind bekijken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-RES-001 |
| Naam | Resultatensamenvatting van kind bekijken |
| Domein | Ouder/voogd / Resultaten en geschiedenis |
| Primaire actor | Ouder/voogd |
| Secundaire actor(en) | Frontend, backend, database |
| Rolcontext | Actieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Kindinformatie, Resultatenoverzichtsamenvatting, Resultatensamenvatting kind |
| Gerelateerde usecases | UC-OVG-KIND-003, UC-OVG-KIND-004, UC-OVG-FP-004, UC-OVG-RES-002 |
| Primaire entiteiten | UserRelationships, Users, ExerciseRuns, Levels, Categories, Exercises |
| Secundaire entiteiten / events | GuardianResultSummaryReadModel |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een ouder/voogd voor één geselecteerd gekoppeld kind een compacte resultatensamenvatting bekijkt. De samenvatting geeft inzicht in gemaakte oefeningen over alle niveaus van het kind en gebruikt geen docentgerichte beperking.
De samenvatting is read-only en wordt server-side opgebouwd uit afgeronde exercise runs. De ouder/voogd kan vanuit deze samenvatting doorklikken naar de volledige geschiedenis, maar kan geen oefening starten, resultaat wijzigen of oefening namens het kind opnieuw maken.
Uitgangspunten
- De ouder/voogd ziet resultaten van alle niveaus van het gekoppelde kind.
- Alleen afgeronde runs tellen mee in resultaat- en geschiedenisoverzichten.
- De samenvatting is een readmodel en geen aparte brondata.
- Niet-afgeronde runs en docenttestruns worden niet als afgerond resultaat getoond.
- Raadplegen veroorzaakt geen mutaties in run, voortgang of statistieken.
3. Scope
Deze usecase beschrijft:
- bepalen van het geselecteerde kind binnen ouder-/voogdcontext;
- ophalen van afgeronde runs over alle niveaus van dat kind;
- tonen van totaal aantal gemaakte oefeningen;
- tonen van uitsplitsing per niveau en categorie;
- aanbieden van route naar volledige geschiedenis.
Deze usecase beschrijft niet:
- nieuwe oefening starten of genereren;
- resultaten herberekenen vanuit clientstate;
- docentcontext of docentniveau-autorisatie toepassen als beperking;
- oefengeschiedenis verwijderen.
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 ingelogde gebruiker met actieve ouder-/voogdcontext. | | 002 | Er is precies één kind geselecteerd. | | 003 | Er bestaat een actieve ouder-/voogdrelatie met dit kind. | | 004 | Er zijn nul of meer afgeronde runs beschikbaar. |
5. Post-condities
| 001 | De samenvatting is getoond op basis van actuele server-side autorisatie. | | 002 | Geen exercise run is gewijzigd. | | 003 | Geen relatie- of autorisatierecord is gewijzigd. | | 004 | Lege toestanden zijn veilig weergegeven wanneer er nog geen afgeronde runs zijn. |
6. Trigger
De ouder/voogd opent de kindinformatie of het resultatenblok van een geselecteerd kind.
7. Normale processtroom
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Ouder/voogd | Opent kindinformatie | Frontend vraagt resultatensamenvatting op | Kindselectie |
| 2 | Backend | Controleert ouder-/voogdrelatie | Alleen gekoppeld kind wordt toegestaan | UserRelationships |
| 3 | Backend | Selecteert afgeronde runs | Dataset bevat alle niveaus van kind | ExerciseRuns.CompletedAtUtc |
| 4 | Backend | Groepeert totalen | Totaal, niveau en categorie worden berekend | Levels, Categories |
| 5 | Frontend | Toont compacte samenvatting | Ouder/voogd ziet resultatenoverzicht | GuardianResultSummaryReadModel |
| 6 | Ouder/voogd | Kiest eventueel Bekijk geschiedenis | Navigatie naar geschiedenis start | UC-OVG-RES-002 |
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 | Geen afgeronde runs: de samenvatting toont een geldige lege toestand met nulwaarden. | | 002 | Relatie is intussen beëindigd: backend blokkeert het resultaat en verwijdert oude clientselectie uit de weergave. | | 003 | Kind bestaat niet of is geanonimiseerd: frontend toont veilige niet-beschikbaarafhandeling. | | 004 | Run verwijst naar historisch niveau of categorie: opgeslagen historische context blijft leidend voor weergave. | | 005 | Technische queryfout: de samenvatting wordt niet gedeeltelijk met onbetrouwbare totalen getoond. |
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 | Een ouder/voogd ziet alle resultaten van alle niveaus van gekoppelde kinderen. | | 002 | Alleen afgeronde runs tellen mee in de samenvatting. | | 003 | Docenttestruns worden uitgesloten. | | 004 | De samenvatting mag geen detailgegevens tonen van niet-gekoppelde kinderen. | | 005 | De samenvatting is read-only en mag geen runstatus wijzigen. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Totaal aantal oefeningen | Aantal afgeronde ExerciseRuns van het kind binnen alle niveaucontexten. | Niet-afgeronde runs en testruns uitgesloten. |
| Niveau-uitsplitsing | Groepering op historisch of opgeslagen LevelId/LevelSnapshot. | Autorisatie-intrekking door docent beperkt ouder/voogd niet zolang ouderrelatie actief is. |
| Categorie-uitsplitsing | Groepering onder niveau op categoriecontext van de run. | Latere categoriemigratie herschrijft historische runs niet. |
| Recent resultaat | Laatste afgeronde run op afrondmoment. | Lopende runs tellen niet als recent afgerond resultaat. |
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 | KindId moet server-side bij de ouder-/voogdcontext horen. | | 002 | RelationshipType moet ouder-/voogdrelatie zijn. | | 003 | Relatie moet actief zijn. | | 004 | Runselectie moet beperkt zijn tot het geselecteerde kind. | | 005 | Alleen afgeronde, niet-test runs worden samengevat. |
11. Datamutaties en events
| 001 | Geen functionele datamutaties. | | 002 | De readmodelopbouw wijzigt geen brondata. |
12. Geen datamutaties
| 001 | ExerciseRuns worden niet aangemaakt, gewijzigd of verwijderd. | | 002 | ExerciseRunProgress wordt niet gewijzigd. | | 003 | UserRelationships en niveauautorisaties worden niet gewijzigd. | | 004 | PDF-export wordt niet gestart vanuit deze samenvatting. |
13. State diagram
Niet van toepassing. Deze usecase toont een read-only samenvatting en wijzigt geen persistent statusobject.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
Niet van toepassing. Deze usecase gebruikt geen popupregister-popup als functionele stap.
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| 001 | Ouder-/voogdresultaten moeten over alle niveaus van het gekoppelde kind beschikbaar zijn. | | 002 | De samenvatting op kindniveau gebruikt dezelfde historische runbron als leerlingresultaten. | | 003 | De frontpage en kindinformatie tonen alleen compacte totalen; volledige geschiedenis is een aparte route. |
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.