Skip to main content

UC-LLN-FP-003 — Populaire categorieën en oefeningen tonen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-FP-003
NaamPopulaire categorieën en oefeningen tonen
DomeinLeerling / Frontpage en niveaucontext
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, routeguard, autorisatielaag, database, frontpage-readmodel
RolcontextIngelogde gebruiker met rol Leerling en een geldige of te herstellen niveaucontext.
Betrokken schermenLeerling-frontpage, leerlingnavigatie, frontpageblokken, routeguard voor leerlingroutes.
Gerelateerde usecasesUC-LLN-FP-001 — Leerling-frontpage bekijken; UC-LLN-FP-002 — Actieve niveaucontext toepassen; UC-LLN-TOEG-001 — Beschikbare categorieën bekijken; UC-LLN-TOEG-002 — Beschikbare oefeningen bekijken; UC-LLN-RES-001 — Resultaat na afronding bekijken
Primaire entiteitenExerciseRuns, TeacherLevels, TeacherLevelCategories, Categories, TeacherLevelCategoryExercises, Exercises
Secundaire entiteiten / eventsPopulaire-categorieënreadmodel
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe het blok Populaire categorieën op de leerling-frontpage wordt samengesteld. Het blok is een afgeleid overzicht op basis van afgeronde exercise runs binnen de actuele, toegankelijke niveaucontext van de leerling. Het doel is de leerling snel terug te leiden naar veelgebruikte categorieën en oefeningen zonder een apart populariteitsmodel of cachetabel als bron van waarheid te introduceren.

Alleen categorieën tellen mee waarvoor de leerling op dat moment binnen het actieve niveau toegang heeft. Populariteit wordt bepaald op basis van het aantal afgeronde exercise runs binnen die context. Onder elke populaire categorie worden maximaal drie populaire oefeningen getoond, eveneens afgeleid uit afgeronde runs binnen hetzelfde actieve niveau en dezelfde toegankelijke context.

Het blok is presentatief en oriënterend. Klikken op een populaire categorie of oefening blijft een normale vervolgactie waarbij categorie- en oefeningtoegang opnieuw server-side worden gecontroleerd. Als er nog geen afgeronde runs zijn of als eerder populaire inhoud niet langer toegankelijk is, toont het systeem geen misleidende populaire ingang.

3. Scope

Deze usecase omvat wel:

  • bepalen van populaire categorieën voor de ingelogde leerling
  • tellen van afgeronde exercise runs binnen actuele niveaucontext
  • filteren op actuele toegang tot categorieën en oefeningen
  • tonen van maximaal drie populaire oefeningen per categorie
  • tonen van een lege of beperkte staat wanneer geen populaire data beschikbaar is
  • voorkomen van aparte frontpage- of populariteitscache als bron

Deze usecase omvat niet:

  • instellen van een verplicht niveau; dat hoort bij UC-GEN-PROF-003
  • aanmaken of wijzigen van categorieën, oefeningen of niveaus
  • toekennen of intrekken van niveauautorisaties
  • starten, genereren of afronden van een oefening
  • uitwerken van resultaten, geschiedenis of PDF-export
  • uitwerken van systeemnotificaties; die lopen via UC-GEN-NOT-001 t/m UC-GEN-NOT-003
  • opslaan van een aparte frontpagecache of frontpagebronrecord

DRY-afbakening voor deze usecase: profielbeheer, docentbeheer, relatievorming, systeemnotificaties en oefenuitvoering blijven bij hun eigen usecases. Deze frontpageusecase gebruikt alleen de uitkomsten daarvan als input of vervolgcontext.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd.
PRE-002De gebruiker heeft de rol Leerling als actieve rolcontext.
PRE-003De backend kan de actuele account- en sessiecontext server-side bepalen.
PRE-004De relevante frontpage-, niveau- en oefendata zijn beschikbaar voor uitlezing.
PRE-005Routeguard en autorisatielaag vertrouwen niet op clientstate als autorisatiebron.
PRE-006Bestaande profiel- en accountflows zijn beschikbaar voor herstel van ontbrekende context.

5. Post-condities

