Skip to main content

4. Oefening

4.1 Schermafbeelding

oefenhub_leerling_03_oefening_v3_2.png

4.2 Scherm meta data

VeldWaarde
Scherm-IDSCH-LLN-03-01
SchermnaamOefening — Startpagina / keuzeview
Doelgroep / onderdeelLeerling
Bronbestandoefenhub_leerling_03_oefening_v3_2.html
MockupversieV3.2
Screenshotbestandoefenhub_leerling_03_oefening_v3_2.png
Processtap / contextLeerling heeft binnen de categorienavigatie een categorie en concrete oefening gekozen, bijvoorbeeld Rekenen > Optellen, en kiest vervolgens of een run wordt hervat, nieuw gestart of via geschiedenis wordt bekeken.
DocumentatiestatusUitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie.
OpmerkingenDe in de mockup zichtbare categorie, oefening, resterende aantallen, afgeronde aantallen en invoerwaarde zijn voorbeeldwaarden. Deze waarden zijn dynamisch per leerling, actief niveau, categorie, oefening en runstatus.
Route / URL-patroonFunctioneel routepatroon: leerlingcontext > categorie > oefening. Technische route nader te bepalen, maar moet de actuele LevelId, CategoryId en ExerciseId server-side kunnen afleiden of valideren.
Autorisatie / vereiste rol-contextActieve leerlingcontext met toegang tot het gekozen niveau, de gekozen categorie en de gekozen actieve oefening via een geldige docentrelatie en niveauautorisatie.
Primair domeinobject / hoofdentiteitConcrete oefening binnen een toegankelijke niveau- en categoriecontext; bij acties ontstaat of wordt verwezen naar een ExerciseRun.
Gerelateerde schermen / navigatie02_frontpage, 03_frontpage_geen_docent, 05_start_nieuwe, 06_geschiedenis_overzicht, 07_geschiedenis_details.
Data-karakterOriëntatie- en startscherm; de pagina toont conditionele acties en dynamische runinformatie, maar slaat zelf nog geen nieuwe oefenrun op totdat de leerling Start nieuwe bevestigt.

4.3 Functionele beschrijving

Dit scherm is de oefening-startpagina voor één concrete oefening binnen de actieve leerlingcontext. De leerling komt hier nadat in de categorienavigatie eerst een categorie is gekozen, bijvoorbeeld Rekenen, en daarna een oefening binnen die categorie, bijvoorbeeld Optellen.

De pagina vormt de schakel tussen de leerling-frontpage of categorienavigatie en het daadwerkelijke oefenscherm. De leerling krijgt hier, afhankelijk van de eigen runhistorie, twee of drie hoofdmogelijkheden:

  1. Verder gaan
    Hiermee hervat de leerling de laatste nog niet afgeronde run voor exact deze oefening binnen het actieve niveau. Deze actie blijft visueel als actiekaart aanwezig om de layout stabiel te houden, maar is alleen actief wanneer er minimaal één niet-afgeronde run bestaat voor de combinatie leerling, niveau, categorie en oefening. Wanneer geen hervatbare run bestaat, wordt de actie disabled/grijs getoond met een beschrijvende tooltip. Wanneer meerdere niet-afgeronde runs bestaan, verwijst de actie naar de meest recente niet-afgeronde run binnen deze context.

  2. Start nieuwe
    Hiermee genereert de leerling direct een nieuwe oefenrun. De leerling kan op deze pagina uitsluitend het aantal oefeningen/opgaven kiezen. Na klikken op Start nieuwe wordt geen extra configuratiescherm getoond; het systeem maakt de run aan en opent direct het oefenscherm met de eerste vraag.

  3. Geschiedenis
    Hiermee opent de leerling de geschiedenis voor deze oefening binnen de relevante context. Deze actie blijft visueel als actiekaart aanwezig om te voorkomen dat de pagina uit balans raakt, maar is alleen actief wanneer er afgeronde, niet-test runs bestaan voor deze leerling en oefening. Wanneer er nog geen afgeronde runs zijn, wordt de actie disabled/grijs getoond met een beschrijvende tooltip of korte uitleg.

Actiekaarten en keuzevlakopbouw

