Skip to main content

UC-LLN-FP-002 — Actieve niveaucontext toepassen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-FP-002
NaamActieve niveaucontext toepassen
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-TOEG-005 — Open niveau gebruiken; UC-LLN-TOEG-006 — Privéniveau gebruiken via autorisatie; UC-GEN-PROF-003 — Verplicht niveau instellen; UC-GEN-ACC-003 — Geen rol of onvolledig account afhandelen
Primaire entiteitenUsers, UserSettings, TeacherLevels, TeacherStudentLevelAccess, UserRelationships
Secundaire entiteiten / eventsNiveaucontextresolver, routeguard, afgeleide contextrespons
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe OefenHub de actieve niveaucontext van een leerling toepast wanneer de leerling-frontpage of een leerlinggerichte vervolgquery wordt opgebouwd. De niveaucontext bepaalt welke categorieën, oefeningen, oefenruns en samenvattingswaarden relevant zijn.

De actieve niveaucontext is geen losstaand frontpageobject. Zij wordt afgeleid uit het interne account, de opgeslagen gebruikersinstellingen, de actuele beschikbaarheid van het niveau, open-niveauregels en eventueel actieve docent-leerlingautorisaties. Een opgeslagen gekozen niveau mag niet blind worden vertrouwd wanneer het niveau inmiddels inactief is, de autorisatie is ingetrokken of de leerling niet meer binnen die context mag werken.

Deze usecase kiest niet zelfstandig een nieuw willekeurig niveau voor de leerling. Wanneer een niveau bewust gekozen of hersteld moet worden, wordt verwezen naar de bestaande profielusecase voor verplicht niveau instellen of naar de accountflow voor onvolledige context. Daardoor blijft de niveaukeuze één bron van waarheid en wordt frontpagelogica geen tweede profielbeheerflow.

3. Scope

Deze usecase omvat wel:

  • lezen van de opgeslagen of afleidbare niveaucontext
  • server-side valideren of de context nog toegankelijk is
  • onderscheiden tussen open niveau en privéniveau via autorisatie
  • gebruiken van de geldige context voor frontpage- en aanbodqueries
  • blokkeren van verouderde of ongeldige niveaucontext
  • doorverwijzen naar bestaande profiel- of accountflows wanneer context ontbreekt

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 een leerlinggerichte pagina, frontpageblok of oefenaanbodquery een actuele niveaucontext nodig heeft.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1OefenHub frontendLeerling-frontpage / routeVraagt data op waarvoor niveaucontext nodig is.Backend start contextresolutie.Geen niveau uit clientstate als waarheid.
2OefenHub backendSessiecontextLeest de ingelogde gebruiker en rolcontext.Alleen leerlingcontext gaat verder.Actieve rol Leerling vereist.
3OefenHub backendUserSettingsLeest opgeslagen geselecteerde niveaucontext.Systeem verkrijgt kandidaatniveau.UserSettings is bron voor bewuste keuze, maar moet gevalideerd worden.
4OefenHub backendTeacherLevelsControleert of het kandidaatniveau bestaat en actief is.Ongeldig of inactief niveau valt af.Geen stille acceptatie van verlopen context.
5OefenHub backendToegangscontroleBepaalt of het niveau open of geautoriseerd privé is.Alleen toegankelijke context blijft geldig.UC-LLN-TOEG-005 / UC-LLN-TOEG-006.
6OefenHub backendNiveaucontextresolverMarkeert de context als geldig.Frontpage- en aanbodqueries krijgen dezelfde context mee.Geen nieuwe database-entiteit.
7OefenHub backendReadmodelqueriesGebruikt de context voor categorieën, oefeningen en runs.Alle blokken tonen dezelfde niveauafbakening.Consistente context over blokken heen.
8OefenHub frontendLeerling-frontpageToont de frontpage binnen de context.Leerling ziet geen informatie uit andere niveaus als actuele context.Geen datamutatie.
9LeerlingVervolgactieKiest categorie, oefening of vervolgblok.Vervolgusecase controleert opnieuw server-side.Context is input, geen definitieve toegangsgarantie.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Er is geen opgeslagen niveaucontextSysteem leidt naar UC-GEN-PROF-003 of UC-GEN-ACC-003 afhankelijk van de oorzaak.Niet van toepassingGeen
ALT-0024Opgeslagen niveau bestaat niet meer of is inactiefContext wordt geweigerd en de leerling krijgt herstelroute.Componentmelding / routeguardGeen
ALT-0035Privéniveauautorisatie is ingetrokkenContext wordt niet meer toegepast; startbare inhoud wordt niet getoond.Componentmelding / routeguardGeen
ALT-0045Open niveau is niet langer open of beschikbaarContext wordt ongeldig en leerling moet andere geldige context kiezen.Componentmelding / routeguardGeen
ALT-0056Meerdere niveaus zijn beschikbaar maar geen geldige selectie bestaatSysteem kiest niet willekeurig; bestaande keuze-/profielroute neemt over.Niet van toepassingGeen
ALT-0069Vervolgroute gebruikt oud niveau-idVervolgusecase controleert opnieuw en blokkeert indien nodig.Niet van toepassingGeen

9. Business rules

IDRegel
BR-001Een opgeslagen niveaucontext moet bij ieder relevant gebruik opnieuw server-side geldig zijn.
BR-002OefenHub kiest niet stilzwijgend een willekeurig standaardniveau wanneer een bewuste keuze ontbreekt.
BR-003Open niveaugebruik en privéniveaugebruik hebben verschillende toegangsbronnen.
BR-004De niveaucontext is input voor frontpage- en aanbodqueries, geen aparte persistente sessietabel.
BR-005Wanneer de context ongeldig is, mag de leerling geen actuele oefeninhoud uit die context zien of starten.
BR-006Frontendweergave mag nooit zwaarder wegen dan server-side autorisatie.
BR-007Een frontpageblok mag geen persoonsgegevens of technische identifiers tonen die niet functioneel nodig zijn.
BR-008Een lege staat mag geen automatische domeinmutatie veroorzaken.
BR-009Alle teller- en samenvattingswaarden moeten eenduidig zijn afgeleid uit bronrecords en filters.

10. Datavalidatie

Veld / objectValidatie
UserSettings.SelectedTeacherLevelIdMoet verwijzen naar een bestaand en actueel bruikbaar niveau.
Open niveauMoet actief en functioneel open zijn.
PrivéniveauVereist actieve docent-leerlingrelatie en actieve niveauautorisatie.
RolcontextMoet leerling zijn.
RoutecontextMag niet zwaarder wegen dan server-side contextvalidatie.
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
UserSettingsDeze usecase wijzigt de niveaukeuze niet; kiezen hoort bij profielflow.
TeacherStudentLevelAccessAutorisaties worden niet aangemaakt of aangepast.
UserRelationshipsRelaties worden niet aangemaakt of aangepast.
ExerciseRunsContexttoepassing start of wijzigt geen oefenrun.
SessietabelEr wordt geen aparte niveaucontextsessietabel toegevoegd.
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 Niveaucontext valideren

16.2 Ingetrokken of verlopen context

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-002-001SRS-AUTH-001
SRS-CAT-006
SRS-LRN-009
AC-AUTH-001
AC-CAT-006
AC-LRN-009
Een opgeslagen leerlingniveaucontext opnieuw server-side valideren voordat deze wordt toegepast
REQ-UC-LLN-FP-002-002SRS-AUTH-001
SRS-CAT-006
SRS-LRN-009
AC-AUTH-001
AC-CAT-006
AC-LRN-009
Open niveaugebruik en privéniveaugebruik volgens hun eigen toegangsbronnen beoordelen
REQ-UC-LLN-FP-002-003SRS-CAT-001
SRS-LRN-009
AC-CAT-001
AC-LRN-009
Geen willekeurig standaardniveau kiezen wanneer een verplichte of geldige keuze ontbreekt
REQ-UC-LLN-FP-002-004SRS-AUTH-001
SRS-CAT-006
SRS-LRN-009
AC-AUTH-001
AC-CAT-006
AC-LRN-009
Ongeldige, ingetrokken of inactieve niveaucontexten blokkeren voor actuele frontpage- en aanbodweergave
REQ-UC-LLN-FP-002-005SRS-CAT-006
SRS-LRN-009
AC-CAT-006
AC-LRN-009
Niveaucontext niet als aparte sessie-entiteit opslaan