Skip to main content

UC-LLN-TOEG-002 — Beschikbare oefeningen bekijken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-TOEG-002
NaamBeschikbare oefeningen bekijken
DomeinLeerling / Oefenaanbod en toegang
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, autorisatielaag, database, oefening-readmodel, routeguard
RolcontextIngelogde leerling met geldige actieve niveaucontext en een gekozen categorie binnen die context.
Betrokken schermenCategoriepagina, oefeningenlijst binnen categorie, leerlingnavigatie, oefeningstartlink, routeguard.
Gerelateerde usecasesUC-LLN-TOEG-001 — Beschikbare categorieën bekijken; UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen; UC-LLN-OEF-001 — Oefening-startpagina openen; UC-LLN-FP-001 — Leerling-frontpage bekijken
Primaire entiteitenUsers, UserSettings, TeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises
Secundaire entiteiten / eventsCategories, ExerciseModules, TeacherStudentLevelAccess, UserRelationships
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een leerling binnen een toegankelijke categorie de beschikbare oefeningen bekijkt. De oefenlijst is een afgeleide weergave van concrete docent-oefeningen die via een niveau- categorie-koppeling aan het actieve niveau beschikbaar zijn gemaakt. Een oefening is pas zichtbaar wanneer zowel de niveaucontext, de categorie-koppeling, de oefenkoppeling als de oefening zelf functioneel actief zijn.

De leerling ziet geen technische moduleconfiguratie, geen onderhoudsoefeningen en geen oefeningen die alleen voor docenttesten bedoeld zijn. De lijst is bedoeld als veilige ingang naar de oefeningstartpagina. Het openen of starten van een oefening wordt alsnog opnieuw server-side gecontroleerd in UC-LLN-TOEG-003 en de oefenflows. Hierdoor blijft de oefeningenlijst een readmodel en geen autorisatiebron.

Deze usecase maakt geen exercise run aan. Nieuwe runs ontstaan pas wanneer de leerling in de oefenflow daadwerkelijk kiest voor het starten van een nieuwe oefening. Het bekijken van beschikbare oefeningen mag ook geen geschiedenis, statistieken, relaties of systeemberichten aanpassen.

3. Scope

Deze usecase omvat wel:

  • laden van oefeningen binnen een gekozen categorie
  • controleren dat de categorie bij de actuele niveaucontext hoort
  • server-side filteren op actieve oefenkoppeling en actieve oefening
  • uitsluiten van oefeningen in onderhoud
  • tonen van leerlinggeschikte oefennaam en icoon
  • sorteren van oefeningen binnen de categorie
  • tonen van lege staat wanneer de categorie geen beschikbare oefeningen meer bevat
  • voorbereiden van een veilige route naar de oefeningstartpagina

Deze usecase omvat niet:

  • aanmaken of bewerken van oefeningen
  • wijzigen van moduleconfiguratie
  • starten of genereren van een exercise run
  • beantwoorden van vragen
  • resultaatweergave of geschiedenis
  • docent-testmodus
  • delen van oefeningen met vrienden
  • modulebeheer of modulemigratie
  • wijzigen van categorieën of niveauautorisaties

DRY-afbakening voor deze usecase: beheer van niveaus, categorieën, oefeningen, relaties en autorisaties blijft bij de daarvoor bedoelde docent-, beheerder-, profiel- en relatieusecases. Deze usecase gebruikt de uitkomst daarvan als toegangsvoorwaarde en maakt die processen niet opnieuw bronhoudend.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is ingelogd als leerling.
PRE-002Er is een geldige actieve niveaucontext.
PRE-003De gekozen categorie is binnen die niveaucontext zichtbaar volgens UC-LLN-TOEG-001.
PRE-004De backend kan de categorie- en oefenkoppelingen server-side valideren.
PRE-005De oefeningenlijst wordt opgebouwd uit actuele databasegegevens en niet uit oude clientcache.

5. Post-condities

IDResultaat
POST-001De leerling ziet alleen oefeningen die binnen de gekozen categorie en actieve niveaucontext beschikbaar zijn.
POST-002Oefeningen in onderhoud of inactieve oefenkoppelingen zijn niet zichtbaar als startbare oefening.
POST-003De getoonde oefennaam en het icoon komen uit Exercises.
POST-004Er is geen exercise run aangemaakt.
POST-005Een vervolg naar de oefeningstartpagina blijft opnieuw server-side controleplichtig.
POST-006Bij lege oefenlijst wordt geen automatische fallbackoefening gekozen.

6. Trigger