De acties Verder gaan, Start nieuwe en Geschiedenis worden als duidelijke, grote keuzevlakken of actiekaarten gepresenteerd. Elk keuzevlak bevat minimaal:

  • een primaire titel;
  • een korte toelichting op de actie;
  • waar relevant een contextregel, detailwaarde of invoerveld.

Deze opbouw bewaart de oorspronkelijke UX-intentie van rustige, herkenbare startkeuzes voor leerlingen. De exacte visuele uitwerking volgt de OefenHub-componentenstijl en hoeft niet pixelvast aan oude Word- of HTML-opbouw gekoppeld te blijven.

Wanneer de leerling van actief niveau wisselt, begint de hervatcontext voor Verder gaan functioneel opnieuw. Niet-afgeronde runs uit een ander niveau worden niet als hervatoptie aangeboden, ook niet wanneer categorie- of oefeningnaam overeenkomt.

Interpretatie van mockupwaarden

De zichtbare mockupwaarden zijn voorbeelddata. Dit geldt onder andere voor:

  • de categorie- en oefeningnamen, zoals Rekenen en Optellen;
  • de tekst bij Verder gaan, zoals het aantal resterende vragen;
  • de invoerwaarde 15 bij Start nieuwe;
  • de minimum- en maximumwaarden van het aantal opgaven;
  • het aantal afgeronde oefeningen bij Geschiedenis;
  • eventuele beschrijvende introductieteksten bij de oefening.

Deze waarden mogen niet hardcoded worden. Zij worden afgeleid uit de actuele leerlingcontext, de oefenconfiguratie, de runhistorie en de geldende systeem- en modulegrenzen.

Condities voor de startwaarde en het aantal oefeningen

De waarde 15 in de mockup is geen vaste systeemwaarde. Dit is de docent-geconfigureerde standaardwaarde voor deze concrete oefening. De waarde komt uit de modulespecifieke configuratiepayload van de oefening, bijvoorbeeld uit DefaultQuestionCount binnen Exercises.ModuleConfigurationJsonBase64 of de functioneel gelijkwaardige configuratiestructuur. Functioneel betekent dit niet dat iedere run altijd 15 vragen bevat. De leerling mag de waarde aanpassen binnen de door de docent ingestelde grenzen.

Voor het aantal oefeningen gelden minimaal de volgende regels:

  • de standaardwaarde komt uit de oefeningconfiguratie die de docent heeft opgeslagen voor deze concrete oefening;
  • de minimumwaarde komt uit dezelfde oefeningconfiguratie, bijvoorbeeld MinimumQuestionCount;
  • de maximumwaarde komt uit dezelfde oefeningconfiguratie, bijvoorbeeld MaximumQuestionCount;
  • de docent mag in de moduleconfiguratie geen maximum vastleggen dat boven het sitebrede absolute maximum van 100 uitkomt;
  • de leerlinginvoer moet bij starten binnen de docent-geconfigureerde minimum- en maximumgrens vallen;
  • de runtime moet alsnog server-side afdwingen dat het aangevraagde aantal niet boven het absolute systeemmaximum van 100 uitkomt, ook wanneer configuratie of clientstate onjuist is;
  • de definitief aangevraagde waarde wordt bij het genereren opgeslagen als ExerciseRuns.RequestedQuestionCount;
  • het daadwerkelijke aantal gegenereerde vragen wordt vastgelegd als ExerciseRuns.TotalQuestions;
  • bij ongeldige invoer wordt geen run aangemaakt en krijgt de leerling een begrijpelijke validatiemelding.

Proces bij Start nieuwe

Wanneer de leerling op Start nieuwe klikt, is dit de functionele trigger voor het genereren van een volledig nieuwe oefenrun op basis van de concrete oefeningconfiguratie. Het systeem gebruikt daarbij de gekozen leerlingcontext, het actieve niveau, de gekozen categorie, de gekozen oefening, de gekoppelde technische module en de door de docent opgeslagen configuratiewaarden.