IDResultaat
POST-001De leerling ziet alleen informatie die binnen de actuele server-side context zichtbaar mag zijn.
POST-002Er is geen nieuwe frontpage-, sessie- of cache-entiteit aangemaakt.
POST-003Ontbrekende of ongeldige context leidt niet tot misleidende frontpageweergave.
POST-004Vervolgacties blijven onderhevig aan eigen server-side toegangscontrole.
POST-005Er zijn geen rollen, relaties, autorisaties, oefeningen of oefenruns aangemaakt of gewijzigd.
POST-006Eventuele lege staten zijn veilig en verwijzen niet naar ongeautoriseerde inhoud.

6. Trigger

De usecase start wanneer de leerling-frontpage het blok Populaire categorieën moet vullen.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1OefenHub frontendLeerling-frontpageVraagt populaire categorieën op.Backend start met sessie- en contextcontrole.Geen client-side populariteitsberekening.
2OefenHub backendSessiecontextControleert actieve leerlingcontext.Alleen geldige leerlingcontext gaat verder.Users.Id uit sessie.
3OefenHub backendNiveaucontextresolverPast actuele niveaucontext toe.Alle tellingen worden tot dit niveau beperkt.UC-LLN-FP-002.
4OefenHub backendToegangscontroleBepaalt toegankelijke categorieën.Niet-toegankelijke categorieën tellen niet mee.UC-LLN-TOEG-001.
5OefenHub backendExerciseRunsSelecteert afgeronde runs van de leerling binnen de context.Alleen afgeronde runs blijven over.CompletedAtUtc / afgeronde status vereist.
6OefenHub backendAggregatieGroepeert runs per categorie.Categorieën krijgen populariteitsscore.Aantal afgeronde runs per categorie.
7OefenHub backendAggregatieBepaalt per populaire categorie maximaal drie oefeningen.Oefeningen worden gerangschikt binnen categorie.Aantal afgeronde runs per oefening.
8OefenHub backendActuele toegangControleert of categorie en oefening nog actueel zichtbaar/startbaar zijn.Niet-actuele items vallen uit het blok.Geen historische categorie als actuele ingang.
9OefenHub backendReadmodelBouwt compacte weergave met naam, icoon, kleur en oefeningen.Frontend ontvangt afgeleid blok.Geen persistente cache.
10OefenHub frontendPopulaire-categorieënblokToont het blok of lege staat.Leerling ziet actuele populaire ingangen.Geen datamutatie.
11LeerlingPopulaire-categorieënblokKlikt eventueel op categorie of oefening.Vervolgusecase controleert toegang opnieuw.UC-LLN-TOEG-002 / UC-LLN-TOEG-003.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Geen geldige niveaucontextBlok wordt niet opgebouwd; frontpage gebruikt bestaande herstelroute.Niet van toepassingGeen
ALT-0025Geen afgeronde runs binnen actieve contextBlok wordt niet getoond of toont neutrale lege staat.Componentmelding / lege staatGeen
ALT-0038Historisch populaire categorie is niet langer toegankelijkCategorie wordt niet als actuele ingang getoond.Niet van toepassingGeen
ALT-0048Populaire oefening is in onderhoud of niet actiefOefening valt uit de lijst; categorie kan blijven als andere actieve oefeningen bestaan.Niet van toepassingGeen
ALT-0057Minder dan drie oefeningen beschikbaarSysteem toont alleen de beschikbare oefeningen.Niet van toepassingGeen
ALT-00611Leerling opent een oude populaire linkOefeningstoegang wordt opnieuw gecontroleerd en zo nodig geblokkeerd.Routeguard / componentmeldingGeen

9. Business rules

IDRegel
BR-001Populariteit op de leerling-frontpage wordt afgeleid uit afgeronde exercise runs van de huidige leerling.
BR-002Alle populariteit wordt begrensd tot de actuele actieve niveaucontext.
BR-003Alleen inhoud die actueel toegankelijk is mag als populaire ingang worden getoond.
BR-004Onder een populaire categorie worden maximaal drie populaire oefeningen getoond.
BR-005Het populariteitsblok maakt geen nieuwe cache- of samenvattingstabel aan.
BR-006Historische oefenresultaten mogen blijven bestaan, maar geven niet automatisch actuele starttoegang.
BR-007Frontendweergave mag nooit zwaarder wegen dan server-side autorisatie.
BR-008Een frontpageblok mag geen persoonsgegevens of technische identifiers tonen die niet functioneel nodig zijn.
BR-009Een lege staat mag geen automatische domeinmutatie veroorzaken.
BR-010Alle teller- en samenvattingswaarden moeten eenduidig zijn afgeleid uit bronrecords en filters.

