UC-LLN-RES-001 — Resultaat na afronding bekijken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-LLN-RES-001 |
| Naam | Resultaat na afronding bekijken |
| Domein | Leerling / Resultaten, statistieken, geschiedenis en PDF-export |
| Primaire actor | Leerling |
| Secundaire actor(en) | OefenHub frontend, OefenHub backend, database, technische oefenmodule |
| Rolcontext | Ingelogde leerling die een exercise run heeft afgerond of vanuit een toegestane resultaatcontext terugkeert. |
| Betrokken schermen | Oefenscherm, oefeningpagina, resultaatpopup, resultaatdetailcomponent, resultaatacties. |
| Gerelateerde usecases | UC-LLN-OEF-008 — Oefening afronden; UC-LLN-RES-002 — Resultaatstatistieken bekijken; UC-LLN-RES-003 — Oefening opnieuw maken; UC-LLN-RES-004 — Resultaat als PDF downloaden; UC-LLN-HIS-003 — Resultaatdetail vanuit geschiedenis openen; UC-LLN-DEL-001 — Oefening delen met vriend |
| Primaire entiteiten | ExerciseRuns, opgeslagen vraag- en antwoordpayload, uniforme runstatistieken |
| Secundaire entiteiten / events | Exercises, Categories, Levels, ExerciseModules, resultaatviewmodel |
| Gerelateerde popups | Resultaatpopup |
| Popupregister | Niet van toepassing als normale systeem-popup; resultaatpopup is een resultaatcomponent met eigen renderstructuur |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een leerling na afronding van een oefening het resultaat bekijkt. De resultaatweergave is een grote, scrollbare resultaatcomponent of resultaatpopup die de samenvatting van de afgeronde exercise run toont, aangevuld met de vraag- en antwoorddetails en de beschikbare vervolgacties.
De resultaatweergave gebruikt de historisch opgeslagen runcontext. De datum in de samenvatting is het afrondmoment van de exercise run. De totalen voor aantal vragen, goed, fout en Geen idee komen uit de uniforme runvelden die tijdens of bij afronding zijn opgeslagen. De vraagdetails worden gelezen uit de opgeslagen vraag- en antwoorddata van dezelfde run.
Deze usecase is primair een lees- en presentatieflow. Het opnieuw maken van de oefening, het downloaden van PDF en het delen van de oefening zijn vervolgacties met eigen usecases. Het sluiten van de resultaatweergave is onderdeel van deze usecase, omdat daarmee alleen de component wordt gesloten en geen domeinmutatie ontstaat.
DRY-afbakening: het berekenen van statistieken hoort bij afronding en het statistiekendomein. Deze usecase toont het resultaat en verwijst voor de exacte statistiekendefinities naar UC-LLN-RES-002. PDF-opmaakregels worden niet gedupliceerd, maar horen bij UC-LLN-RES-004.
3. Scope
Deze usecase omvat wel:
- openen van de resultaatweergave direct na afronding
- openen van dezelfde resultaatweergave vanuit een toegestane resultaatcontext
- tonen van de resultaatkop met titel en context
- tonen van de samenvatting van gebruiker, datum, aantal vragen, goed en fout
- tonen van
Geen ideewanneer de oefening dit ondersteunt of wanneer de run zulke markeringen bevat - tonen van duplicaatinformatie wanneer
DuplicateOfgevuld is - tonen van de resultatentabel met vraag, gegeven antwoord, juiste antwoord en resultaat
- tonen van markeringsinformatie voor
Geen idee - aanbieden van vervolgacties die in andere usecases worden afgehandeld
- sluiten van de resultaatweergave
- veilige afhandeling wanneer resultaatdata niet toegankelijk of niet beschikbaar is
Deze usecase omvat niet:
- afronden van de exercise run zelf
- herberekenen van eindstatistieken als normale route
- genereren van een nieuwe duplicate run
- PDF-generatie
- delen met vrienden
- wijzigen van oefeningconfiguratie
- verwijderen van geschiedenis
- docent-testresultaten als permanente geschiedenis
- beheerweergaven voor resultaten
- live-meekijken tijdens de oefening
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd als leerling of heeft een geldige resultaatcontext vanuit dezelfde sessie. |
| PRE-002 | De exercise run bestaat. |
| PRE-003 | De exercise run is afgerond of formeel resultaatwaardig. |
| PRE-004 | De leerling is eigenaar van de run of heeft via de gekozen route recht op inzage. |
| PRE-005 | De uniforme runvelden voor samenvatting zijn beschikbaar. |
| PRE-006 | De opgeslagen vraag- en antwoorddetails zijn beschikbaar voor resultaatweergave. |
| PRE-007 | De gekoppelde oefening-, categorie- en niveaucontext is historisch herleidbaar. |
| PRE-008 | De resultaatcomponent kan de inhoud scrollbaar en leesbaar tonen. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De leerling heeft het resultaat van de afgeronde run kunnen bekijken. |
| POST-002 | Er is geen inhoudelijke domeinmutatie uitgevoerd door alleen bekijken. |
| POST-003 | De run blijft ongewijzigd afgerond. |
| POST-004 | De resultaatweergave toont dezelfde brondata als geschiedenis en PDF-export. |
| POST-005 | Vervolgacties zijn alleen beschikbaar wanneer de bijbehorende voorwaarden gelden. |
| POST-006 | Bij sluiten keert de leerling terug naar de relevante oefeningpagina of vorige context. |
| POST-007 | Niet-toegankelijke of ontbrekende resultaatdata is veilig geblokkeerd. |
| POST-008 | Er zijn geen relaties, autorisaties, berichten, meldingen of profielinstellingen gewijzigd. |
6. Trigger
De usecase start wanneer de leerling na afronding van een oefening automatisch naar het resultaat wordt geleid, of wanneer de leerling vanuit een resultaatwaardige context het resultaat van een afgeronde run opent.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Leerling | Oefenscherm | Rondt de laatste vraag af en kiest Bekijk resultaat. | Oefenflow vraagt resultaatcontext op. | UC-LLN-OEF-008. |
| 2 | OefenHub frontend | Resultaatroute | Stuurt runcontext naar backend of opent resultaatcomponent met bekende run-id. | Backendvalidatie wordt gestart. | ExerciseRunId. |
| 3 | OefenHub backend | Routeguard | Controleert sessie en leerlingcontext. | Alleen geldige gebruikerscontext gaat door. | Server-side autorisatie. |
| 4 | OefenHub backend | Resultaatservice | Controleert dat de run bestaat. | Onbekende run wordt geblokkeerd. | ExerciseRuns.Id. |
| 5 | OefenHub backend | Resultaatservice | Controleert eigenaar of toegestane inzagecontext. | Onbevoegde inzage wordt geweigerd. | Eigen run of expliciete toegangscontext. |
| 6 | OefenHub backend | Resultaatservice | Controleert dat de run afgerond is. | Alleen afgeronde runs krijgen volledige resultaatweergave. | CompletedAtUtc of equivalente afrondstatus. |
| 7 | OefenHub backend | Resultaatservice | Laadt uniforme samenvattingsvelden. | Aantal vragen, goed, fout en aantal Geen idee zijn beschikbaar wanneer relevant. | Runvelden zijn leidend. |
| 8 | OefenHub backend | Resultaatservice | Laadt historische context van niveau, categorie, oefening en module. | Subtitel en context kunnen worden getoond. | Historische runcontext. |
| 9 | OefenHub backend | Resultaatservice | Laadt vraag- en antwoorddetails. | Resultatentabel kan worden opgebouwd. | Payload / voortgangsdata. |
| 10 | OefenHub backend | Resultaatservice | Bepaalt of duplicaatmelding nodig is. | Duplicaatinformatie wordt voorbereid wanneer DuplicateOf gevuld is. | Duplicate chain. |
| 11 | OefenHub backend | Resultaatservice | Bepaalt beschikbare vervolgacties. | Knoppen worden aan of uit gezet. | Hermaakbaar, downloadbaar, deelbaar. |
| 12 | OefenHub frontend | Resultaatpopup | Toont titel Resultaat oefening. | Leerling ziet resultaatcomponent. | Vaste titel. |
| 13 | OefenHub frontend | Resultaatpopup | Toont subtitel met categorie en oefening. | Context is direct herkenbaar. | Historisch geldige naamgeving. |
| 14 | OefenHub frontend | Samenvatting | Toont naam gebruiker, afronddatum, aantal vragen, goed en fout. | Leerling ziet kernresultaat. | Datum is afrondmoment. |
| 15 | OefenHub frontend | Samenvatting | Toont aantal Geen idee wanneer relevant. | Markeringen zijn zichtbaar als onderdeel van resultaat. | Telt functioneel als fout. |
| 16 | OefenHub frontend | Resultatentabel | Toont per vraag opgave, gegeven antwoord, juiste antwoord en resultaat. | Leerling kan de eigen antwoorden controleren. | Volledige zichtbare details. |
| 17 | OefenHub frontend | Resultatentabel | Toont markering bij Geen idee. | Gemarkeerde vragen zijn herkenbaar. | Donkergeel vraagteken of gelijkwaardige markering. |
| 18 | OefenHub frontend | Statistiekensectie | Toont statistiekensamenvatting via UC-LLN-RES-002. | Leerling ziet tijd- en spreidingsinformatie. | Geen herberekening in frontend. |
| 19 | OefenHub frontend | Resultaatacties | Toont beschikbare acties. | Leerling kan opnieuw maken, PDF downloaden, delen of sluiten waar toegestaan. | Vervolgusecases. |
| 20 | Leerling | Resultaatpopup | Kiest Sluit resultaat. | Resultaatcomponent sluit. | Geen domeinmutatie. |
| 21 | OefenHub frontend | Oefeningpagina | Toont de relevante oefeningpagina of vorige context. | Leerling kan verder navigeren. | Routecontext. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | Sessie is verlopen | Routeguard verwijst naar login of publieke context. | Routeguardafhandeling | Geen |
| ALT-002 | 4 | Run bestaat niet | Resultaatweergave wordt niet geopend. | Niet-beschikbaarmelding | Geen |
| ALT-003 | 5 | Leerling is geen eigenaar | Backend weigert inzage. | Toegang geweigerd | Geen |
| ALT-004 | 6 | Run is niet afgerond | Volledige resultaatweergave wordt geblokkeerd; leerling gaat terug naar oefening of hervatten. | Componentmelding | Geen |
| ALT-005 | 7 | Uniforme samenvatting ontbreekt | Resultaatweergave wordt veilig geblokkeerd of toont herstelmelding volgens technische keuze. | Componentmelding | Geen normale mutatie |
| ALT-006 | 9 | Vraagdetails zijn beschadigd of ontbreken | Resultaatdetail kan niet volledig worden getoond; systeem toont veilige foutafhandeling. | Componentmelding | Geen |
| ALT-007 | 10 | DuplicateOf verwijst naar niet meer toegankelijke bron | Duplicaatmelding wordt beperkt tot beschikbare historische informatie. | Niet van toepassing | Geen |
| ALT-008 | 11 | Module is verwijderd | Maak deze oefening opnieuw wordt niet beschikbaar gemaakt. | Knop verborgen of uitgeschakeld | Geen |
| ALT-009 | 11 | Delen is niet toegestaan | Deelactie wordt niet getoond of wordt geblokkeerd door deelflow. | Deelflowmelding | Geen in deze usecase |
| ALT-010 | 18 | Statistiekvelden ontbreken | Statistiekensectie toont alleen beschikbare gegevens of foutafhandeling. | Componentmelding | Geen |
| ALT-011 | 20 | Leerling sluit via kruis | Dezelfde sluitlogica wordt uitgevoerd. | Niet van toepassing | Geen |
| ALT-012 | 20 | Browser wordt gesloten | Resultaatweergave sluit zonder domeinmutatie. | Niet van toepassing | Geen |
| ALT-013 | 19 | Leerling kiest PDF | UC-LLN-RES-004 start. | Niet van toepassing | Buiten deze usecase |
| ALT-014 | 19 | Leerling kiest opnieuw maken | UC-LLN-RES-003 start. | Niet van toepassing | Buiten deze usecase |
| ALT-015 | 19 | Leerling kiest delen | Deelflow start wanneer beschikbaar. | Niet van toepassing | Buiten deze usecase |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Resultaatweergave is alleen beschikbaar voor afgeronde of formeel resultaatwaardige exercise runs. |
| BR-002 | De leerling mag uitsluitend eigen resultaten bekijken, tenzij een andere usecase expliciet inzagerecht geeft. |
| BR-003 | De datum in de resultaatweergave is standaard het afrondmoment van de run. |
| BR-004 | Uniforme totalen worden gelezen uit opgeslagen runvelden en niet opnieuw door de frontend berekend. |
| BR-005 | Vraagdetails worden gelezen uit de historische rungegevens. |
| BR-006 | Geen idee wordt zichtbaar gemaakt wanneer de run zulke markeringen bevat. |
| BR-007 | Vragen met Geen idee tellen als fout. |
| BR-008 | Duplicaatinformatie wordt getoond wanneer DuplicateOf of vergelijkbare duplicaatrelatie aanwezig is. |
| BR-009 | Alleen het bekijken van resultaat wijzigt geen domeindata. |
| BR-010 | Het sluiten van de resultaatweergave wijzigt de run niet. |
| BR-011 | Resultaatweergave moet dezelfde inhoudelijke bron gebruiken als geschiedenis en PDF-export. |
| BR-012 | Technische identifiers worden niet als herkenningsmiddel aan de leerling getoond. |
| BR-013 | Vervolgacties worden alleen beschikbaar gemaakt wanneer hun eigen voorwaarden gelden. |
| BR-014 | Een verwijderde technische module blokkeert opnieuw maken wanneer de historische run niet meer uitvoerbaar is. |
| BR-015 | Resultaatweergave moet scrollbaar blijven wanneer de inhoud groter is dan de viewport. |
| BR-016 | De tabelkop van de resultaatweergave blijft functioneel herkenbaar bij scrollbare inhoud. |
| BR-017 | De resultaatweergave toont geen beheer- of auditinformatie. |
| BR-018 | De resultaatweergave wijzigt geen relaties, autorisaties, berichten, meldingen of profielinstellingen. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
ExerciseRunId | Moet bestaan en resultaatwaardig zijn. |
ExerciseRuns.UserId | Moet overeenkomen met de leerling of een toegestane inzagecontext. |
CompletedAtUtc | Moet gevuld zijn voor normale resultaatweergave. |
TotalQuestions | Moet groter zijn dan nul. |
CorrectCount | Mag niet groter zijn dan totaal aantal vragen. |
IncorrectCount | Mag niet groter zijn dan totaal aantal vragen. |
DunnoCount | Mag niet groter zijn dan totaal aantal vragen en telt binnen fout. |
| Vraagdetails | Moeten renderbaar zijn zonder actieve code of onveilige inhoud. |
| Juiste antwoorden | Moeten beschikbaar zijn volgens opgeslagen runcontext. |
| Historische naamgeving | Moet uit runcontext of gekoppelde historische gegevens worden bepaald. |
| Vervolgacties | Moeten server-side beschikbaarheidscontrole hebben. |
| Resultaatcomponent | Moet veilig omgaan met lange tekst, meerregelige antwoorden en ontbrekende optionele data. |
11. Datamutaties en events
| Stap | Type | Entiteit / gegevensbron | Mutatie |
|---|---|---|---|
| 2 | Read | ExerciseRuns | Runcontext wordt opgehaald. |
| 7 | Read | ExerciseRuns | Uniforme resultaatvelden worden gelezen. |
| 8 | Read | Exercises, Categories, Levels | Historische context wordt gelezen waar die voor weergave nodig is. |
| 9 | Read | Vraag- en antwoordpayload | Vraagdetails worden gelezen. |
| 11 | Readmodel | Actiebeschikbaarheid | Beschikbare vervolgacties worden server-side bepaald. |
| 12 | Presentatie | Resultaatviewmodel | De resultaatweergave wordt opgebouwd uit bestaande rundata. |
Alleen bekijken en sluiten van het resultaat registreert geen functioneel domeinevent en wijzigt geen domeindata.
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
ExerciseRuns | Bekijken van resultaat wijzigt de run niet. |
ExerciseRunProgress | Vraagvoortgang is al vastgelegd. |
Users | Resultaatweergave wijzigt geen accountgegevens. |
UserSettings | Resultaatweergave wijzigt geen voorkeuren. |
UserRoles | Rollen blijven ongewijzigd. |
StudentLevelAuthorizations | Autorisaties worden alleen gecontroleerd, niet gewijzigd. |
UserRelationships | Relaties zijn niet betrokken. |
SystemMessages | Er wordt geen systeembericht aangemaakt. |
PrivateMessageThreads | Er wordt geen privébericht aangemaakt. |
Tickets | Er wordt geen melding aangemaakt. |
| PDF-bestand | PDF wordt pas gegenereerd in UC-LLN-RES-004. |
| Duplicate run | Opnieuw maken gebeurt pas in UC-LLN-RES-003. |
13. State diagram
Niet van toepassing als persistent statusmodel. De exercise run is vóór deze usecase al afgerond. De resultaatweergave kent alleen tijdelijke UI-toestand en wijzigt geen runstatus.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Resultaat openen na afronding
16.2 Resultaat sluiten
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Resultaatweergave | Resultaatpopup is een resultaatcomponent, geen popupregister-popup. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Functioneel Ontwerp beschrijft geschiedenis, filters, resultaatdetail, statistieken, opnieuw maken en PDF-download vanuit leerlingcontext. |
| Technisch Ontwerp | Technisch 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 Specification | Software Requirements Specification bevat centrale eisen en acceptatiecriteria voor resultaten, geschiedenis, statistieken, PDF-export en autorisatie op historische data. |
| Database-informatie | Database-informatie blijft bron voor runresultaten, voortgangsrecords, snapshots en exportbrondata; normale PDF-downloads introduceren geen permanente PDF-tabel. |
| Ontwerpbronnen | Ontwerpbronnen 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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-LLN-RES-001-001 | SRS-LRN-006 AC-LRN-006 | Na afronding van een exercise run een resultaatweergave kunnen tonen aan de eigenaar van de run |
REQ-UC-LLN-RES-001-002 | SRS-AUTH-001 SRS-LRN-006 AC-AUTH-001 AC-LRN-006 | Resultaatinzage server-side autoriseren |
REQ-UC-LLN-RES-001-003 | SRS-LRN-006 AC-LRN-006 | De resultaatdatum baseren op het afrondmoment van de exercise run |
REQ-UC-LLN-RES-001-004 | SRS-LRN-009 AC-LRN-009 | Uniforme totalen tonen voor aantal vragen, goed en fout |
REQ-UC-LLN-RES-001-005 | SRS-LRN-004 AC-LRN-004 | Geen idee-markeringen tonen wanneer die in de run voorkomen |
REQ-UC-LLN-RES-001-006 | SRS-LRN-003 AC-LRN-003 | Per vraag de opgave, het gegeven antwoord, het juiste antwoord en het resultaat tonen |
REQ-UC-LLN-RES-001-007 | SRS-LRN-009 AC-LRN-009 | Duplicaatinformatie tonen wanneer de run onderdeel is van een duplicaatreeks |
REQ-UC-LLN-RES-001-008 | SRS-LRN-009 AC-LRN-009 | Alleen vervolgacties tonen of toestaan wanneer de bijbehorende voorwaarden gelden |
REQ-UC-LLN-RES-001-009 | SRS-LRN-006 AC-LRN-006 | Bij alleen bekijken van resultaat geen domeindata wijzigen |
REQ-UC-LLN-RES-001-010 | SRS-AUTH-004 SRS-ACC-003 SRS-ACC-005 SRS-LRN-006 SRS-NFR-SEC-001 SRS-NFR-ACC-001 AC-AUTH-004 AC-ACC-003 AC-ACC-005 AC-LRN-006 AC-NFR-SEC-001 AC-NFR-ACC-001 | Veilig omgaan met ontbrekende of niet-toegankelijke resultaatdata |
REQ-UC-LLN-RES-001-011 | SRS-LRN-006 AC-LRN-006 | De resultaatweergave kunnen sluiten zonder domeinmutatie |
REQ-UC-LLN-RES-001-012 | SRS-LRN-006 SRS-PDF-001 SRS-NFR-AUD-001 AC-LRN-006 AC-PDF-001 AC-NFR-AUD-001 | Resultaatweergave, geschiedenis en PDF-export baseren op dezelfde opgeslagen runbron |