De run wordt niet pas tijdens de eerste vraag gedeeltelijk opgebouwd. Eerst moet de run server-side worden aangemaakt, inclusief de uniforme runmetadata, het aangevraagde aantal vragen, het daadwerkelijk gegenereerde aantal vragen en de benodigde vraag-/voortgangsrecords of modulepayload voor de volledige reeks. Pas wanneer deze generatie succesvol is afgerond en persistent is vastgelegd, wordt de leerling doorgestuurd naar het oefenscherm met vraag 1.

Wanneer generatie of opslag faalt, mag de leerling niet naar het oefenscherm worden doorgestuurd. In dat geval blijft de leerling op deze startpagina en krijgt deze een begrijpelijke foutmelding. Er mag geen half bruikbare run ontstaan die later als normale geschiedenisregel of hervatbare run wordt behandeld.

4.4 UI-elementen en velddefinities

Element-IDTypeGUI-verwijzingOmschrijvingZichtbaar labelOpmerkingTechnische naam
SCH-LLN-03-01-S01SectionVolledige paginaStartpagina voor één gekozen oefening binnen de actieve leerlingcontext.OefeningBevat breadcrumb, introductie en conditionele actiekaarten.StudentExerciseStartPage
SCH-LLN-03-01-B01Button / linkBreadcrumb — terug naar categorie/frontpageNavigatielink terug naar de voorafgaande categorie- of frontpagecontext.Dynamisch, bijvoorbeeld RekenenLabel is afhankelijk van gekozen categorie en routeherkomst.ExerciseBreadcrumbBackLink
SCH-LLN-03-01-F01FieldBreadcrumb / titelcontextNaam van de gekozen categorie.RekenenDynamische voorbeeldwaarde uit de mockup.SelectedCategoryName
SCH-LLN-03-01-F02FieldBreadcrumb / titelcontextNaam van de gekozen oefening.OptellenDynamische voorbeeldwaarde uit de mockup.SelectedExerciseName
SCH-LLN-03-01-S02SectionIntroblokToont de naam en korte uitleg van de gekozen oefening.OptellenTekst en naam zijn afhankelijk van oefenconfiguratie en content.ExerciseIntroSection
SCH-LLN-03-01-F03FieldIntroblok — titelTitel van de gekozen oefening.OptellenAfgeleid uit concrete oefening binnen de gekozen categorie.ExerciseTitle
SCH-LLN-03-01-F04FieldIntroblok — uitlegKorte introductietekst bij de oefening.Dynamische oefenuitlegKan uit oefencontent of modulespecifieke beschrijving komen.ExerciseIntroText
SCH-LLN-03-01-S03SectionActiekaart linksActiekaart voor het hervatten van een niet-afgeronde run.Verder gaanBlijft zichtbaar; actief wanneer een hervatbare run bestaat en disabled/grijs met tooltip wanneer die ontbreekt.ContinueRunActionCard
SCH-LLN-03-01-F05FieldVerder gaan — detailToont hoeveel vragen nog openstaan binnen de te hervatten run.Nog <aantal> van de <totaal> resterendDynamisch op basis van runvoortgang. Bij ontbreken van een hervatbare run toont de kaart een disabled staat met verklarende tooltip of korte tekst.ContinueRunRemainingQuestionsText
SCH-LLN-03-01-B02ButtonVerder gaan — knopHervat de meest recente niet-afgeronde run binnen deze oefening en dit actieve niveau.Verder gaanStart geen nieuwe run; gebruikt bestaande ExerciseRun.ContinueRunButton
SCH-LLN-03-01-S04SectionActiekaart middenActiekaart voor het genereren van een nieuwe run.Start nieuweAltijd beschikbaar voor een leerling zolang de oefening actief en geautoriseerd is.StartNewRunActionCard
SCH-LLN-03-01-F06FieldStart nieuwe — invoerveldInvoer voor het aantal te genereren oefeningen/opgaven.Aantal oefeningenStandaardwaarde komt uit docent-geconfigureerde oefeninginstellingen, maar is wijzigbaar binnen de geconfigureerde minimum- en maximumgrenzen.RequestedQuestionCountInput
SCH-LLN-03-01-B03ButtonStart nieuwe — knopStart server-side de generatie van een volledige nieuwe oefenrun op basis van de oefeningconfiguratie en opent daarna het oefenscherm.Start nieuweVervolgscherm: 05_start_nieuwe, pas na succesvolle runcreatie en vraaggeneratie.StartNewRunButton
SCH-LLN-03-01-S05SectionActiekaart rechtsActiekaart voor het openen van de geschiedenis van deze oefening.GeschiedenisBlijft zichtbaar; actief wanneer afgeronde runs bestaan en disabled/grijs met tooltip wanneer die ontbreken.ExerciseHistoryActionCard
SCH-LLN-03-01-F07FieldGeschiedenis — detailToont het aantal afgeronde runs voor deze leerling en oefening.<aantal> oefeningen afgerondDynamisch; afgeronde niet-test runs tellen mee.CompletedRunsCountText
SCH-LLN-03-01-B04ButtonGeschiedenis — knopOpent de oefeninggebonden geschiedenis.Bekijk geschiedenisVervolgscherm: 06_geschiedenis_overzicht.ViewExerciseHistoryButton
SCH-LLN-03-01-M01MessageValidatie aantal oefeningenBegrijpelijke melding wanneer het ingevoerde aantal buiten toegestane grenzen valt.Dynamische foutmeldingAlleen zichtbaar bij validatiefout.RequestedQuestionCountValidationMessage