De usecase start wanneer de leerling een beschikbare categorie kiest of wanneer de frontend de oefeningenlijst voor een categorie binnen het actieve niveau moet laden.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingCategorieoverzichtKiest een categorie.Frontend vraagt beschikbare oefeningen op.Categorie-id is routecontext, geen autorisatiebron.
2FrontendOefeningenlijstStuurt categorie- en niveaucontext naar backend.Backend gebruikt sessiecontext als waarheid.UserId uit sessie.
3BackendAutorisatielaagValideert leerlingrol en actieve niveaucontext.Bij ongeldige context wordt de lijst niet vrijgegeven.Server-side check.
4BackendCategoriecontroleControleert dat categorie actief aan het niveau is gekoppeld.Alleen geldige niveau-categorie blijft over.TeacherLevelCategories.
5BackendOefenkoppelingenHaalt actieve TeacherLevelCategoryExercises op.Inactieve koppelingen vallen af.IsActive = true.
6BackendOefeningenLeest gekoppelde Exercises.Alleen actieve oefeningen komen in het readmodel.Exercises.IsActive = true.
7BackendModulecontextControleert of de gekoppelde technische module regulier bruikbaar is waar nodig.Niet-bruikbare oefening wordt niet als startbare optie aangeboden.ExerciseModules als technische randvoorwaarde.
8BackendSorteringSorteert op categorievolgorde en oefenvolgorde.Response is stabiel en leerlinggeschikt.SortOrder.
9FrontendOefeningenlijstToont beschikbare oefeningen.Leerling ziet naam, icoon en startbare route.Geen configuratiepayload tonen.
10LeerlingOefeningenlijstKiest een oefening.Vervolg naar UC-LLN-TOEG-003.Toegang opnieuw controleren.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Niveaucontext ontbreekt of is verlopen.Oefeningenlijst wordt niet getoond; bestaande contextflow neemt over.Geen popupregister-popup.Geen.
ALT-0024Categorie hoort niet bij actief niveau.Backend retourneert geen oefeningen en routeguard blokkeert vervolg.Geen.Geen.
ALT-0035Geen actieve oefenkoppelingen.Frontend toont lege staat voor deze categorie.Leegstaatcomponent.Geen.
ALT-0046Oefening staat in onderhoud.Oefening wordt niet getoond als leerlingoptie.Geen.Geen.
ALT-0057Technische module is niet beschikbaar voor regulier gebruik.Oefening wordt niet als startbaar aangeboden of bij vervolg geblokkeerd.Geen domeinpopup.Geen.
ALT-0068Oefenvolgorde bevat dubbele waarden.Systeem gebruikt stabiele fallbacksortering.Geen.Geen.
ALT-00710Leerling opent oude link naar niet meer beschikbare oefening.Vervolgroute wordt geblokkeerd in UC-LLN-TOEG-003.Routeguardafhandeling.Geen.

9. Business rules

IDRegel
BR-001Een oefening is voor een leerling alleen zichtbaar wanneer zij binnen een toegankelijke niveau-categorie actief gekoppeld is.
BR-002Een inactieve oefening of oefening in onderhoud wordt niet als startbare leerlingoefening getoond.
BR-003Een inactieve TeacherLevelCategoryExercises-koppeling maakt de oefening onzichtbaar in die categoriecontext.
BR-004De oefeningenlijst toont geen moduleconfiguratiepayload.
BR-005De oefeningenlijst maakt geen exercise run aan.
BR-006Het openen van een oefening vanuit de lijst vereist opnieuw server-side controle.
BR-007Een lege categorie veroorzaakt geen automatische keuze van een andere categorie of oefening.
BR-008Historische runs of eerder zichtbare oefeningen bepalen niet de actuele oefeningenlijst.
BR-009Docent-testzichtbaarheid is geen leerlingzichtbaarheid.
BR-010Clientcache mag een verdwenen of gedeactiveerde oefening niet startbaar houden.

10. Datavalidatie

Veld / objectValidatie
Categorie-idMoet horen bij een actieve TeacherLevelCategories-koppeling binnen het actuele niveau.
OefenkoppelingMoet actief zijn binnen TeacherLevelCategoryExercises.
OefeningMoet bestaan en Exercises.IsActive = true hebben.
Technische moduleMoet regulier bruikbaar zijn voor leerlinggebruik wanneer de oefening startbaar wordt aangeboden.
LeerlingcontextMoet server-side geldig zijn.
SorteringMag ontbreken zonder de autorisatiebeslissing te beïnvloeden.
Route naar oefeningMag niet worden beschouwd als bewijs van toegang.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
1ReadTeacherLevelCategoriesCategoriecontext wordt gecontroleerd.
5ReadTeacherLevelCategoryExercisesActieve oefenkoppelingen worden gelezen.
6ReadExercisesActieve oefeningen worden gelezen.
7ReadExerciseModulesReguliere bruikbaarheid wordt gecontroleerd.

