Skip to main content

UC-LLN-FP-004 — Recent geoefend tonen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-FP-004
NaamRecent geoefend 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-RES-001 — Resultaat na afronding bekijken; UC-LLN-HIS-001 — Oefeninggeschiedenis bekijken; UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen
Primaire entiteitenExerciseRuns, TeacherLevels, Categories, Exercises, ExerciseModules
Secundaire entiteiten / eventsRecent-geoefendreadmodel
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe het blok Recent geoefend op de leerling-frontpage wordt gevuld. Het blok toont de drie laatst afgeronde oefeningen van de huidige leerling binnen het actieve niveau. Per item wordt in compacte vorm getoond om welke categorie en oefening het gaat en wanneer deze voor het laatst is geoefend.

Recent geoefend is een afgeleide weergave op afgeronde exercise runs. Niet-afgeronde runs horen niet in dit blok thuis; die worden apart behandeld via het verder-oefenenblok. De volgorde wordt bepaald door het afrondmoment van de run, niet door startmoment, aanmaakdatum of een losse frontpagestatus.

Het blok is bedoeld als snelle oriëntatie naar recente activiteit. Het openen van een recent item moet opnieuw server-side worden gecontroleerd. Wanneer de oefening niet meer actueel startbaar is, kan resultaat- of geschiedenisweergave nog wel mogelijk zijn afhankelijk van de geschiedenisregels, maar de frontpage mag geen onjuiste starttoegang suggereren.

3. Scope

Deze usecase omvat wel:

  • selecteren van afgeronde exercise runs van de leerling
  • beperken tot de actuele niveaucontext
  • sorteren op afrondmoment aflopend
  • tonen van maximaal drie recente items
  • tonen van categorie, oefening en laatst geoefend-moment
  • onderscheiden tussen recente geschiedenis en hervatbare niet-afgeronde runs
  • tonen van lege staat wanneer de leerling nog niets heeft afgerond binnen deze context

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 Recent geoefend moet vullen.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1OefenHub frontendLeerling-frontpageVraagt recente oefenactiviteit op.Backend start contextcontrole.Geen client-side geschiedenisbron.
2OefenHub backendSessiecontextControleert ingelogde leerling.Alleen eigen runs worden gelezen.ExerciseRuns.UserId = huidige gebruiker.
3OefenHub backendNiveaucontextresolverPast actieve niveaucontext toe.Alleen runs binnen dit niveau tellen mee.UC-LLN-FP-002.
4OefenHub backendExerciseRunsFiltert op afgeronde runs.Niet-afgeronde runs vallen buiten recent geoefend.Afrondmoment vereist.
5OefenHub backendSorteringSorteert aflopend op afrondmoment.Meest recent afgerond staat bovenaan.CompletedAtUtc leidend.
6OefenHub backendSelectieNeemt maximaal drie items.Response blijft compact.Maximaal 3.
7OefenHub backendContextsnapshot / brondataBepaalt categorie- en oefeningnaam voor weergave.Frontend krijgt betekenisvolle tekst, geen technische ids.Historische context waar nodig.
8OefenHub backendReadmodelBouwt compact recent-geoefendblok.Blok bevat categorie, oefening en laatst geoefend.Geen statistiekherberekening.
9OefenHub frontendRecent-geoefendblokToont de drie recente items of lege staat.Leerling ziet recente activiteit.Geen datamutatie.
10LeerlingRecent-geoefendblokKlikt eventueel op item.Vervolg bepaalt of resultaat, geschiedenis of startpagina wordt geopend.Vervolgroute controleert toegang opnieuw.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Geen geldige niveaucontextBlok wordt niet opgebouwd; frontpage gebruikt herstelroute.Niet van toepassingGeen
ALT-0024Geen afgeronde runs binnen actieve contextBlok wordt niet getoond of toont neutrale lege staat.Componentmelding / lege staatGeen
ALT-0037Actuele oefennaam is gewijzigd na afrondingWeergave gebruikt de vastgelegde historische of functioneel juiste context volgens geschiedenisregels.Niet van toepassingGeen
ALT-00410Oefening is niet meer startbaarSysteem mag resultaat/geschiedenis tonen, maar blokkeert nieuwe start indien toegang ontbreekt.Routeguard / componentmeldingGeen
ALT-0056Minder dan drie afgeronde runs bestaanSysteem toont alleen beschikbare items.Niet van toepassingGeen
ALT-0064Run is testrun of niet voor leerlinggeschiedenis bedoeldRun telt niet mee in recent geoefend.Niet van toepassingGeen

9. Business rules

IDRegel
BR-001Recent geoefend toont maximaal drie laatst afgeronde exercise runs binnen het actieve niveau.
BR-002Niet-afgeronde runs horen niet in Recent geoefend maar in de verder-oefenenlogica.
BR-003Afrondmoment is leidend voor sortering.
BR-004De weergave toont betekenisvolle domeingegevens en geen technische GUIDs.
BR-005Klikken op een recent item geeft geen automatische starttoegang zonder server-side controle.
BR-006Docenttestruns en niet-permanente runs tellen niet mee.
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 bij de huidige leerling horen.
AfrondstatusRun moet geldig afgerond zijn.
NiveaucontextRun moet binnen de actieve niveaucontext vallen.
Aantal itemsMaximaal drie.
WeergavegegevensCategorie en oefening moeten functioneel begrijpelijk worden getoond.
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
ExerciseRunsRecent lezen wijzigt geen run.
UserSettingsRecent geoefend wijzigt geen niveau of voorkeur.
ExercisesOefeningen worden alleen gelezen voor weergave.
CategoriesCategorieën worden alleen gelezen voor weergave.
GeschiedenisDeze usecase opent geen volledige geschiedenis en wijzigt geen geschiedenisdata.
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 Recent geoefend samenstellen

16.2 Recent item openen

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-004-001SRS-LRN-009
AC-LRN-009
Recent geoefend baseren op afgeronde exercise runs van de huidige leerling
REQ-UC-LLN-FP-004-002SRS-CAT-006
SRS-LRN-009
AC-CAT-006
AC-LRN-009
Recent geoefend beperken tot de actuele niveaucontext
REQ-UC-LLN-FP-004-003SRS-LRN-006
SRS-NFR-PER-001
AC-LRN-006
AC-NFR-PER-001
Maximaal drie recente items tonen, gesorteerd op afrondmoment aflopend
REQ-UC-LLN-FP-004-004SRS-LRN-008
AC-LRN-008
Niet-afgeronde runs niet tonen als recent geoefend
REQ-UC-LLN-FP-004-005SRS-AUTH-001
SRS-LRN-009
AC-AUTH-001
AC-LRN-009
Vervolgacties vanuit recent geoefend opnieuw server-side controleren