6. Geschiedenis overzicht
6.1 Schermafbeelding

6.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-LLN-05-01 |
| Schermnaam | Geschiedenis — Overzicht |
| Doelgroep / onderdeel | Leerling |
| Bronbestand | oefenhub_leerling_05_geschiedenis_overzicht_v1_3.html |
| Mockupversie | V1.3 |
| Screenshotbestand | oefenhub_leerling_05_geschiedenis_overzicht_v1_3.png |
| Processtap / context | Leerling bekijkt de reeds afgeronde oefenruns binnen één geselecteerde oefening, in de mockupcontext Rekenen > Optellen. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | Generieke header-, navigatie-, berichten-, profiel- en footercomponenten worden niet opnieuw volledig uitgewerkt. Deze pagina focust op de oefeninggebonden geschiedenislijst en de periode-/pagineringlogica. |
| Route / URL-patroon | Functioneel routepatroon: leerlingcontext > categorie > oefening > geschiedenis. |
| Autorisatie / vereiste rol-context | Actieve leerlingcontext; de leerling mag uitsluitend eigen afgeronde runs bekijken. |
| Primair domeinobject / hoofdentiteit | Afgeronde ExerciseRuns van de ingelogde leerling binnen de geselecteerde niveau-, categorie- en oefeningcontext. |
| Gerelateerde schermen / navigatie | 04_oefening, 05_start_nieuwe, 07_geschiedenis_details, 08_geschiedenis_alles. |
| Data-karakter | Overzichtsscherm met uitsluitend dynamische, historisch opgeslagen rungegevens; mockupwaarden zijn voorbeelddata en mogen niet hardcoded worden. |
6.3 Functionele beschrijving
Dit scherm toont de oefeninggebonden geschiedenis van de ingelogde leerling. De leerling komt hier vanuit de gekozen oefening, bijvoorbeeld nadat bovenin de categorie Rekenen is gekozen en daarbinnen de oefening Optellen is geopend. In deze view worden uitsluitend reeds afgeronde oefenruns getoond die bij diezelfde oefeningcontext horen.
De pagina bestaat uit een breadcrumb, een geschiedeniskaart met titel en toelichting, periodefilters, een tabel met afgeronde runs, paginering en acties om terug te keren naar de oefening. De zichtbare inhoud is vrijwel volledig dynamisch. Voorbeelden zoals Rekenen, Optellen, datums, aantallen, scores, foutaantallen en aantallen Geen idee zijn mockupwaarden. In productie worden deze waarden per leerling, actief/historisch niveau, categorie, oefening, moduleconfiguratie en concrete run bepaald.
Alleen afgeronde runs horen in dit overzicht thuis. Niet-afgeronde runs blijven beschikbaar via de hervatflow op de oefening-startpagina en worden niet als geschiedenisregel getoond. Testoefeningen van docenten en runs van andere gebruikers mogen nooit zichtbaar zijn in deze leerlingview.
De tabel toont per run compacte samenvattingswaarden:
- volgnummer binnen de actuele lijstweergave;
- afrondmoment;
- totaal aantal vragen/oefeningen in de run;
- aantal goed;
- aantal fout;
- aantal keer Geen idee.
Deze waarden worden gelezen uit uniforme, opgeslagen runvelden op de afgeronde ExerciseRun. De lijstweergave herberekent deze totalen niet uit de modulepayload. De modulepayload en vraagvoortgang blijven relevant voor de detailweergave, maar niet als primaire bron voor de tabeltotalen in dit overzicht.
De periodefilters beperken de zichtbare lijst op basis van het afrondmoment van de run. De mockup toont Afgelopen week, Huidige maand, Vorige maand, Huidige jaar en Alles. De actieve filter is visueel als geselecteerd weergegeven en is niet opnieuw klikbaar. Andere filteropties zijn interactief.
Wanneer de leerling op een geschiedenisregel klikt, opent de detailweergave van die specifieke afgeronde run. Daar worden de vraag-/antwoorddetails, resultaatstatussen en statistieken verder uitgewerkt. Vanuit deze overzichtspagina zelf worden geen resultaten gewijzigd en wordt geen nieuwe run aangemaakt.
De knoppen Terug naar Optellen bovenaan en onderaan brengen de leerling terug naar de oefening-startpagina van de geselecteerde oefening. Ook die labeltekst is dynamisch: bij een andere oefening moet het systeem de juiste oefeningnaam gebruiken.
Interpretatie van mockupwaarden
Alle concrete waarden in de PNG en HTML zijn voorbeelddata. Dit geldt onder andere voor:
- categorienaam en oefeningnaam, zoals Rekenen > Optellen;
- afronddatums en tijden;
- aantallen oefeningen/vragen;
- aantallen goed, fout en Geen idee;
- het aantal zichtbare regels;
- het aantal beschikbare pagina’s;
- de actieve periodefilter.
Deze waarden mogen niet als vaste inhoud, seeddata of harde businessregel worden geïnterpreteerd. De schermdocumentatie beschrijft de betekenis van de velden en de herkomst van de waarden, niet de specifieke voorbeeldrecords uit de mockup.
6.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-LLN-05-01-S01 | Section | Pagina als geheel | Oefeninggebonden geschiedenisoverzicht voor de ingelogde leerling. | Geschiedenis | Bevat alleen afgeronde runs binnen de geselecteerde oefeningcontext. | StudentExerciseHistoryOverviewPage |
| SCH-LLN-05-01-N01 | Navigation | Breadcrumb boven kaart | Toont de navigatiecontext waarin de leerling zich bevindt. | OefenHub > Rekenen > Optellen > Geschiedenis | Categorie- en oefeningnaam zijn dynamisch. | StudentExerciseHistoryBreadcrumb |
| SCH-LLN-05-01-F01 | Field | Breadcrumb — categorie | Naam van de geselecteerde categorie. | Rekenen | Dynamische waarde; in de mockup voorbeeldcontext. | SelectedCategoryName |
| SCH-LLN-05-01-F02 | Field | Breadcrumb — oefening | Naam van de geselecteerde oefening. | Optellen | Dynamische waarde; in de mockup voorbeeldcontext. | SelectedExerciseName |
| SCH-LLN-05-01-F03 | Field | Breadcrumb — huidige pagina | Geeft aan dat de leerling de geschiedenis bekijkt. | Geschiedenis | Statische paginacontext. | CurrentHistoryPageLabel |
| SCH-LLN-05-01-S02 | Section | Hoofdkaart | Kaart met titel, toelichting, filters, tabel en paginering. | Geschiedenis | Centrale contentsectie van de pagina. | ExerciseHistoryCard |
| SCH-LLN-05-01-F04 | Field | Hoofdkaart — titel | Titel van de geschiedenisview. | Geschiedenis | Statische titel. | ExerciseHistoryTitle |
| SCH-LLN-05-01-F05 | Field | Hoofdkaart — toelichting | Legt uit dat de leerling afgeronde runs binnen de gekozen oefening bekijkt. | Hier zie je jouw eerder afgeronde oefeningen binnen Rekenen > Optellen. | Tekst bevat dynamische categorie- en oefeningnaam. | ExerciseHistoryIntroText |
| SCH-LLN-05-01-B01 | Button | Rechtsboven in hoofdkaart | Keert terug naar de geselecteerde oefening-startpagina. | Terug naar Optellen | Label gebruikt dynamische oefeningnaam. | BackToExerciseTopButton |
| SCH-LLN-05-01-S03 | Filter group | Boven de tabel | Periodefilter waarmee de runlijst op afrondmoment wordt beperkt. | Afgelopen week / Huidige maand / Vorige maand / Huidige jaar / Alles | Actieve filter is read-only weergegeven; overige waarden zijn klikbaar. | ExerciseHistoryPeriodFilterGroup |
| SCH-LLN-05-01-A01 | Action | Filteroptie | Filtert op runs afgerond in de afgelopen 7 dagen. | Afgelopen week | Filtert op CompletedAtUtc. | FilterLastWeekAction |
| SCH-LLN-05-01-A02 | Action | Filteroptie actief | Toont runs afgerond binnen de huidige kalendermaand. | Huidige maand | In de mockup als actieve filter weergegeven; actieve status is dynamisch. | FilterCurrentMonthAction |
| SCH-LLN-05-01-A03 | Action | Filteroptie | Filtert op runs afgerond binnen de vorige kalendermaand. | Vorige maand | Filtert op CompletedAtUtc. | FilterPreviousMonthAction |
| SCH-LLN-05-01-A04 | Action | Filteroptie | Filtert op runs afgerond binnen het huidige kalenderjaar. | Huidige jaar | Filtert op CompletedAtUtc. | FilterCurrentYearAction |
| SCH-LLN-05-01-A05 | Action | Filteroptie | Toont alle afgeronde runs binnen de geselecteerde oefeningcontext. | Alles | Geen periodebeperking, wel dezelfde leerling-/oefeningcontext. | FilterAllHistoryAction |
| SCH-LLN-05-01-T01 | Table | Geschiedenistabel | Tabel met afgeronde oefenruns binnen de actuele filtercontext. | Geschiedenisregels | Elke rij representeert één afgeronde ExerciseRun. | ExerciseHistoryTable |
| SCH-LLN-05-01-F06 | Field | Kolom Nr. | Volgnummer van de zichtbare regel binnen de gefilterde/paginated lijst. | Nr. | Presentatiewaarde; geen database-id. | HistoryRowDisplayNumber |
| SCH-LLN-05-01-F07 | Field | Kolom Afgerond | Datum en tijd waarop de run is afgerond. | Afgerond | Afgeleid uit afrondmoment van de run en lokaal weergegeven. | CompletedAtDisplay |
| SCH-LLN-05-01-F08 | Field | Kolom Aantal oefeningen | Totaal aantal vragen/oefeningen binnen de afgeronde run. | Aantal oefeningen | Dynamische runwaarde. | TotalQuestionsDisplay |
| SCH-LLN-05-01-F09 | Field | Kolom Aantal goed | Aantal goed beantwoorde vragen binnen de run. | Aantal goed | Dynamische runwaarde. | CorrectAnswerCountDisplay |
| SCH-LLN-05-01-F10 | Field | Kolom Aantal fout | Aantal fout beantwoorde vragen binnen de run. | Aantal fout | Inclusief vragen die functioneel als fout tellen. | IncorrectAnswerCountDisplay |
| SCH-LLN-05-01-F11 | Field | Kolom Aantal ‘Geen idee’ | Aantal vragen waarbij de leerling Geen idee gebruikte. | Aantal ‘Geen idee’ | Telt apart mee en telt functioneel ook als fout. | DunnoAnswerCountDisplay |
| SCH-LLN-05-01-A06 | Action | Klik op tabelrij | Opent de detailweergave van de geselecteerde afgeronde run. | Klik op een regel om het resultaat van die oefening te openen. | Alleen lezen; mag geen run wijzigen. | OpenExerciseRunResultAction |
| SCH-LLN-05-01-M01 | Message | Onder tabel | Toelichting dat een regel geopend kan worden. | Klik op een regel om het resultaat van die oefening te openen. | Begeleidende tekst onder de tabel. | HistoryRowClickHelpText |
| SCH-LLN-05-01-FORM01 | Form control | Onderzijde links | Keuzelijst voor aantal zichtbare regels per pagina. | Toon per pagina | Opties in mockup: 20, 40, 60, Alles. | HistoryPageSizeSelector |
| SCH-LLN-05-01-F12 | Field | Page size optie | Standaard aantal regels per pagina. | 20 | Standaardwaarde volgens Functioneel Ontwerp, Technisch Ontwerp en Software Requirements Specification. | PageSize20Option |
| SCH-LLN-05-01-F13 | Field | Page size optie | Alternatief aantal regels per pagina. | 40 | Selecteerbare paginagrootte. | PageSize40Option |
| SCH-LLN-05-01-F14 | Field | Page size optie | Alternatief aantal regels per pagina. | 60 | Selecteerbare paginagrootte. | PageSize60Option |
| SCH-LLN-05-01-F15 | Field | Page size optie | Toont alle regels binnen de actuele filtercontext. | Alles | Alleen toepassen wanneer dit performance-technisch verantwoord is of server-side begrensd wordt. | PageSizeAllOption |
| SCH-LLN-05-01-S04 | Pagination | Onderzijde midden | Paginering voor de gefilterde runlijst. | 1 / 2 / 3 / Volgende | Aantal pagina’s is dynamisch op basis van resultaatset en page size. | ExerciseHistoryPagination |
| SCH-LLN-05-01-B02 | Button | Onderzijde rechts | Keert terug naar de geselecteerde oefening-startpagina. | Terug naar Optellen | Tweede terugactie voor lange lijsten; label gebruikt dynamische oefeningnaam. | BackToExerciseBottomButton |
| SCH-LLN-05-01-M02 | Message | Lege lijst | Melding wanneer geen afgeronde runs binnen de filtercontext bestaan. | Nog geen afgeronde oefeningen gevonden. | Niet zichtbaar in de mockup, wel functioneel noodzakelijk. | EmptyExerciseHistoryMessage |
6.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-LLN-05-01-S01 | Pagina als geheel | Geschiedenis | StudentExerciseHistoryOverviewPage | Actieve leerlingcontext + geselecteerde LevelId, CategoryId en ExerciseId | Samengestelde view op afgeronde runs binnen één oefeningcontext | Page / composite | Nee | Alleen eigen runs van de ingelogde leerling mogen zichtbaar zijn. |
| SCH-LLN-05-01-N01 | Breadcrumb | OefenHub > Rekenen > Optellen > Geschiedenis | StudentExerciseHistoryBreadcrumb | Categories, Exercises, historische/actieve niveaucontext van de geselecteerde oefening | Afgeleid uit navigatiecontext en domeinnamen | Navigation | Nee | Geen technische ids tonen; alleen betekenisvolle domeinnamen. |
| SCH-LLN-05-01-F01 | Breadcrumb — categorie | Rekenen | SelectedCategoryName | Categories.Name of historische categoriesnapshot wanneer van toepassing | Database / historisch domeinlabel | String | Nee | Dynamische waarde; mockupnaam is voorbeelddata. |
| SCH-LLN-05-01-F02 | Breadcrumb — oefening | Optellen | SelectedExerciseName | Exercises.Name of historische oefeningsnapshot wanneer van toepassing | Database / historisch domeinlabel | String | Nee | Dynamische waarde; mockupnaam is voorbeelddata. |
| SCH-LLN-05-01-F04 | Titel | Geschiedenis | ExerciseHistoryTitle | Codegedreven schermlabel of contentblok | Statische paginatitel | String | Nee | Mag niet afhankelijk zijn van runinhoud. |
| SCH-LLN-05-01-F05 | Toelichting | Hier zie je jouw eerder afgeronde oefeningen binnen Rekenen > Optellen. | ExerciseHistoryIntroText | Codegedreven tekst met interpolatie van categorie- en oefeningnaam | Samengestelde tekst | String | Nee | Categorie- en oefeningnaam dynamisch invullen; geen vaste mockuptekst hardcoden. |
| SCH-LLN-05-01-B01 | Terugknop boven | Terug naar Optellen | BackToExerciseTopButton | Geselecteerde ExerciseId / oefeningroute | Navigatieactie naar oefening-startpagina | Button | Nee | Terugroute moet naar dezelfde oefeningcontext leiden. |
| SCH-LLN-05-01-S03 | Periodefilter | Afgelopen week / Huidige maand / Vorige maand / Huidige jaar / Alles | ExerciseHistoryPeriodFilterGroup | Queryparameter, UI-state of route-state | User input voor filtercontext | Enum | Ja | Filterwaarde moet server-side worden gevalideerd tegen toegestane periodewaarden. |
| SCH-LLN-05-01-A01 | Filter | Afgelopen week | FilterLastWeekAction | ExerciseRuns.CompletedAtUtc | Berekende datumrange op afrondmoment | Action | Ja | Alleen runs met afrondmoment binnen afgelopen 7 dagen tonen. |
| SCH-LLN-05-01-A02 | Filter | Huidige maand | FilterCurrentMonthAction | ExerciseRuns.CompletedAtUtc | Berekende datumrange op afrondmoment | Action | Ja | Alleen runs met afrondmoment binnen huidige kalendermaand tonen. |
| SCH-LLN-05-01-A03 | Filter | Vorige maand | FilterPreviousMonthAction | ExerciseRuns.CompletedAtUtc | Berekende datumrange op afrondmoment | Action | Ja | Alleen runs met afrondmoment binnen vorige kalendermaand tonen. |
| SCH-LLN-05-01-A04 | Filter | Huidige jaar | FilterCurrentYearAction | ExerciseRuns.CompletedAtUtc | Berekende datumrange op afrondmoment | Action | Ja | Alleen runs met afrondmoment binnen huidige kalenderjaar tonen. |
| SCH-LLN-05-01-A05 | Filter | Alles | FilterAllHistoryAction | ExerciseRuns.CompletedAtUtc + vaste leerling-/oefeningcontext | Geen periodefilter | Action | Ja | Toont alle afgeronde eigen runs binnen dezelfde oefeningcontext. |
| SCH-LLN-05-01-T01 | Geschiedenistabel | Geschiedenisregels | ExerciseHistoryTable | ExerciseRuns gefilterd op UserId, LevelId, CategoryId, ExerciseId, IsCompleted = true, gevuld CompletedAtUtc, IsTestRun = false | Databasequery over afgeronde runs | Table | Nee | Niet-afgeronde runs, testruns en runs van andere gebruikers uitsluiten. |
| SCH-LLN-05-01-F06 | Nr. | Nr. | HistoryRowDisplayNumber | Resultaatset na filtering, sortering en paginering | Berekende presentatiewaarde | Integer | Nee | Geen database-id; nummering volgt actuele sortering en pagina. |
| SCH-LLN-05-01-F07 | Afgerond | Afgerond | CompletedAtDisplay | ExerciseRuns.CompletedAtUtc | Databasewaarde, lokaal geformatteerd | DateTime display | Nee | UTC opslaan, lokaal tonen; sortering standaard aflopend op afrondmoment. |
| SCH-LLN-05-01-F08 | Aantal oefeningen | Aantal oefeningen | TotalQuestionsDisplay | ExerciseRuns.TotalQuestions of functioneel gelijkwaardige uniforme totalenkolom | Databasewaarde op runniveau | Integer | Nee | Niet uit modulepayload herberekenen in deze lijstview. |
| SCH-LLN-05-01-F09 | Aantal goed | Aantal goed | CorrectAnswerCountDisplay | ExerciseRuns.CorrectCount of functioneel gelijkwaardige uniforme totalenkolom | Databasewaarde op runniveau | Integer | Nee | Waarde moet bij afronding van de run zijn vastgelegd. |
| SCH-LLN-05-01-F10 | Aantal fout | Aantal fout | IncorrectAnswerCountDisplay | ExerciseRuns.IncorrectCount of functioneel gelijkwaardige uniforme totalenkolom | Databasewaarde op runniveau | Integer | Nee | Moet aansluiten op scoreregels van de run; Geen idee telt functioneel als fout. |
| SCH-LLN-05-01-F11 | Aantal ‘Geen idee’ | Aantal ‘Geen idee’ | DunnoAnswerCountDisplay | ExerciseRuns.DunnoCount of functioneel gelijkwaardige uniforme totalenkolom | Databasewaarde op runniveau | Integer | Nee | Alleen gevuld wanneer Geen idee voor de run/module functioneel van toepassing is; anders 0 tonen. |
| SCH-LLN-05-01-A06 | Tabelrij openen | Klik op een regel om het resultaat van die oefening te openen. | OpenExerciseRunResultAction | Geselecteerde ExerciseRunId binnen toegestane resultaatset | User action / route naar detailweergave | Action | Ja | Directe URL-toegang moet opnieuw controleren dat de run van de ingelogde leerling is. |
| SCH-LLN-05-01-FORM01 | Toon per pagina | Toon per pagina | HistoryPageSizeSelector | UI-state / queryparameter / gebruikerskeuze | User input voor paginering | Enum / integer | Ja | Alleen toegestane waarden 20, 40, 60 of Alles accepteren. |
| SCH-LLN-05-01-S04 | Paginering | 1 / 2 / 3 / Volgende | ExerciseHistoryPagination | Gefilterde queryresultaatset + page size | Berekend | Pagination | Ja | Aantal pagina’s dynamisch bepalen; ongeldige pagina’s terugbrengen naar geldige range. |
| SCH-LLN-05-01-B02 | Terugknop onder | Terug naar Optellen | BackToExerciseBottomButton | Geselecteerde ExerciseId / oefeningroute | Navigatieactie naar oefening-startpagina | Button | Nee | Zelfde bestemming als bovenste terugknop. |
| SCH-LLN-05-01-M02 | Lege lijst | Nog geen afgeronde oefeningen gevonden. | EmptyExerciseHistoryMessage | Gefilterde resultaatset | Afgeleid uit aantal gevonden runs | Message | Nee | Tonen wanneer de filtercontext nul afgeronde runs oplevert. |
6.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-05-01-01 | SRS-LRN-010 AC-LRN-010 | Een oefeninggebonden geschiedenisoverzicht tonen voor de ingelogde leerling binnen één geselecteerde niveau-, categorie- en oefeningcontext |
REQ-SCH-LLN-05-01-02 | SRS-CAT-001 AC-CAT-001 | Het systeem mag in dit overzicht uitsluitend eigen ExerciseRuns van de ingelogde leerling tonen |
REQ-SCH-LLN-05-01-03 | SRS-LRN-010 SRS-LRN-002 AC-LRN-010 AC-LRN-002 | De geschiedenis beperken tot afgeronde runs met een geldig afrondmoment en geen-afgeronde runs niet als geschiedenisregel tonen |
REQ-SCH-LLN-05-01-04 | SRS-LRN-010 AC-LRN-010 | Het systeem mag docent-testruns en runs van andere gebruikers nooit tonen in de leerlinggeschiedenis |
REQ-SCH-LLN-05-01-05 | SRS-LRN-010 AC-LRN-010 | De lijst standaard sorteren op meest recent afgeronde run binnen de actuele filtercontext |
REQ-SCH-LLN-05-01-06 | SRS-RDM-009 SRS-RDM-006 SRS-RDM-002 SRS-RDM-001 SRS-LRN-010 SRS-LRN-004 AC-RDM-009 AC-RDM-006 AC-RDM-002 AC-RDM-001 AC-LRN-010 AC-LRN-004 | Per geschiedenisregel minimaal afrondmoment, totaal aantal vragen/oefeningen, aantal goed, aantal fout en aantal Geen idee tonen |
REQ-SCH-LLN-05-01-07 | SRS-CAT-001 AC-CAT-001 | Lijsttotalen lezen uit uniforme runvelden en mag deze in de overzichtslijst niet opnieuw uit de modulepayload berekenen |
REQ-SCH-LLN-05-01-08 | SRS-CAT-001 AC-CAT-001 | Periodefiltering ondersteunen op basis van het afrondmoment van de run |
REQ-SCH-LLN-05-01-09 | SRS-CAT-001 AC-CAT-001 | Minimaal de periodefilters Afgelopen week, Huidige maand, Vorige maand, Huidige jaar en Alles ondersteunen |
REQ-SCH-LLN-05-01-10 | SRS-CAT-001 AC-CAT-001 | Duidelijk tonen welke periodefilter actief is en actieve en niet-actieve filters visueel onderscheiden |
REQ-SCH-LLN-05-01-11 | SRS-LRN-010 AC-LRN-010 | Bij selectie van een geschiedenisregel de detailweergave van precies die afgeronde run openen |
REQ-SCH-LLN-05-01-12 | SRS-LRN-010 SRS-LRN-001 AC-LRN-010 AC-LRN-001 | Het openen van een geschiedenisregel mag geen rungegevens wijzigen en mag geen nieuwe run genereren |
REQ-SCH-LLN-05-01-13 | SRS-AUTH-001 SRS-LRN-010 AC-AUTH-001 AC-LRN-010 | Directe URL-toegang tot een geschiedenisdetail opnieuw server-side autoriseren op eigenaar van de run |
REQ-SCH-LLN-05-01-14 | SRS-LRN-010 AC-LRN-010 | Paginering ondersteunen voor de oefeninggebonden geschiedenislijst |
REQ-SCH-LLN-05-01-15 | SRS-CAT-001 AC-CAT-001 | De page-size waarden 20, 40, 60 en Alles ondersteunen of een technisch gelijkwaardige begrenzing toepassen wanneer Alles te groot wordt |
REQ-SCH-LLN-05-01-16 | SRS-CAT-001 AC-CAT-001 | Bij nul resultaten binnen de actuele filtercontext een begrijpelijke lege staat tonen |
REQ-SCH-LLN-05-01-17 | SRS-CAT-001 AC-CAT-001 | Een duidelijke terugactie aanbieden naar de geselecteerde oefening-startpagina; bij lange of scrollbare geschiedenislijsten moet deze terugactie ook na het bekijken van de lijst bereikbaar blijven, bijvoorbeeld onderaan de pagina of via een vaste navigatieactie |
REQ-SCH-LLN-05-01-18 | SRS-CAT-001 AC-CAT-001 | De labeltekst van terugacties dynamisch de geselecteerde oefeningnaam gebruiken en geen hardcoded op Optellen staan |
REQ-SCH-LLN-05-01-19 | SRS-AUTH-004 SRS-LRN-010 AC-AUTH-004 AC-LRN-010 | Het systeem mag geen technische identifiers zoals GUID’s, ExerciseRunId, ExerciseId of module-id’s zichtbaar tonen in de geschiedenislijst |
REQ-SCH-LLN-05-01-20 | SRS-CAT-001 AC-CAT-001 | Datum- en tijdwaarden consistent lokaal worden weergegeven op basis van het opgeslagen UTC-afrondmoment |
REQ-SCH-LLN-05-01-21 | SRS-RDM-006 SRS-RDM-002 SRS-RDM-001 SRS-CAT-001 AC-RDM-006 AC-RDM-002 AC-RDM-001 AC-CAT-001 | Mockupwaarden zoals datums, aantallen, scores, categorienaam, oefeningnaam en paginanummers mogen nooit als vaste productiegegevens of hardcoded businessregels worden gebruikt |
REQ-SCH-LLN-05-01-22 | SRS-LRN-004 AC-LRN-004 | Geen idee apart blijven tonen wanneer deze waarde in een run voorkomt, terwijl deze volgens de scoreregels ook als fout meetelt |
REQ-SCH-LLN-05-01-23 | SRS-RDM-006 SRS-RDM-008 SRS-RDM-002 SRS-RDM-001 SRS-AUTH-001 SRS-LRN-010 AC-RDM-006 AC-RDM-008 AC-RDM-002 AC-RDM-001 AC-AUTH-001 AC-LRN-010 | Geschiedenisgegevens ook bij grotere aantallen runs performant laden via paginering, server-side filtering of een gelijkwaardig mechanisme |
REQ-SCH-LLN-05-01-24 | SRS-LRN-010 AC-LRN-010 | De oefeninggebonden geschiedenis mag alleen runs tonen binnen de geselecteerde oefeningcontext en geen dezelfde scope hebben als de bredere pagina Geschiedenis alles |
6.7 Technische koppeling
Voor technische uitwerking zijn vooral relevant:
- 05 Autorisatie, policies en server-side contextcontrole voor server-side begrenzing tot eigen toegankelijke runhistorie.
- 10 Oefenruns, voortgang, resultaten, statistieken en PDF-brondata voor afgeronde runs, scorevelden, filters en resultaatbronnen.
- 16 PDF-export met QuestPDF voor PDF-downloads vanuit afgeronde resultaten.
- 17 Readmodels, tellers, badges, caching en materialisatie voor geschiedenisoverzichten, samenvattingen, paginering en filterwaarden.
- 24 Frontend, Blazor, routing, state en componentopbouw voor tabelweergave, filterstate, modalnavigatie en responsieve opbouw.
- 25 Privacy, retentie, anonimisering en gegevensbescherming voor zichtbaarheid van leerlingresultaten zonder technische identifiers.