7. Geschiedenis details
7.1 Schermafbeelding

7.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-LLN-06-01 |
| Schermnaam | Geschiedenis — Details |
| Doelgroep / onderdeel | Leerling |
| Bronbestand | oefenhub_leerling_06_geschiedenis_details_v2_1.html |
| Mockupversie | V2.1 |
| Screenshotbestand | oefenhub_leerling_06_geschiedenis_details_v2_1.png |
| Processtap / context | Leerling opent vanuit het oefeninggebonden geschiedenisoverzicht één afgeronde oefenrun en bekijkt de volledige resultaatdetails in een fullscreen modal/popup. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | Dit scherm is een modal over een onderliggende pagina en heeft daarom geen eigen breadcrumb of footer. Alle zichtbare runwaarden, vragen, antwoorden, statistieken, duplicaatmeldingen en deelopties zijn dynamisch en afhankelijk van de geselecteerde afgeronde exercise run. |
| Route / URL-patroon | Functioneel geopend vanuit 06_geschiedenis_overzicht na selectie van een afgeronde run; technisch kan dit via modalstate, queryparameter of interne route-id worden gerealiseerd zolang server-side autorisatie op runniveau wordt afgedwongen. |
| Autorisatie / vereiste rol-context | Actieve leerlingcontext; de geselecteerde run moet horen bij de ingelogde leerling of bij een voor deze leerling toegankelijke ontvangen gedeelde oefening. |
| Primair domeinobject / hoofdentiteit | Afgeronde ExerciseRuns met bijbehorende vraag-/antwoorddetails en opgeslagen runstatistieken. |
| Gerelateerde schermen / navigatie | 04_oefening, 05_start_nieuwe, 06_geschiedenis_overzicht, 08_geschiedenis_alles, 09_gedeelde_oefening_overzicht, oefen_modules/intro. |
| Data-karakter | Uitlees- en actiescherm voor één historische run; openen en sluiten wijzigen geen rungegevens. Acties zoals opnieuw maken, delen en PDF-download hebben elk eigen procesregels. |
7.3 Functionele beschrijving
Dit scherm toont de detailweergave van één geselecteerde, afgeronde oefenrun. In de reguliere flow opent de leerling vanuit het oefeninggebonden geschiedenisoverzicht een runregel. De onderliggende overzichtspagina blijft bestaan, maar er wordt een fullscreen modal/popup overheen geplaatst met de volledige resultaatweergave van die run.
De modal toont bovenaan de titel Resultaat oefening en daaronder de historische categorie- en oefeningcontext, bijvoorbeeld <categorie> - <oefening>. Deze waarden zijn dynamisch en moeten worden afgeleid uit de historische runcontext. Wanneer een oefening of categorie later is hernoemd, gemigreerd of anders is gewijzigd, blijft de resultaatweergave gebaseerd op de context die voor de run of het gedeelde record historisch relevant is.
Onder de kop staat een samenvattingsblok met onder andere:
- naam van de leerling;
- afrondmoment van de run;
- aantal vragen / oefeningen in deze run;
- aantal goed;
- aantal fout;
- aantal gemarkeerd als Geen idee, voor zover deze optie in de run beschikbaar was.
Daarna volgt de sectie Resultaten per vraag. Deze tabel toont de volledige inhoud van de geselecteerde run in runvolgorde. De inhoud van de vraag, het gegeven antwoord en het juiste antwoord is moduleafhankelijk. De generieke schermdocumentatie beschrijft daarom alleen de container, kolommen, autorisatie, opslag- en uitleesregels. De exacte vraagrepresentatie, antwoordstructuur en eventuele notatiewijze worden per technische oefenmodule uitgewerkt in de moduledocumentatie, met het centrale verzamelpunt op docs/oefen_modules/intro.
Onder de vraagresultaten staat een statistiekensectie met runstatistieken zoals gemiddelde tijd per vraag, nauwkeurigheid, totale doorlooptijd, uitschieters, snelste vraag, langzaamste vraag, ondergrens en bovengrens. Deze waarden worden niet opnieuw uit de UI berekend, maar gelezen uit de opgeslagen uniforme statistiekvelden van de afgeronde run. Alleen voor technische herstel- of controleprocessen mag herberekening uit de detailpayload worden gebruikt.
Wanneer de run onderdeel is van een duplicaatreeks, toont de modal een Duplicaatmelding. Deze melding is conditioneel: ze verschijnt alleen wanneer de geselecteerde run een relatie heeft met een bronrun of duplicaatgroep. De getoonde aantallen zijn dynamisch en afhankelijk van de werkelijke duplicaatrelaties.
Wanneer delen functioneel is toegestaan, toont de modal daarnaast een blok Deel deze oefening met een actie om de vraaginhoud van deze run met een andere leerling te delen. Delen betekent niet dat het resultaat zelf gedeeld wordt. Eerst wordt een administratief record voor een ontvangen gedeelde oefening aangemaakt; pas wanneer de ontvanger die oefening start, ontstaat voor de ontvanger een eigen zelfstandige exercise run.
Onderaan de modal staan de hoofdacties:
- Maak deze oefening opnieuw: maakt op basis van dezelfde vraaginhoud een nieuwe run voor de leerling en legt de duplicaatrelatie administratief vast.
- Download als PDF: genereert een PDF-export van dezelfde resultaatinhoud.
- Sluit resultaat: sluit de modal en keert terug naar de onderliggende pagina.
De sluitknop rechtsboven heeft dezelfde functionele bestemming als Sluit resultaat en mag geen gegevens wijzigen.
Interpretatie van mockupwaarden
De mockup bevat voorbeeldwaarden zoals leerlingnaam, datum/tijd, aantal vragen, antwoordwaarden, correcte antwoorden, statistieken en duplicaatinformatie. Deze waarden zijn uitsluitend voorbeelddata. In productie worden alle waarden dynamisch bepaald op basis van:
- de ingelogde leerling;
- de geselecteerde afgeronde run;
- het actieve of historisch vastgelegde niveau;
- de categorie en oefening van de run;
- de gebruikte technische module;
- de opgeslagen vraag- en antwoordpayload;
- de uniforme totalen en statistiekvelden op runniveau;
- eventuele duplicaat- of deelrelaties.
Geen enkele concrete mockupwaarde mag hardcoded worden in applicatielogica, database, tests of schermdocumentatie als vaste functionele waarde.
Afbakening tussen generieke view en technische module
Deze view beschrijft de generieke OefenHub-resultaatmodal. De generieke applicatielaag is verantwoordelijk voor autorisatie, runselectie, modalweergave, samenvatting, statistieken, acties, PDF-export en routegedrag.
De technische oefenmodule is verantwoordelijk voor de betekenis en representatie van module-specifieke vraag- en antwoorddata. Denk aan optellingen, breuken, meerkeuzevragen, samengestelde antwoorden of andere module-eigen structuren. De generieke view mag deze inhoud tonen, maar mag geen modulespecifieke interpretatie hardcoded afdwingen buiten het modulecontract.
7.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-LLN-06-01-MOD01 | Modal | Fullscreen overlay | Fullscreen resultaatmodal boven de onderliggende geschiedenis- of oefenpagina. | Resultaat oefening | Modal heeft geen eigen breadcrumb of footer. | StudentRunResultModal |
| SCH-LLN-06-01-B01 | Button | Rechtsboven in modalheader | Sluit de resultaatmodal zonder gegevens te wijzigen. | × | Functioneel gelijk aan Sluit resultaat. | CloseResultModalButton |
| SCH-LLN-06-01-F01 | Field | Modalheader — titel | Vaste titel van de resultaatweergave. | Resultaat oefening | Label is statisch; inhoud eronder is dynamisch. | ResultModalTitle |
| SCH-LLN-06-01-F02 | Field | Modalheader — subtitel | Historische categorie- en oefeningnaam van de geselecteerde run. | <categorie> - <oefening> | Waarde is dynamisch; mockup toont bijvoorbeeld Rekenen - Optellen. | ResultContextSubtitle |
| SCH-LLN-06-01-S01 | Section | Bovenste samenvattingsgrid | Samenvattingsblok met kerngegevens van de geselecteerde run. | Samenvatting | Visueel grid met meerdere summary cards. | RunSummarySection |
| SCH-LLN-06-01-F03 | Field | Samenvatting — naam | Naam van de leerling bij wie de run hoort. | Naam | Dynamische profiel-/snapshotwaarde. | StudentNameSummaryField |
| SCH-LLN-06-01-F04 | Field | Samenvatting — datum | Afronddatum en -tijd van de geselecteerde run. | Datum | Gebaseerd op afrondmoment van de run, lokaal weergegeven. | CompletedAtSummaryField |
| SCH-LLN-06-01-F05 | Field | Samenvatting — aantal | Aantal vragen/oefeningen binnen de geselecteerde run. | Aantal oefeningen | Dynamisch; komt uit uniforme runmetadata. | TotalQuestionsSummaryField |
| SCH-LLN-06-01-F06 | Field | Samenvatting — goed | Aantal correct beantwoorde vragen in de run. | Aantal goed | Dynamisch; uniforme runwaarde. | CorrectCountSummaryField |
| SCH-LLN-06-01-F07 | Field | Samenvatting — fout / geen idee | Aantal fout en aantal Geen idee binnen de run. | Aantal fout / Geen idee | Geen idee telt functioneel ook mee als fout, maar blijft apart zichtbaar. | IncorrectAndDunnoSummaryField |
| SCH-LLN-06-01-S02 | Section | Resultaten per vraag | Sectie met volledige vraag- en antwoorddetails van de run. | Resultaten per vraag | Inhoud is dynamisch en moduleafhankelijk. | QuestionResultsSection |
| SCH-LLN-06-01-T01 | Table | Resultatentabel | Tabel met één regel per vraag binnen de geselecteerde run. | Resultaten per vraag | Tabelinhoud is scrollbaar wanneer de run meer vragen bevat dan in de viewport passen. | QuestionResultsTable |
| SCH-LLN-06-01-COL01 | Column | Resultatentabel | Volgnummer van de vraag binnen de run. | # | Gebaseerd op runvolgorde, niet op een technisch ID. | QuestionSequenceColumn |
| SCH-LLN-06-01-COL02 | Column | Resultatentabel | Weergave van de opgave/vraag. | Vraag | Module-specifieke representatie. | QuestionTextColumn |
| SCH-LLN-06-01-COL03 | Column | Resultatentabel | Antwoord dat de leerling gaf of de opgeslagen antwoordrepresentatie. | Gegeven antwoord | Module-specifieke representatie. | GivenAnswerColumn |
| SCH-LLN-06-01-COL04 | Column | Resultatentabel | Juiste antwoord of verwachte antwoordrepresentatie. | Juiste antwoord | Module-specifieke representatie. | CorrectAnswerColumn |
| SCH-LLN-06-01-COL05 | Column | Resultatentabel | Resultaatstatus van de vraag. | Resultaat | Visuele weergave zoals vinkje of kruis; functioneel goed/fout. | QuestionResultStatusColumn |
| SCH-LLN-06-01-COL06 | Column | Resultatentabel | Markering wanneer de vraag als Geen idee is opgeslagen. | Gemarkeerd | Alleen betekenisvol wanneer AllowMarkAsDunno voor de run gold. | DunnoMarkerColumn |
| SCH-LLN-06-01-S03 | Section | Statistiekenblok | Blok met uniforme statistieken van de geselecteerde afgeronde run. | Statistieken | Waarden komen uit opgeslagen runstatistieken. | RunStatisticsSection |
| SCH-LLN-06-01-F08 | Field | Statistieken | Gemiddelde tijd per vraag. | Gemiddelde tijd per vraag | Dynamische statistiekwaarde. | AverageTimePerQuestionField |
| SCH-LLN-06-01-F09 | Field | Statistieken | Nauwkeurigheid van de run. | Nauwkeurigheid | Afgeleid uit goed/fout/geen-idee totalen. | AccuracyField |
| SCH-LLN-06-01-F10 | Field | Statistieken | Totale doorlooptijd van de run. | Totale doorlooptijd | Gebaseerd op start-/afrondmoment of opgeslagen doorlooptijd. | TotalDurationField |
| SCH-LLN-06-01-F11 | Field | Statistieken | Totaal aantal gedetecteerde uitschieters. | Uitschieters | Afgeleid uit vraagdoorlooptijden en grenswaarden. | OutlierCountField |
| SCH-LLN-06-01-F12 | Field | Statistieken | Ondergrens voor uitschieterdetectie. | Ondergrens | Dynamische statistiekwaarde. | LowerOutlierBoundaryField |
| SCH-LLN-06-01-F13 | Field | Statistieken | Snelste vraag binnen de run. | Snelste vraag | Dynamische statistiekwaarde. | FastestQuestionField |
| SCH-LLN-06-01-F14 | Field | Statistieken | Bovengrens voor uitschieterdetectie. | Bovengrens | Dynamische statistiekwaarde. | UpperOutlierBoundaryField |
| SCH-LLN-06-01-F15 | Field | Statistieken | Langzaamste vraag binnen de run. | Langzaamste vraag | Dynamische statistiekwaarde. | SlowestQuestionField |
| SCH-LLN-06-01-F16 | Field | Uitschieters ondergrens | Overzicht van vragen onder de ondergrens. | Uitschieters ondergrens (<aantal>) | Toont vraagnummer en tijd, of Geen. | LowerOutliersListField |
| SCH-LLN-06-01-F17 | Field | Uitschieters bovengrens | Overzicht van vragen boven de bovengrens. | Uitschieters bovengrens (<aantal>) | Toont vraagnummer en tijd, of Geen. | UpperOutliersListField |
| SCH-LLN-06-01-M01 | Message | Duplicaatmelding | Conditionele melding dat de run onderdeel is van een duplicaatreeks. | Duplicaatmelding | Alleen zichtbaar wanneer duplicaatrelatie aanwezig is. | DuplicateInfoMessage |
| SCH-LLN-06-01-S04 | Section | Deelblok | Conditioneel blok voor het delen van de vraaginhoud met een andere leerling. | Deel deze oefening | Alleen beschikbaar wanneer delen functioneel toegestaan is. | ShareExerciseSection |
| SCH-LLN-06-01-B02 | Button | Deelblok | Start de deelactie voor de vraaginhoud van deze run. | Deel oefening met een leerling | Maakt geen resultaatdeling; maakt een ontvangen-gedeelde-oefening-record aan. | ShareExerciseButton |
| SCH-LLN-06-01-B03 | Button | Modalfooter links | Start een nieuwe run met dezelfde vraaginhoud. | Maak deze oefening opnieuw | Conditioneel beschikbaar; maakt duplicaatrelatie. | RecreateExerciseRunButton |
| SCH-LLN-06-01-B04 | Button | Modalfooter midden | Genereert een PDF-export van de resultaatweergave. | Download als PDF | Gebruikt dezelfde historische runinhoud als de modal. | DownloadResultPdfButton |
| SCH-LLN-06-01-B05 | Button | Modalfooter rechts | Sluit de modal en keert terug naar de onderliggende pagina. | Sluit resultaat | Wijzigt geen gegevens. | CloseResultButton |
7.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-LLN-06-01-MOD01 | Fullscreen overlay | Resultaat oefening | StudentRunResultModal | Geselecteerde ExerciseRuns + bijbehorende runcontext | Modalcontainer voor één afgeronde run | Modal / composite | Nee | Alleen openen wanneer de run voor de leerling toegankelijk is en afgerond is. |
| SCH-LLN-06-01-F02 | Modalheader — subtitel | <categorie> - <oefening> | ResultContextSubtitle | Historische runcontext uit ExerciseRuns, gekoppelde Exercises, Categories, TeacherLevels en eventuele snapshotwaarden bij gedeelde oefeningen | Afgeleide presentatie van categorie en oefening op het moment dat de run relevant werd vastgelegd | String | Nee | Gebruik historische/snapshotcontext waar beschikbaar; niet blind actuele namen overschrijven. |
| SCH-LLN-06-01-F03 | Samenvatting — naam | Naam | StudentNameSummaryField | Gebruikersprofiel of historische deelnemercontext van de run | Naam van de leerling die de run heeft gemaakt | String | Nee | Geen technische user-id tonen. |
| SCH-LLN-06-01-F04 | Samenvatting — datum | Datum | CompletedAtSummaryField | ExerciseRuns.CompletedAtUtc | Afrondmoment van de run, lokaal weergegeven | DateTime | Nee | Alleen afgeronde runs met gevuld afrondmoment mogen worden getoond. |
| SCH-LLN-06-01-F05 | Samenvatting — aantal | Aantal oefeningen | TotalQuestionsSummaryField | ExerciseRuns.TotalQuestions of functioneel gelijkwaardig uniform runveld | Aantal vragen binnen de afgeronde run | Integer | Nee | Waarde is run-specifiek en mag niet uit mockup of actuele oefeningconfiguratie worden overgenomen. |
| SCH-LLN-06-01-F06 | Samenvatting — goed | Aantal goed | CorrectCountSummaryField | ExerciseRuns.CorrectCount of functioneel gelijkwaardig uniform runveld | Aantal correct beantwoorde vragen | Integer | Nee | Wordt gelezen uit opgeslagen runtotalen. |
| SCH-LLN-06-01-F07 | Samenvatting — fout / geen idee | Aantal fout / Geen idee | IncorrectAndDunnoSummaryField | ExerciseRuns.IncorrectCount + ExerciseRuns.DunnoCount of functioneel gelijkwaardige uniforme runvelden | Samengestelde weergave van fout en Geen idee | Composite / integer pair | Nee | Geen idee blijft apart zichtbaar maar telt volgens runregels mee in fout/scoreberekening. |
| SCH-LLN-06-01-T01 | Resultatentabel | Resultaten per vraag | QuestionResultsTable | ExerciseRunProgress + module-specifieke JSON/base64-vraag- en antwoordpayload | Vraagdetails van de geselecteerde afgeronde run | Table / collection | Nee | Tabel toont alleen gegevens van de geselecteerde run; modulepayload wordt niet als technisch JSON aan de gebruiker getoond. |
| SCH-LLN-06-01-COL01 | Resultatentabel | # | QuestionSequenceColumn | ExerciseRunProgress.SequenceNumber of functioneel gelijkwaardige runvolgorde | Volgnummer binnen de run | Integer | Nee | Sorteer oplopend op runvolgorde. |
| SCH-LLN-06-01-COL02 | Resultatentabel | Vraag | QuestionTextColumn | Module-specifieke payload via technische module / renderhulp | Leesbare vraagweergave | Module-rendered string/component | Nee | Representatie wordt door de module geleverd of vertaald via het modulecontract. |
| SCH-LLN-06-01-COL03 | Resultatentabel | Gegeven antwoord | GivenAnswerColumn | Module-specifieke antwoordpayload + voortgangsrecord | Leesbare weergave van het opgeslagen leerlingantwoord | Module-rendered string/component | Nee | Antwoord mag niet opnieuw worden gevalideerd om de historische weergave te bepalen. |
| SCH-LLN-06-01-COL04 | Resultatentabel | Juiste antwoord | CorrectAnswerColumn | Module-specifieke payload / opgeslagen correct antwoord | Leesbare weergave van het juiste antwoord | Module-rendered string/component | Nee | Gebruik historische runpayload; niet actuele moduleconfiguratie als bron voor oude runs. |
| SCH-LLN-06-01-COL05 | Resultatentabel | Resultaat | QuestionResultStatusColumn | ExerciseRunProgress.IsCorrect of functioneel gelijkwaardige vraagstatus | Goed/fout-status per vraag | Boolean / enum | Nee | Visuele iconen moeten functioneel herleidbaar zijn voor toegankelijkheid. |
| SCH-LLN-06-01-COL06 | Resultatentabel | Gemarkeerd | DunnoMarkerColumn | ExerciseRunProgress.IsDunno of functioneel gelijkwaardige vraagmarkering | Geen-idee-markering per vraag | Boolean | Nee | Alleen tonen als markering voor de run van toepassing is; anders leeg of –. |
| SCH-LLN-06-01-S03 | Statistiekenblok | Statistieken | RunStatisticsSection | Uniforme statistiekvelden op ExerciseRuns + vraaggebonden timinggegevens als bron bij berekening | Weergave van opgeslagen runstatistieken | Section / composite | Nee | Complexe statistieken worden na afronding berekend en daarna gelezen; niet door de frontend opnieuw berekend. |
| SCH-LLN-06-01-F08 | Statistieken | Gemiddelde tijd per vraag | AverageTimePerQuestionField | ExerciseRuns.AverageTimePerQuestion of functioneel gelijkwaardig statistiekveld | Gemiddelde vraagdoorlooptijd | Duration / decimal seconds | Nee | Weergave in seconden of leesbaar tijdformaat. |
| SCH-LLN-06-01-F09 | Statistieken | Nauwkeurigheid | AccuracyField | ExerciseRuns.CorrectCount, IncorrectCount, DunnoCount, TotalQuestions of opgeslagen nauwkeurigheidsveld | Percentage correct beantwoorde vragen | Decimal / percentage | Nee | Definitie moet aansluiten op centrale score-/Geen-idee-regels. |
| SCH-LLN-06-01-F10 | Statistieken | Totale doorlooptijd | TotalDurationField | ExerciseRuns.StartedAtUtc, CompletedAtUtc of opgeslagen totale doorlooptijd | Totale duur van de run | Duration | Nee | Getoond als leesbare duur, bijvoorbeeld minuten en seconden. |
| SCH-LLN-06-01-F11 | Statistieken | Uitschieters | OutlierCountField | Opgeslagen outlierstatistieken of berekende statistiekvelden bij afronding | Totaal aantal uitschieters | Integer | Nee | Onder- en bovengrensuitschieters moeten afzonderlijk herleidbaar blijven. |
| SCH-LLN-06-01-F12 | Statistieken | Ondergrens | LowerOutlierBoundaryField | Opgeslagen statistiekvelden op runniveau | Ondergrens voor uitschieters | Decimal / duration | Nee | Afgeleid volgens centrale statistiekdefinitie. |
| SCH-LLN-06-01-F13 | Statistieken | Snelste vraag | FastestQuestionField | Opgeslagen runstatistiek of vraagtimingmetadata | Kortste vraagdoorlooptijd | Duration | Nee | Indien gekoppeld aan vraagnummer, moet het vraagnummer uit runvolgorde komen. |
| SCH-LLN-06-01-F14 | Statistieken | Bovengrens | UpperOutlierBoundaryField | Opgeslagen statistiekvelden op runniveau | Bovengrens voor uitschieters | Decimal / duration | Nee | Afgeleid volgens centrale statistiekdefinitie. |
| SCH-LLN-06-01-F15 | Statistieken | Langzaamste vraag | SlowestQuestionField | Opgeslagen runstatistiek of vraagtimingmetadata | Langste vraagdoorlooptijd | Duration | Nee | Indien gekoppeld aan vraagnummer, moet het vraagnummer uit runvolgorde komen. |
| SCH-LLN-06-01-F16 | Uitschieters ondergrens | Uitschieters ondergrens (<aantal>) | LowerOutliersListField | Vraagtimingmetadata / opgeslagen outlierdetails | Lijst met vragen onder de ondergrens | List / string | Nee | Toon Geen wanneer geen ondergrensuitschieters bestaan. |
| SCH-LLN-06-01-F17 | Uitschieters bovengrens | Uitschieters bovengrens (<aantal>) | UpperOutliersListField | Vraagtimingmetadata / opgeslagen outlierdetails | Lijst met vragen boven de bovengrens | List / string | Nee | Toon Geen wanneer geen bovengrensuitschieters bestaan. |
| SCH-LLN-06-01-M01 | Duplicaatmelding | Duplicaatmelding | DuplicateInfoMessage | ExerciseRuns.DuplicateOf of functioneel gelijkwaardige duplicaatrelatie + groepsafleiding | Melding dat de run onderdeel is van een duplicaatreeks | Message | Nee | Alleen tonen wanneer een duplicaatrelatie bestaat; aantal in reeks is dynamisch. |
| SCH-LLN-06-01-S04 | Deelblok | Deel deze oefening | ShareExerciseSection | Vriendschaps-/deelrechten + runcontext + featuretoggles | Conditionele deelmogelijkheid voor de vraaginhoud | Section | Nee | Niet tonen of disabled tonen wanneer delen niet toegestaan is. |
| SCH-LLN-06-01-B02 | Deelactie | Deel oefening met een leerling | ShareExerciseButton | Dezelfde runcontext + actieve vrienden/relaties + deelvoorwaarden | Starten van deelproces | Button/action | Ja | Maakt een administratief gedeeld-oefening-record; deelt geen resultaat. |
| SCH-LLN-06-01-B03 | Modalfooter links | Maak deze oefening opnieuw | RecreateExerciseRunButton | Geselecteerde bronrun + modulebeschikbaarheid + duplicaatregels | Nieuwe run genereren uit dezelfde vraaginhoud | Button/action | Ja | Moet DuplicateOf of equivalente bronrelatie vastleggen; niet beschikbaar als technische module of runinhoud niet herbruikbaar is. |
| SCH-LLN-06-01-B04 | Modalfooter midden | Download als PDF | DownloadResultPdfButton | Geselecteerde run + vraagdetails + statistieken + PDF-generator | PDF-export van de resultaatweergave | Button/action | Ja | PDF gebruikt dezelfde historische inhoud als de modal. |
| SCH-LLN-06-01-B05 | Modalfooter rechts | Sluit resultaat | CloseResultButton | UI-state | Sluiten van modal | Button/action | Ja | Mag geen database-mutatie uitvoeren. |
7.6 Schermtrace naar SRS en acceptatiecriteria
De onderstaande tabel legt per schermrequirement de koppeling naar het centrale schermrequirements-trace-register, SRS-requirements en acceptatiecriteria vast. De normatieve requirementtekst staat in de SRS; dit schermdocument beschrijft alleen de lokale schermcontext.
Deze tabel bevat alleen schermtraceability. De normatieve requirementtekst en acceptatiecriteria staan centraal in de SRS.
| Schermrequirement | Dekt | Schermcontext |
|---|---|---|
REQ-SCH-LLN-06-01-01 | SRS-LRN-010 SRS-LRN-006 AC-LRN-010 AC-LRN-006 | Na selectie van een afgeronde run in het geschiedenisoverzicht een fullscreen resultaatmodal kunnen openen boven de onderliggende pagina |
REQ-SCH-LLN-06-01-02 | SRS-AUTH-001 SRS-LRN-006 AC-AUTH-001 AC-LRN-006 | Vóór het tonen van de resultaatmodal server-side controleren of de geselecteerde run toegankelijk is voor de ingelogde leerling |
REQ-SCH-LLN-06-01-03 | SRS-LRN-010 AC-LRN-010 | Het systeem mag in deze modal alleen afgeronde, niet-test runs tonen die voor de leerling toegankelijk zijn |
REQ-SCH-LLN-06-01-04 | SRS-LRN-003 SRS-LRN-006 AC-LRN-003 AC-LRN-006 | Het openen of sluiten van de resultaatmodal mag geen rungegevens, voortgangsgegevens of statistiekwaarden wijzigen |
REQ-SCH-LLN-06-01-05 | SRS-LRN-010 SRS-LRN-006 AC-LRN-010 AC-LRN-006 | De modal bovenaan de titel Resultaat oefening en de dynamische historische categorie-/oefeningcontext tonen |
REQ-SCH-LLN-06-01-06 | SRS-RDM-009 SRS-RDM-006 SRS-RDM-002 SRS-RDM-001 SRS-LRN-004 AC-RDM-009 AC-RDM-006 AC-RDM-002 AC-RDM-001 AC-LRN-004 | De samenvatting minimaal naam, afrondmoment, aantal vragen, aantal goed en aantal fout/Geen idee tonen voor de geselecteerde run |
REQ-SCH-LLN-06-01-07 | SRS-RDM-006 SRS-RDM-002 SRS-RDM-001 SRS-LRN-010 AC-RDM-006 AC-RDM-002 AC-RDM-001 AC-LRN-010 | Samenvattingswaarden uit de geselecteerde run en bijbehorende historische context worden gelezen en geen als vaste mockupwaarden worden gebruikt |
REQ-SCH-LLN-06-01-08 | SRS-LRN-003 AC-LRN-003 | De vraagresultatentabel één regel per vraag in runvolgorde tonen |
REQ-SCH-LLN-06-01-09 | SRS-LRN-003 SRS-LRN-006 AC-LRN-003 AC-LRN-006 | De vraagresultatentabel minimaal de kolommen #, Vraag, Gegeven antwoord, Juiste antwoord, Resultaat en Gemarkeerd ondersteunen |
REQ-SCH-LLN-06-01-10 | SRS-LRN-003 AC-LRN-003 | Vraag-, antwoord- en juiste-antwoordweergave moduleafhankelijk worden geleverd of vertaald via het technische modulecontract |
REQ-SCH-LLN-06-01-11 | SRS-LRN-003 SRS-LRN-006 AC-LRN-003 AC-LRN-006 | De generieke resultaatmodal mag geen modulespecifieke vraag- of antwoordlogica hardcoded afdwingen |
REQ-SCH-LLN-06-01-12 | SRS-LRN-003 SRS-LRN-004 AC-LRN-003 AC-LRN-004 | Een Geen idee-markering apart zichtbaar zijn bij de betreffende vraag en tegelijk aansluiten op de centrale fout-/scoreberekening van de run |
REQ-SCH-LLN-06-01-13 | SRS-NFR-AUD-001 SRS-LRN-006 AC-NFR-AUD-001 AC-LRN-006 | Resultaaticonen zoals vinkjes en kruisen functioneel herleidbaar zijn tot goed/fout-status en geen uitsluitend visueel betekenis dragen |
REQ-SCH-LLN-06-01-14 | SRS-LRN-006 AC-LRN-006 | De statistiekensectie opgeslagen uniforme runstatistieken tonen en mag deze niet opnieuw in de frontend berekenen |
REQ-SCH-LLN-06-01-15 | SRS-LRN-003 SRS-LRN-006 AC-LRN-003 AC-LRN-006 | De statistiekensectie ten minste gemiddelde tijd per vraag, nauwkeurigheid, totale doorlooptijd, uitschieters, snelste vraag, langzaamste vraag, ondergrens en bovengrens kunnen tonen |
REQ-SCH-LLN-06-01-16 | SRS-NFR-AUD-001 AC-NFR-AUD-001 | Uitschieters onder en boven de grens afzonderlijk zichtbaar of herleidbaar zijn en bij afwezigheid als Geen worden weergegeven |
REQ-SCH-LLN-06-01-17 | SRS-LRN-003 SRS-LRN-006 AC-LRN-003 AC-LRN-006 | De modal scrollbaar blijven wanneer de volledige vraag- of statistiekinhoud hoger is dan de viewport |
REQ-SCH-LLN-06-01-18 | SRS-LRN-003 AC-LRN-003 | De tabelheader van de vraagresultaten zichtbaar blijven of opnieuw duidelijk beschikbaar zijn wanneer de vraaglijst binnen de modal scrolt |
REQ-SCH-LLN-06-01-19 | SRS-CAT-001 AC-CAT-001 | De duplicaatmelding alleen zichtbaar zijn wanneer de geselecteerde run onderdeel is van een duplicaatreeks |
REQ-SCH-LLN-06-01-20 | SRS-LRN-001 SRS-LRN-003 AC-LRN-001 AC-LRN-003 | De actie Maak deze oefening opnieuw een nieuwe run genereren op basis van dezelfde vraaginhoud en de bronrelatie met de geselecteerde run administratief vastleggen |
REQ-SCH-LLN-06-01-21 | SRS-LRN-010 SRS-LRN-001 AC-LRN-010 AC-LRN-001 | De actie Maak deze oefening opnieuw geen beschikbaar zijn wanneer de historische vraaginhoud of de benodigde technische module niet meer bruikbaar is voor een nieuwe run |
REQ-SCH-LLN-06-01-22 | SRS-CAT-001 AC-CAT-001 | De deelactie mag alleen beschikbaar zijn wanneer de gebruiker oefeningen mag delen en er een geldige ontvangerrelatie of vriendschap beschikbaar is |
REQ-SCH-LLN-06-01-23 | SRS-LRN-003 SRS-LRN-006 AC-LRN-003 AC-LRN-006 | Delen vanuit deze modal de vraaginhoud delen via een administratief ontvangen-gedeelde-oefening-record en mag het resultaat van de afzender niet delen of overschrijven |
REQ-SCH-LLN-06-01-24 | SRS-LRN-010 SRS-LRN-001 AC-LRN-010 AC-LRN-001 | De actie Download als PDF een PDF genereren op basis van dezelfde historische inhoud als de resultaatmodal |
REQ-SCH-LLN-06-01-25 | SRS-AUTH-004 SRS-LRN-003 AC-AUTH-004 AC-LRN-003 | De PDF-export de volledige vraagresultatentabel, samenvatting, statistieken en relevante meldingen bevatten zonder technische identifiers aan de leerling te tonen |
REQ-SCH-LLN-06-01-26 | SRS-AUTH-004 AC-AUTH-004 | De modal mag geen GUID's, module-id's, interne run-id's of andere technisch irrelevante identifiers zichtbaar maken |
REQ-SCH-LLN-06-01-27 | SRS-CAT-001 AC-CAT-001 | Datum- en tijdwaarden lokaal en consistent worden weergegeven op basis van opgeslagen UTC-bronwaarden |
REQ-SCH-LLN-06-01-28 | SRS-CAT-001 AC-CAT-001 | Wanneer de geselecteerde run niet meer bestaat, niet afgerond is of niet toegankelijk is, het systeem een veilige fout- of lege staat tonen zonder technische foutdetails |
7.7 Technische koppeling
Voor technische uitwerking zijn vooral relevant:
- 05 Autorisatie, policies en server-side contextcontrole voor server-side controle dat de geselecteerde run voor de leerling toegankelijk is.
- 10 Oefenruns, voortgang, resultaten, statistieken en PDF-brondata voor detailgegevens, vraag-/antwoordregels en runstatistieken.
- 12 Relatiebeheer, uitnodigingen en gedeelde oefeningen voor delen van afgeronde oefeningen en behoud van snapshotcontext.
- 16 PDF-export met QuestPDF voor PDF-export van resultaatdetails.
- 17 Readmodels, tellers, badges, caching en materialisatie voor afgeleide detailweergaven en statistiekwaarden.
- 24 Frontend, Blazor, routing, state en componentopbouw voor modalstate, acties en responsieve detailpresentatie.