UC-LLN-TOEG-005 — Open niveau gebruiken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-LLN-TOEG-005 |
| Naam | Open niveau gebruiken |
| Domein | Leerling / Oefenaanbod en toegang |
| Primaire actor | Leerling |
| Secundaire actor(en) | OefenHub frontend, OefenHub backend, niveaucontextresolver, autorisatielaag, database |
| Rolcontext | Ingelogde leerling die een open niveau kiest of gebruikt als actieve niveaucontext. |
| Betrokken schermen | Leerling-frontpage, niveaukeuze in profiel/frontpagecontext, oefenaanbod, categorie- en oefeningenlijsten. |
| Gerelateerde usecases | UC-LLN-TOEG-001 — Beschikbare categorieën bekijken; UC-LLN-TOEG-002 — Beschikbare oefeningen bekijken; UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen; UC-GEN-PROF-003 — Verplicht niveau instellen; UC-LLN-FP-002 — Actieve niveaucontext toepassen |
| Primaire entiteiten | Users, UserSettings, TeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises |
| Secundaire entiteiten / events | Categories, ExerciseModules |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een leerling een open niveau gebruikt. Een open niveau is functioneel beschikbaar zonder dat er eerst een individuele docent-leerlingniveauautorisatie hoeft te zijn toegekend. De leerling kan dit niveau als actieve niveaucontext gebruiken en krijgt daarmee toegang tot de actieve categorieën en oefeningen die binnen dat open niveau beschikbaar zijn.
Het gebruiken van een open niveau maakt geen docent-leerlingrelatie, geen TeacherStudentLevelAccess en
geen privé- of ouder-/voogdrelatie aan. De toegang is gebaseerd op de open-status van het niveau en de
actuele actieve inhoud binnen dat niveau. De gekozen niveaucontext kan wel als gebruikersinstelling
worden opgeslagen wanneer de bestaande profiel-/niveaukeuzeregels dat toestaan.
Deze usecase is belangrijk als tegenhanger van privéniveaus: open niveaus zijn toegankelijk via een algemene niveaucontext, terwijl privéniveaus expliciete autorisatie vereisen. Ook bij open niveaus blijven categorieën en oefeningen alleen zichtbaar wanneer zij actief zijn en server-side gecontroleerd worden.
3. Scope
Deze usecase omvat wel:
- kiezen of gebruiken van een open niveau door een leerling
- controleren dat het niveau actief en open is
- opslaan of gebruiken van de actieve niveaucontext volgens de bestaande gebruikersinstellingenregels
- tonen van actieve categorieën en oefeningen binnen het open niveau
- server-side controle bij het openen van oefeningen binnen het open niveau
- geen relatie- of autorisatierecord aanmaken voor open gebruik
- terugvallen wanneer het open niveau later niet meer actief of open is
Deze usecase omvat niet:
- aanmaken van open niveaus door docenten
- wijzigen van open/privé-status van niveaus
- toekennen van privé-niveauautorisatie
- beheer van categorieën of oefeningen
- starten van exercise runs
- profielflow voor verplicht niveau inhoudelijk uitwerken
- relaties of systeemberichten aanmaken
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
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd als leerling. |
| PRE-002 | Het niveau bestaat en is actief. |
| PRE-003 | Het niveau is functioneel als open beschikbaar. |
| PRE-004 | De backend kan de open-status server-side controleren. |
| PRE-005 | Er zijn of kunnen actieve categorieën/oefeningen binnen het niveau worden bepaald. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Het open niveau is als actieve leerlingcontext gebruikt of geselecteerd. |
| POST-002 | De leerling ziet alleen actieve categorieën en oefeningen binnen dit open niveau. |
| POST-003 | Er is geen docent-leerlingrelatie of individuele niveauautorisatie aangemaakt. |
| POST-004 | Wanneer het open niveau niet langer beschikbaar is, wordt de context opnieuw bepaald of ongeldig verklaard. |
| POST-005 | Oefeningen binnen het open niveau blijven server-side controleplichtig. |
6. Trigger
De usecase start wanneer een leerling een open niveau kiest, wanneer een eerder gekozen open niveau wordt geladen, of wanneer de frontpage/oefenaanbodcontext een open niveau als actieve niveaucontext moet toepassen.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Leerling | Niveaukeuze / frontpage | Kiest of gebruikt een open niveau. | Frontend vraagt niveaucontext te activeren. | Geen autorisatieaanname. |
| 2 | Frontend | Niveaucomponent | Stuurt gekozen niveau naar backend. | Backend valideert vanuit sessiecontext. | Routewaarde is niet leidend. |
| 3 | Backend | Sessielaag | Controleert dat actor leerling is. | Alleen leerlingcontext gaat verder. | Server-side rol. |
| 4 | Backend | Niveaudata | Controleert dat niveau bestaat en actief is. | Inactief niveau wordt geweigerd. | TeacherLevels.IsActive. |
| 5 | Backend | Niveauregels | Controleert dat niveau open is. | Open niveau mag als leerlingcontext worden gebruikt. | Open/privé-eigenschap. |
| 6 | Backend | Gebruikersinstellingen | Past geselecteerde niveaucontext toe volgens profielregels. | Context kan worden opgeslagen of als actieve runtimecontext gelden. | UserSettings.SelectedTeacherLevelId indien van toepassing. |
| 7 | Backend | Oefenaanbod | Bepaalt actieve categorieën en oefeningen binnen open niveau. | Alleen actief aanbod wordt getoond. | UC-LLN-TOEG-001/002. |
| 8 | Frontend | Leerlingomgeving | Toont frontpage en oefenaanbod voor open niveau. | Leerling kan verder navigeren. | Oefening openen blijft controleplichtig. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 4 | Niveau bestaat niet of is inactief. | Systeem weigert niveaucontext en leidt naar keuze of lege context. | Geen popupregister-popup. | Geen. |
| ALT-002 | 5 | Niveau is niet open. | Systeem behandelt het als privéniveau en vereist autorisatie via UC-LLN-TOEG-006. | Geen. | Geen. |
| ALT-003 | 6 | Opslaan van selected level is niet toegestaan omdat context niet geldig is. | Systeem gebruikt het niveau niet als actief geselecteerd niveau. | Componentmelding. | Geen blijvende mutatie. |
| ALT-004 | 7 | Open niveau bevat geen actieve categorieën. | Systeem toont lege oefenaanbodstaat. | Leegstaatcomponent. | Geen. |
| ALT-005 | 7 | Open niveau had eerder aanbod maar content is gedeactiveerd. | Actuele readmodels tonen geen gedeactiveerde categorieën/oefeningen. | Geen. | Geen. |
| ALT-006 | 8 | Leerling opent oefening uit oud open niveau via browsergeschiedenis. | UC-LLN-TOEG-003 controleert opnieuw en blokkeert indien nodig. | Geen. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Een open niveau mag door een leerling als niveaucontext worden gebruikt wanneer het actief is. |
| BR-002 | Gebruik van een open niveau maakt geen TeacherStudentLevelAccess aan. |
| BR-003 | Gebruik van een open niveau maakt geen docent-leerlingrelatie aan. |
| BR-004 | Categorieën en oefeningen binnen een open niveau moeten actief zijn om zichtbaar te zijn. |
| BR-005 | Open niveaucontext mag alleen worden opgeslagen wanneer de actuele context geldig is. |
| BR-006 | Open niveaugebruik geeft geen docentinzage, ouder-/voogdinzage of relatiecontext. |
| BR-007 | Een niveau dat later niet meer open of actief is, mag niet als actieve context blijven gelden. |
| BR-008 | Een open niveau omzeilt niet de oefeningstoegangscontrole bij openen. |
| BR-009 | Geschiedenis van eerder gemaakte oefeningen blijft volgens geschiedenisregels bestaan. |
| BR-010 | De leerling kiest bewust een niveau; het systeem verzint geen willekeurig open niveau als verplicht profielniveau. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Niveau | Moet bestaan en actief zijn. |
| Open-status | Moet functioneel open zijn voor leerlinggebruik. |
| Leerlingrol | Moet server-side aanwezig zijn. |
| Selected level | Mag alleen worden opgeslagen wanneer het niveau toegankelijk is. |
| Categorieën/oefeningen | Worden na niveaukeuze opnieuw actief gefilterd. |
| Privéstatus | Als het niveau privé is, moet UC-LLN-TOEG-006 gelden. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 4 | Read | TeacherLevels | Niveau en open-status worden gelezen. |
| 6 | Update | UserSettings | Geselecteerd niveau kan worden opgeslagen wanneer profielregels dit toestaan. |
| 7 | Read | TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises | Beschikbaar aanbod wordt bepaald. |
Deze usecase introduceert geen nieuw persistent domeinevent. Alleen de eventuele geselecteerde niveaucontext kan worden bijgewerkt via het bestaande gebruikersinstellingendomein.
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
TeacherStudentLevelAccess | Open niveaugebruik maakt geen individuele autorisatie aan. |
UserRelationships | Open niveaugebruik maakt geen docent-leerlingrelatie. |
TeacherLevels | Leerling wijzigt het niveau niet. |
Exercises | Leerling wijzigt oefeningen niet. |
ExerciseRuns | Gebruik van niveau start nog geen run. |
SystemMessages | Er wordt geen bericht aangemaakt. |
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
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Niet van toepassing | Deze usecase gebruikt routeguard-, leegstaat- of componentgedrag en geen popupregister-popup. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Functioneel Ontwerp beschrijft zichtbaar oefenaanbod, niveaucontext, categorie-/oefeningtoegang en veilige blokkades. |
| Technisch Ontwerp | Technisch 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 Specification | Software Requirements Specification bevat centrale eisen en acceptatiecriteria voor aanbodfiltering, server-side autorisatie, blokkades en geen ongewenste datamutaties. |
| Database-informatie | Database-informatie blijft bron voor catalogus-, autorisatie- en soft-linkrelaties waarmee zichtbaar aanbod server-side wordt bepaald. |
| Ontwerpbronnen | Ontwerpbronnen 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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-LLN-TOEG-005-001 | SRS-CAT-005 SRS-LRN-009 AC-CAT-005 AC-LRN-009 | Een actief open niveau als leerlingniveaucontext kunnen gebruiken |
REQ-UC-LLN-TOEG-005-002 | SRS-REL-001 SRS-CAT-006 SRS-LRN-009 SRS-TCH-003 AC-REL-001 AC-CAT-006 AC-LRN-009 AC-TCH-003 | Voor open niveaugebruik geen docent-leerlingrelatie aanmaken |
REQ-UC-LLN-TOEG-005-003 | SRS-CAT-006 SRS-LRN-009 AC-CAT-006 AC-LRN-009 | Voor open niveaugebruik geen TeacherStudentLevelAccess aanmaken |
REQ-UC-LLN-TOEG-005-004 | SRS-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 | Categorieën en oefeningen binnen open niveaus opnieuw server-side filteren |
REQ-UC-LLN-TOEG-005-005 | SRS-CAT-005 SRS-LRN-009 AC-CAT-005 AC-LRN-009 | Een open niveau niet meer gebruiken wanneer het inactief of privé is geworden |
REQ-UC-LLN-TOEG-005-006 | SRS-AUTH-004 SRS-ACC-003 SRS-ACC-005 SRS-CAT-006 SRS-LRN-009 SRS-NFR-ACC-001 AC-AUTH-004 AC-ACC-003 AC-ACC-005 AC-CAT-006 AC-LRN-009 AC-NFR-ACC-001 | Een open niveau alleen als selected level opslaan wanneer het actueel toegankelijk is |
REQ-UC-LLN-TOEG-005-007 | SRS-CAT-006 SRS-LRN-009 AC-CAT-006 AC-LRN-009 | Oefening openen binnen een open niveau opnieuw controleren |
REQ-UC-LLN-TOEG-005-008 | SRS-RDM-001 SRS-RDM-005 SRS-CAT-005 SRS-LRN-009 AC-RDM-001 AC-RDM-005 AC-CAT-005 AC-LRN-009 | Een lege staat tonen wanneer een open niveau geen actief aanbod bevat |
REQ-UC-LLN-TOEG-005-009 | SRS-AUTH-001 SRS-CAT-006 SRS-LRN-009 AC-AUTH-001 AC-CAT-006 AC-LRN-009 | Open niveaugebruik onderscheiden van privéniveauautorisatie |
REQ-UC-LLN-TOEG-005-010 | SRS-CAT-006 SRS-LRN-009 AC-CAT-006 AC-LRN-009 | Open niveaucontext opnieuw valideren wanneer de open-status wijzigt |
REQ-UC-LLN-TOEG-005-011 | SRS-AUTH-001 SRS-CAT-006 SRS-LRN-009 AC-AUTH-001 AC-CAT-006 AC-LRN-009 | Open niveaugebruik kunnen toepassen zonder relationele toegangstoekenning |
REQ-UC-LLN-TOEG-005-012 | SRS-RDM-001 SRS-RDM-005 SRS-CAT-006 SRS-LRN-005 AC-RDM-001 AC-RDM-005 AC-CAT-006 AC-LRN-005 | Open niveauaanbod afleiden uit actieve categorieën en oefeningen |
REQ-UC-LLN-TOEG-005-013 | SRS-RDM-001 SRS-RDM-005 SRS-RDM-007 SRS-REL-001 SRS-CAT-006 SRS-LRN-005 AC-RDM-001 AC-RDM-005 AC-RDM-007 AC-REL-001 AC-CAT-006 AC-LRN-005 | Geen docentinzage of relatiecontext afleiden uit open niveaugebruik |
REQ-UC-LLN-TOEG-005-014 | SRS-ACC-003 SRS-CAT-006 SRS-LRN-003 AC-ACC-003 AC-CAT-006 AC-LRN-003 | Open niveaukeuze niet stilzwijgend gebruiken als verplicht profielantwoord wanneer bewuste keuze nodig is |