Deze usecase kent geen persistente domeinevents. De oefeningenlijst is een actuele server-side afleiding en geen bronrecord.

12. Geen datamutaties

EntiteitReden
ExercisesLeerling bekijkt oefeningen maar wijzigt ze niet.
TeacherLevelCategoryExercisesKoppeling wordt gelezen maar niet aangepast.
ExerciseRunsRun ontstaat pas in startflow.
ExerciseHistoryGeen oefenwijziging.
UserSettingsCategorie bekijken wijzigt geen niveaukeuze.
SystemMessagesGeen systeembericht.

13. State diagram

Niet van toepassing. Deze usecase raakt geen persistent statusobject met een eigen lifecycle. Toegang en zichtbaarheid worden afgeleid uit actuele niveaucontext, autorisaties, actieve relaties en contentstatussen.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingNiet van toepassingDeze usecase gebruikt routeguard-, leegstaat- of componentgedrag en geen popupregister-popup.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpFunctioneel Ontwerp beschrijft zichtbaar oefenaanbod, niveaucontext, categorie-/oefeningtoegang en veilige blokkades.
Technisch OntwerpTechnisch Ontwerp: autorisatie en contextcontrole, oefencatalogus, readmodels en frontend-routing beschrijft de technische afbakening, server-side brondata, autorisatie en UI-compositie voor deze usecase.
Software Requirements SpecificationSoftware Requirements Specification bevat centrale eisen en acceptatiecriteria voor aanbodfiltering, server-side autorisatie, blokkades en geen ongewenste datamutaties.
Database-informatieDatabase-informatie blijft bron voor catalogus-, autorisatie- en soft-linkrelaties waarmee zichtbaar aanbod server-side wordt bepaald.
OntwerpbronnenOntwerpbronnen bevatten aanvullende businessregels voor oefenaanbod, niveaus, categorieën en autorisatiegrenzen.

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-afleidingDektUsecasecontext
REQ-UC-LLN-TOEG-002-001SRS-AUTH-001
SRS-RDM-001
SRS-RDM-005
SRS-CAT-006
SRS-LRN-009
AC-AUTH-001
AC-RDM-001
AC-RDM-005
AC-CAT-006
AC-LRN-009
Oefeningen voor leerlingen server-side filteren op categorie en actuele niveaucontext
REQ-UC-LLN-TOEG-002-002SRS-LRN-009
AC-LRN-009
Alleen actieve oefenkoppelingen tonen
REQ-UC-LLN-TOEG-002-003SRS-LRN-001
AC-LRN-001
Alleen actieve oefeningen als startbare leerlingoptie tonen
REQ-UC-LLN-TOEG-002-004SRS-LRN-001
AC-LRN-001
Oefeningen in onderhoud niet tonen als startbare leerlingoefening
REQ-UC-LLN-TOEG-002-005SRS-LRN-009
AC-LRN-009
Het bekijken van oefeningen uitvoeren zonder exercise run aan te maken
REQ-UC-LLN-TOEG-002-006SRS-AUTH-001
SRS-LRN-009
AC-AUTH-001
AC-LRN-009
Het openen van een oefening opnieuw server-side laten controleren
REQ-UC-LLN-TOEG-002-007SRS-RDM-001
SRS-RDM-005
SRS-CAT-001
SRS-LRN-009
AC-RDM-001
AC-RDM-005
AC-CAT-001
AC-LRN-009
Een lege staat tonen wanneer een categorie geen beschikbare oefeningen bevat
REQ-UC-LLN-TOEG-002-008SRS-RDM-001
SRS-RDM-005
SRS-LRN-009
SRS-MOD-003
AC-RDM-001
AC-RDM-005
AC-LRN-009
AC-MOD-003
Moduleconfiguratiepayloads niet in de leerlinglijst tonen
REQ-UC-LLN-TOEG-002-009SRS-LRN-009
SRS-TCH-005
AC-LRN-009
AC-TCH-005
Docent-testzichtbaarheid niet verwarren met leerlingzichtbaarheid
REQ-UC-LLN-TOEG-002-010SRS-LRN-009
AC-LRN-009
Oefeningvolgorde stabiel kunnen bepalen
REQ-UC-LLN-TOEG-002-011SRS-LRN-009
SRS-MOD-003
SRS-NFR-SEC-001
AC-LRN-009
AC-MOD-003
AC-NFR-SEC-001
Technische moduleonbeschikbaarheid veilig afhandelen
REQ-UC-LLN-TOEG-002-012SRS-RDM-001
SRS-LRN-009
SRS-GUA-001
AC-RDM-001
AC-LRN-009
AC-GUA-001
Verouderde lijstitems corrigeren op basis van actuele backenddata