4.5 Waardelagen

Element-IDGUI-verwijzingZichtbaar labelTechnische naamDatabronWaardebronDatatypeBewerkbaarValidatie / regel
SCH-LLN-03-01-S01Volledige paginaOefeningStudentExerciseStartPageUsers, actieve leerlingcontext, TeacherStudentLevelAccess, TeacherLevels, TeacherLevelCategories, Categories, ExercisesSamengestelde view op basis van gekozen categorie en oefening binnen toegankelijke leerlingcontextComposite viewNeePagina mag alleen laden wanneer de leerling toegang heeft tot het actieve niveau en de oefening actief beschikbaar is.
SCH-LLN-03-01-B01Breadcrumb — terug naar categorie/frontpageDynamischExerciseBreadcrumbBackLinkRoutecontext + actieve categorie/oefeningAfgeleid uit herkomstroute en gekozen categorieLinkNeeTerugnavigatie mag geen toegang geven tot categorieën of oefeningen buiten de geautoriseerde context.
SCH-LLN-03-01-F01Breadcrumb / titelcontextRekenenSelectedCategoryNameCategories.Name via actieve TeacherLevelCategories-koppelingDatabaseStringNeeNaam is dynamisch; categorie moet actief/toegankelijk zijn binnen het actieve niveau.
SCH-LLN-03-01-F02Breadcrumb / titelcontextOptellenSelectedExerciseNameExercises.NameDatabaseStringNeeNaam is dynamisch; oefening moet actief zijn en binnen de gekozen categorie/niveaucontext vallen.
SCH-LLN-03-01-F03Introblok — titelOptellenExerciseTitleExercises.Name of modulespecifieke weergavetitel indien functioneel toegestaanDatabase / afgeleidStringNeeMag niet los afwijken van de gekozen oefeningcontext.
SCH-LLN-03-01-F04Introblok — uitlegDynamische oefenuitlegExerciseIntroTextOefenconfiguratie, modulebeschrijving of beheerbaar contentblok afhankelijk van definitieve implementatieDatabase / module / contentString / rich textNeeTekst is read-only voor leerling en mag geen configuratievelden expose-en.
SCH-LLN-03-01-S03Actiekaart linksVerder gaanContinueRunActionCardExerciseRuns met UserId, LevelId, CategoryId, ExerciseId, IsCompleted = false, IsTestRun = falseBerekend uit runstatusSection / conditionalNeeKaart blijft zichtbaar; knop is actief wanneer minimaal één hervatbare run bestaat voor exact deze context en disabled/grijs met tooltip wanneer die ontbreekt.
SCH-LLN-03-01-F05Verder gaan — detailNog <aantal> van de <totaal> resterendContinueRunRemainingQuestionsTextExerciseRuns.TotalQuestions, ExerciseRuns.CompletedQuestionCount, eventueel ExerciseRunProgress.IsCompletedBerekendStringNeeResterend aantal = totaal aantal vragen minus afgeronde vragen binnen de geselecteerde hervatbare run.
SCH-LLN-03-01-B02Verder gaan — knopVerder gaanContinueRunButtonMeest recente niet-afgeronde ExerciseRun binnen dezelfde leerling-, niveau-, categorie- en oefeningcontextBerekend / actieButtonJa, actieBij meerdere niet-afgeronde runs wordt de laatste niet-afgeronde run gekozen; runs uit andere niveaus worden niet hervat.
SCH-LLN-03-01-S04Actiekaart middenStart nieuweStartNewRunActionCardExercises, ExerciseModules, moduleconfiguratie en autorisatiecontextAfgeleid uit actieve oefening en modulebeschikbaarheidSection / actionNeeAlleen beschikbaar wanneer de oefening actief is en de leerling toegang heeft.
SCH-LLN-03-01-F06Start nieuwe — invoerveldAantal oefeningenRequestedQuestionCountInputExercises.ModuleConfigurationJsonBase64 met o.a. DefaultQuestionCount, MinimumQuestionCount en MaximumQuestionCount; bij opslaan naar ExerciseRuns.RequestedQuestionCountUser input met database-default uit oefeningconfiguratieIntegerJaDefault, minimum en maximum komen uit de door de docent opgeslagen moduleconfiguratie van deze concrete oefening. De docentconfiguratie mag het absolute systeemmaximum van 100 niet overschrijden; runtime validatie blijft server-side afdwingen dat leerlinginvoer binnen de opgeslagen min/max en het absolute maximum valt. Ongeldige invoer blokkeert runcreatie.
SCH-LLN-03-01-B03Start nieuwe — knopStart nieuweStartNewRunButtonExerciseRuns, ExerciseRunProgress, Exercises, ExerciseModules, Exercises.ModuleConfigurationJsonBase64Actie / user inputButtonJa, actieValideert invoer, genereert server-side de volledige run op basis van de concrete oefeningconfiguratie, legt runmetadata en vraag-/voortgangsdata persistent vast en navigeert pas daarna naar het oefenscherm met vraag 1. Bij fout in generatie of opslag blijft de leerling op deze pagina en wordt geen normale hervatbare of afgeronde run beschikbaar gemaakt.
SCH-LLN-03-01-S05Actiekaart rechtsGeschiedenisExerciseHistoryActionCardExerciseRuns met IsCompleted = true, CompletedAtUtc gevuld en IsTestRun = falseBerekend uit afgeronde runhistorieSection / conditionalNeeKaart blijft zichtbaar; knop is actief wanneer minimaal één afgeronde run bestaat voor deze leerling en oefeningcontext en disabled/grijs met tooltip wanneer die ontbreekt.
SCH-LLN-03-01-F07Geschiedenis — detail<aantal> oefeningen afgerondCompletedRunsCountTextExerciseRunsBerekendString / integer in tekstNeeAlleen afgeronde, niet-test runs tellen mee; niet-afgeronde runs verschijnen niet in geschiedenis.
SCH-LLN-03-01-B04Geschiedenis — knopBekijk geschiedenisViewExerciseHistoryButtonRoute naar oefeninggebonden geschiedenis met leerling-, niveau-, categorie- en oefeningcontextNavigatieButtonJa, actieOpent alleen geschiedenis die de leerling zelf mag bekijken.
SCH-LLN-03-01-M01Validatie aantal oefeningenDynamische foutmeldingRequestedQuestionCountValidationMessageValidatieregels van invoerveld en module/systeemgrenzenBerekend / validatieStringNeeMeldt concreet waarom runcreatie niet kan doorgaan, bijvoorbeeld te laag, te hoog of geen geldig getal.