10. Datavalidatie

Veld / objectValidatie
Exercise runMoet afgerond zijn en bij de ingelogde leerling horen.
NiveaucontextMoet overeenkomen met het actieve niveau van de frontpage.
CategorieMoet actueel toegankelijk zijn binnen de context.
OefeningMoet actief en zichtbaar/startbaar zijn binnen de context.
Aantal oefeningenMaximaal drie per getoonde populaire categorie.
FrontpagecontextMoet per request opnieuw uit server-side context worden afgeleid.
ClientstateMag alleen ondersteunend zijn en nooit autorisatie bepalen.
Lege staatMoet functioneel neutraal zijn en geen verborgen of ongeautoriseerde data lekken.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
Gehele usecaseGeen domeinmutatieNiet van toepassingDe usecase leest bestaande bronrecords en stelt een transient readmodel samen; er wordt geen functioneel domeinevent vastgelegd.

12. Geen datamutaties

EntiteitReden
ExerciseRunsTellen en groeperen wijzigt geen runs.
CategoriesCategorie-identiteit wordt alleen gelezen.
ExercisesOefeningen worden alleen gelezen.
PopulariteitscacheEr wordt geen aparte persistente populariteitscache aangemaakt.
UserSettingsDe populariteitsweergave wijzigt geen voorkeuren of niveaukeuze.
UserRolesFrontpagecontext wijzigt geen roltoekenningen.
SystemNotificationsNotificaties worden in generieke notificatieusecases verwerkt.

13. State diagram

Niet van toepassing. Deze usecase wijzigt geen persistent statusobject. De weergegeven frontpage- of bloktoestand is afgeleid uit account-, niveau-, oefen- en rungegevens en vormt geen zelfstandige lifecycle.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Populaire categorieën berekenen

16.2 Klik op populaire oefening

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingGehele usecaseDeze usecase gebruikt routeguard-, component- of lege-staatgedrag en introduceert geen popupregister-popup.

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

DoeldocumentAfleiding
Functioneel OntwerpFunctioneel Ontwerp beschrijft de leerling-frontpage, actieve niveaucontext, frontpageblokken, lege toestanden en zichtbare vervolgacties.
Technisch OntwerpTechnisch Ontwerp: rolflows, readmodels, tellers en badges en frontend-compositie 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 contextcontrole, frontpageweergave, readmodels en veilige lege toestanden.
Database-informatieDatabase-informatie blijft bron voor onderliggende tabellen, readmodelbronnen en soft-link/snapshotregels; deze usecases introduceren geen eigen frontpagetabel.
OntwerpbronnenOntwerpbronnen bevatten aanvullende businessregels voor frontpageblokken, contextafleiding en zichtbare acties.

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-FP-003-001SRS-RDM-001
SRS-RDM-005
SRS-RDM-006
SRS-CAT-006
SRS-LRN-005
AC-RDM-001
AC-RDM-005
AC-RDM-006
AC-CAT-006
AC-LRN-005
Populaire categorieën afleiden uit afgeronde exercise runs binnen de actuele leerlingniveaucontext
REQ-UC-LLN-FP-003-002SRS-CAT-001
SRS-LRN-009
SRS-NFR-PER-001
AC-CAT-001
AC-LRN-009
AC-NFR-PER-001
Onder elke populaire categorie maximaal drie populaire oefeningen tonen
REQ-UC-LLN-FP-003-003SRS-ACC-003
SRS-ACC-005
SRS-CAT-001
SRS-LRN-009
SRS-NFR-ACC-001
AC-ACC-003
AC-ACC-005
AC-CAT-001
AC-LRN-009
AC-NFR-ACC-001
Niet langer toegankelijke categorieën of oefeningen uitsluiten van populaire frontpage-ingangen
REQ-UC-LLN-FP-003-004SRS-LRN-009
AC-LRN-009
Voor dit blok geen aparte bron- of cachetabel vereisen
REQ-UC-LLN-FP-003-005SRS-RDM-001
SRS-RDM-009
SRS-LRN-009
SRS-NFR-SEC-001
AC-RDM-001
AC-RDM-009
AC-LRN-009
AC-NFR-SEC-001
Een veilige lege staat ondersteunen wanneer er geen populaire gegevens beschikbaar zijn