UC-LLN-FP-001 — Leerling-frontpage bekijken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-LLN-FP-001 |
| Naam | Leerling-frontpage bekijken |
| Domein | Leerling / Frontpage en niveaucontext |
| Primaire actor | Leerling |
| Secundaire actor(en) | OefenHub frontend, OefenHub backend, routeguard, autorisatielaag, database, frontpage-readmodel |
| Rolcontext | Ingelogde gebruiker met rol Leerling en een geldige of te herstellen niveaucontext. |
| Betrokken schermen | Leerling-frontpage, leerlingnavigatie, frontpageblokken, routeguard voor leerlingroutes. |
| Gerelateerde usecases | UC-LLN-FP-002 — Actieve niveaucontext toepassen; UC-LLN-FP-003 — Populaire categorieën en oefeningen tonen; UC-LLN-FP-004 — Recent geoefend tonen; UC-LLN-FP-005 — Verder-oefenenblok tonen; UC-LLN-TOEG-001 — Beschikbare categorieën bekijken; UC-GEN-ACC-002 — Inloggen en sessie verwerken; UC-GEN-NOT-001 — Systeemnotificatie tonen |
| Primaire entiteiten | Users, UserSettings, UserRoles, Roles, TeacherLevels, TeacherLevelCategories, Exercises, ExerciseRuns |
| Secundaire entiteiten / events | Frontpage-readmodel, systeemnotificatiecontrole via UC-GEN-NOT-001 |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een leerling na succesvolle account- en sessieverwerking de leerling-frontpage bekijkt. De frontpage is een overzichts- en oriëntatiepagina: zij toont compacte informatie en vervolgpunten, maar voert geen diep beheer uit en start geen oefening zonder aanvullende route- en toegangscontrole.
De leerling-frontpage wordt samengesteld op basis van de server-side sessiecontext, de actieve leerlingrol, de geldige niveaucontext, toegankelijke categorieën en oefenruns die voor de leerling relevant zijn. De pagina bevat onder meer categorienavigatie, populaire categorieën met oefeningen, recent geoefend, eventueel een verder-oefenenblok en compacte statistische samenvatting. Deze onderdelen zijn afgeleide weergaven op bestaande domeindata.
De frontpage zelf is geen bron van waarheid voor autorisatie. Directe routes, oude clientstate of browsercache mogen nooit bepalen welke categorieën, oefeningen of vervolgacties beschikbaar zijn. Na normaal laden van de frontpage mogen systeemnotificaties via de generieke systeemnotificatieflows worden gecontroleerd en getoond; deze usecase verwerkt die notificaties niet zelf.
3. Scope
Deze usecase omvat wel:
- openen van de leerling-frontpage na geldige sessieverwerking
- controleren dat de gebruiker een actieve leerlingcontext heeft
- toepassen van een geldige niveaucontext
- samenstellen van de zichtbare frontpageblokken als afgeleid readmodel
- tonen van categorienavigatie en contextgerichte vervolgpunten
- tonen van lege of beperkte toestanden wanneer er nog geen oefenactiviteit is
- voorkomen dat systeemnotificaties het laden van de frontpage blokkeren
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
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd. |
| PRE-002 | De gebruiker heeft de rol Leerling als actieve rolcontext. |
| PRE-003 | De backend kan de actuele account- en sessiecontext server-side bepalen. |
| PRE-004 | De relevante frontpage-, niveau- en oefendata zijn beschikbaar voor uitlezing. |
| PRE-005 | Routeguard en autorisatielaag vertrouwen niet op clientstate als autorisatiebron. |
| PRE-006 | Bestaande profiel- en accountflows zijn beschikbaar voor herstel van ontbrekende context. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De leerling ziet alleen informatie die binnen de actuele server-side context zichtbaar mag zijn. |
| POST-002 | Er is geen nieuwe frontpage-, sessie- of cache-entiteit aangemaakt. |
| POST-003 | Ontbrekende of ongeldige context leidt niet tot misleidende frontpageweergave. |
| POST-004 | Vervolgacties blijven onderhevig aan eigen server-side toegangscontrole. |
| POST-005 | Er zijn geen rollen, relaties, autorisaties, oefeningen of oefenruns aangemaakt of gewijzigd. |
| POST-006 | Eventuele lege staten zijn veilig en verwijzen niet naar ongeautoriseerde inhoud. |
6. Trigger
De usecase start wanneer een ingelogde leerling naar de leerling-frontpage navigeert of na login automatisch op de leerling-frontpage uitkomt.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Leerling | Leerling-frontpage | Opent de leerlingomgeving. | Frontend vraagt de frontpagecontext op. | Geen clientstate als bron voor autorisatie. |
| 2 | OefenHub frontend | Frontpagecomponent | Stuurt een request voor de frontpageweergave. | Backend ontvangt sessiecontext en optionele routecontext. | UserId en rolcontext komen uit de server-side sessie. |
| 3 | OefenHub backend | Routeguard / autorisatielaag | Controleert actieve gebruiker en rol. | Alleen een actieve leerlingcontext mag de leerling-frontpage laden. | Leerlingrol mag niet met ouder/docent/beheerder gecombineerd zijn. |
| 4 | OefenHub backend | Niveaucontextresolver | Past de actuele niveaucontext toe. | Geldige context wordt gebruikt; ontbrekende context leidt naar bestaande profiel-/accountflow. | UC-LLN-FP-002. |
| 5 | OefenHub backend | Oefenaanbod-readmodel | Bepaalt beschikbare categorieën. | Alleen toegankelijke categorieën worden opgenomen. | UC-LLN-TOEG-001. |
| 6 | OefenHub backend | Frontpage readmodel | Bepaalt populaire categorieën en oefeningen. | Blok wordt gevuld of veilig leeg gelaten. | UC-LLN-FP-003. |
| 7 | OefenHub backend | Frontpage readmodel | Bepaalt recent geoefend. | Maximaal drie recente afgeronde runs worden opgenomen. | UC-LLN-FP-004. |
| 8 | OefenHub backend | Frontpage readmodel | Bepaalt of verder-oefenenblok relevant is. | Blok wordt alleen opgenomen bij een hervatbare niet-afgeronde run. | UC-LLN-FP-005. |
| 9 | OefenHub backend | Frontpage readmodel | Bepaalt compacte statistieksamenvatting. | Aantallen worden afgeleid uit bestaande exercise-run-data. | Geen aparte frontpagetabel. |
| 10 | OefenHub frontend | Leerling-frontpage | Rendert de samengestelde frontpage. | Leerling ziet overzicht, context en vervolgpunten. | Geen datamutatie. |
| 11 | OefenHub frontend | Systeemnotificatiecomponent | Start na normaal laden de notificatiecontrole. | Eventuele notificaties lopen via generieke notificatieusecases. | Frontpage wordt niet geblokkeerd door notificaties. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | Gebruiker heeft geen actieve leerlingrol | Frontpage wordt niet geladen; account-/contextafhandeling neemt over. | Niet van toepassing | Geen |
| ALT-002 | 4 | Niveaucontext ontbreekt | Systeem leidt naar bestaande verplichte-niveauflow of onvolledige-accountflow. | Niet van toepassing | Geen |
| ALT-003 | 5 | Geen categorieën beschikbaar | Frontpage toont een veilige lege of beperkte staat. | Componentmelding / lege staat | Geen |
| ALT-004 | 7 | Geen afgeronde runs | Recent-geoefendblok wordt leeg gelaten of met neutrale toelichting getoond. | Componentmelding / lege staat | Geen |
| ALT-005 | 8 | Geen hervatbare run | Verder-oefenenblok wordt niet getoond. | Niet van toepassing | Geen |
| ALT-006 | 10 | Verouderde clientcache bevat oude frontpage-informatie | Backendresponse overschrijft clientweergave met actuele context. | Niet van toepassing | Geen |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | De leerling-frontpage is een overzichts- en oriëntatiepagina en voert geen beheeracties uit. |
| BR-002 | Alle frontpageblokken worden afgeleid uit bestaande domeindata. |
| BR-003 | De frontpage mag geen aparte bron van autorisatie zijn. |
| BR-004 | Systeemnotificaties worden pas na normaal laden van de frontpage gecontroleerd. |
| BR-005 | Een directe frontendweergave mag geen categorie, oefening of run beschikbaar maken zonder server-side controle. |
| BR-006 | Lege of beperkte frontpagetoestanden zijn toegestaan wanneer de leerling nog geen toegankelijke inhoud of geschiedenis heeft. |
| BR-007 | Frontendweergave mag nooit zwaarder wegen dan server-side autorisatie. |
| BR-008 | Een frontpageblok mag geen persoonsgegevens of technische identifiers tonen die niet functioneel nodig zijn. |
| BR-009 | Een lege staat mag geen automatische domeinmutatie veroorzaken. |
| BR-010 | Alle teller- en samenvattingswaarden moeten eenduidig zijn afgeleid uit bronrecords en filters. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Sessiegebruiker | Moet server-side bekend, actief en ingelogd zijn. |
| Rolcontext | Moet een actieve leerlingrol bevatten. |
| Niveaucontext | Moet geldig zijn of naar bestaande herstel-/keuzeflow leiden. |
| Frontpageblokken | Mogen alleen records tonen die binnen de actuele context zichtbaar zijn. |
| Statistiekwaarden | Moeten afgeleid zijn uit exact gedefinieerde records en filters. |
| Frontpagecontext | Moet per request opnieuw uit server-side context worden afgeleid. |
| Clientstate | Mag alleen ondersteunend zijn en nooit autorisatie bepalen. |
| Lege staat | Moet functioneel neutraal zijn en geen verborgen of ongeautoriseerde data lekken. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| Gehele usecase | Geen domeinmutatie | Niet van toepassing | De usecase leest bestaande bronrecords en stelt een transient readmodel samen; er wordt geen functioneel domeinevent vastgelegd. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
Users | De frontpage wijzigt het account niet. |
UserSettings | De frontpage past geen niveaukeuze of voorkeuren aan. |
ExerciseRuns | De frontpage start, hervat of rondt geen oefening af. |
SystemMessages | Frontpageweergave maakt geen mailbox-systeemberichten aan. |
| Frontpagecache | Er wordt geen aparte persistente frontpagecache gemodelleerd. |
UserRoles | Frontpagecontext wijzigt geen roltoekenningen. |
SystemNotifications | Notificaties 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 Leerling-frontpage samenstellen
16.2 Context ontbreekt of is ongeldig
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Gehele usecase | Deze usecase gebruikt routeguard-, component- of lege-staatgedrag en introduceert geen popupregister-popup. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Functioneel Ontwerp beschrijft de leerling-frontpage, actieve niveaucontext, frontpageblokken, lege toestanden en zichtbare vervolgacties. |
| Technisch Ontwerp | Technisch 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 Specification | Software Requirements Specification bevat centrale eisen en acceptatiecriteria voor contextcontrole, frontpageweergave, readmodels en veilige lege toestanden. |
| Database-informatie | Database-informatie blijft bron voor onderliggende tabellen, readmodelbronnen en soft-link/snapshotregels; deze usecases introduceren geen eigen frontpagetabel. |
| Ontwerpbronnen | Ontwerpbronnen 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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-LLN-FP-001-001 | SRS-LRN-009 AC-LRN-009 | De leerling-frontpage alleen tonen aan een ingelogde gebruiker met actieve leerlingcontext |
REQ-UC-LLN-FP-001-002 | SRS-RDM-001 SRS-RDM-003 SRS-RDM-005 SRS-LRN-009 AC-RDM-001 AC-RDM-003 AC-RDM-005 AC-LRN-009 | De leerling-frontpage samenstellen uit bestaande domeindata en afgeleide readmodelwaarden |
REQ-UC-LLN-FP-001-003 | SRS-AUTH-001 SRS-CAT-001 SRS-LRN-002 SRS-LRN-007 AC-AUTH-001 AC-CAT-001 AC-LRN-002 AC-LRN-007 | Categorienavigatie, populaire categorieën, recent geoefend en verder-oefenencontext server-side begrenzen tot de actuele leerlingcontext |
REQ-UC-LLN-FP-001-004 | SRS-AUTH-001 SRS-LRN-009 AC-AUTH-001 AC-LRN-009 | De frontpage niet gebruiken als bron voor autorisatiebeslissingen |
REQ-UC-LLN-FP-001-005 | SRS-LRN-009 SRS-POP-002 AC-LRN-009 AC-POP-002 | Systeemnotificaties pas na normaal laden van de frontpage laten controleren via de generieke notificatieflows |