4.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.

SchermrequirementDektSchermcontext
REQ-SCH-LLN-03-01-01SRS-CAT-001
AC-CAT-001
Na keuze van een categorie en oefening een oefening-startpagina tonen voor exact die combinatie binnen de actieve leerlingcontext
REQ-SCH-LLN-03-01-02SRS-AUTH-001
AC-AUTH-001
Vóór het tonen van de oefening-startpagina server-side controleren of de leerling toegang heeft tot het actieve niveau, de gekozen categorie en de gekozen actieve oefening
REQ-SCH-LLN-03-01-03SRS-CAT-001
AC-CAT-001
Categorie- en oefeningnamen dynamisch tonen op basis van de gekozen context en mag mockupwaarden zoals Rekenen en Optellen niet hardcoded gebruiken
REQ-SCH-LLN-03-01-04SRS-LRN-010
SRS-LRN-002
AC-LRN-010
AC-LRN-002
De actie Verder gaan altijd als actiekaart tonen, maar alleen actief maken wanneer minimaal één niet-afgeronde, niet-test run bestaat voor dezelfde leerling, hetzelfde actieve niveau, dezelfde categorie en dezelfde oefening; zonder hervatbare run de actie disabled/grijs zijn met beschrijvende tooltip
REQ-SCH-LLN-03-01-05SRS-LRN-010
SRS-LRN-002
AC-LRN-010
AC-LRN-002
Wanneer meerdere hervatbare runs bestaan, Verder gaan altijd verwijzen naar de meest recente niet-afgeronde run binnen dezelfde oefening- en niveaucontext
REQ-SCH-LLN-03-01-06SRS-LRN-010
SRS-LRN-002
AC-LRN-010
AC-LRN-002
Het systeem geen-afgeronde runs uit andere niveaus niet hervatten via Verder gaan, ook niet wanneer de categorie of oefening dezelfde naam heeft
REQ-SCH-LLN-03-01-07SRS-LRN-002
SRS-LRN-003
AC-LRN-002
AC-LRN-003
De detailtekst bij Verder gaan dynamisch worden berekend uit de voortgang van de gekozen hervatbare run
REQ-SCH-LLN-03-01-08SRS-AUTH-001
SRS-LRN-001
AC-AUTH-001
AC-LRN-001
De actie Start nieuwe beschikbaar maken voor een leerling wanneer de oefening actief is en de leerling daarvoor geautoriseerd is
REQ-SCH-LLN-03-01-09SRS-RDM-006
SRS-RDM-002
SRS-RDM-001
SRS-CAT-001
AC-RDM-006
AC-RDM-002
AC-RDM-001
AC-CAT-001
Op de oefening-startpagina uitsluitend het aantal oefeningen/opgaven als leerlinginvoer aanbieden en geen extra configuratiescherm tonen vóór het starten
REQ-SCH-LLN-03-01-10SRS-RDM-006
SRS-RDM-002
SRS-RDM-001
SRS-CAT-001
AC-RDM-006
AC-RDM-002
AC-RDM-001
AC-CAT-001
Het invoerveld Aantal oefeningen als standaardwaarde de docent-geconfigureerde default uit de oefeningconfiguratie tonen, bijvoorbeeld DefaultQuestionCount, en mag mockupwaarde 15 niet als vaste systeemwaarde gebruiken
REQ-SCH-LLN-03-01-11SRS-RDM-006
SRS-RDM-002
SRS-RDM-001
SRS-CAT-001
AC-RDM-006
AC-RDM-002
AC-RDM-001
AC-CAT-001
De ingevoerde waarde voor Aantal oefeningen valideren tegen de docent-geconfigureerde minimum- en maximumwaarde uit de oefeningconfiguratie en tegen het absolute systeemmaximum van 100
REQ-SCH-LLN-03-01-12SRS-RDM-006
SRS-RDM-002
SRS-RDM-001
SRS-LRN-001
AC-RDM-006
AC-RDM-002
AC-RDM-001
AC-LRN-001
Het systeem mag geen nieuwe ExerciseRun aanmaken wanneer het opgegeven aantal oefeningen ongeldig is
REQ-SCH-LLN-03-01-13SRS-RDM-006
SRS-RDM-002
SRS-RDM-001
SRS-LRN-001
SRS-LRN-003
AC-RDM-006
AC-RDM-002
AC-RDM-001
AC-LRN-001
AC-LRN-003
Bij een geldige klik op Start nieuwe het systeem direct een nieuwe ExerciseRun aanmaken, het gevraagde aantal opslaan als RequestedQuestionCount en het oefenscherm openen met de eerste vraag
REQ-SCH-LLN-03-01-14SRS-LRN-010
AC-LRN-010
De aangemaakte run historisch koppelen aan de leerling, het actieve niveau, de categorie, de oefening en de gebruikte technische moduleversie
REQ-SCH-LLN-03-01-15SRS-LRN-010
AC-LRN-010
De actie Geschiedenis altijd als actiekaart tonen, maar alleen actief maken wanneer afgeronde, niet-test runs voor deze leerling en oefeningcontext bestaan; zonder afgeronde runs de actie disabled/grijs zijn met beschrijvende tooltip
REQ-SCH-LLN-03-01-16SRS-RDM-006
SRS-RDM-002
SRS-RDM-001
SRS-LRN-010
AC-RDM-006
AC-RDM-002
AC-RDM-001
AC-LRN-010
Het aantal afgeronde oefeningen bij Geschiedenis dynamisch worden berekend uit afgeronde, niet-test ExerciseRuns en geen uit modulepayloads of mockuptekst worden afgeleid
REQ-SCH-LLN-03-01-17SRS-LRN-010
SRS-LRN-002
AC-LRN-010
AC-LRN-002
Niet-afgeronde runs geen meetellen als afgeronde geschiedenis en mogen alleen via hervatten of technische herstelroutes relevant blijven
REQ-SCH-LLN-03-01-18SRS-LRN-010
SRS-LRN-002
AC-LRN-010
AC-LRN-002
Voor Verder gaan en Geschiedenis een begrijpelijke disabled staat met tooltip of korte uitleg tonen wanneer de onderliggende runs ontbreken, zodat de driekaart-layout visueel behouden blijft
REQ-SCH-LLN-03-01-19SRS-AUTH-004
AC-AUTH-004
De oefening-startpagina mag geen technische identifiers zoals GUID's, module-id's of interne run-id's zichtbaar tonen aan de leerling
REQ-SCH-LLN-03-01-20SRS-RDM-006
SRS-RDM-002
SRS-RDM-001
SRS-LRN-003
AC-RDM-006
AC-RDM-002
AC-RDM-001
AC-LRN-003
Zichtbare aantallen, voortgangswaarden en runstatussen op dit scherm dynamisch worden afgeleid en geen als vaste testdata worden geïmplementeerd
REQ-SCH-LLN-03-01-21SRS-AUTH-001
SRS-LRN-001
AC-AUTH-001
AC-LRN-001
Een geldige klik op Start nieuwe de server-side generatie van een volledige nieuwe oefenrun starten op basis van de gekozen leerlingcontext, het actieve niveau, de gekozen categorie, de gekozen oefening, de gekoppelde technische module en de door de docent opgeslagen oefeningconfiguratie
REQ-SCH-LLN-03-01-22SRS-LRN-001
SRS-LRN-003
AC-LRN-001
AC-LRN-003
Bij het genereren van een nieuwe run zowel de uniforme runmetadata als de volledige vraag-/voortgangsreeks of modulepayload persistent vastleggen voordat de leerling naar het oefenscherm wordt doorgestuurd
REQ-SCH-LLN-03-01-23SRS-LRN-003
AC-LRN-003
Pas navigeren naar het oefenscherm met vraag 1 nadat runcreatie, vraaggeneratie en opslag succesvol zijn afgerond
REQ-SCH-LLN-03-01-24SRS-LRN-010
SRS-LRN-002
AC-LRN-010
AC-LRN-002
Wanneer runcreatie, vraaggeneratie of opslag faalt, mag het systeem de leerling niet naar het oefenscherm sturen en mag er geen half bruikbare run als normale hervatbare run of geschiedenisrecord beschikbaar komen
REQ-SCH-LLN-03-01-25SRS-LRN-002
SRS-LRN-010
AC-LRN-002
AC-LRN-010
De acties Verder gaan, Start nieuwe en Geschiedenis als herkenbare keuzevlakken tonen met minimaal titel, korte toelichting en waar relevant een contextregel, detailwaarde of invoerveld; exacte styling volgt de OefenHub-componentenstijl

4.7 Technische koppeling

Voor technische uitwerking zijn vooral relevant: