UC-DOC-AANB-002 — Niveau selecteren
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-AANB-002 |
| Naam | Niveau selecteren |
| Domein | Docent |
| Subdomein | Oefenaanbod, niveaus en categorieën |
| Primaire actor | Docent |
| Secundaire actor(en) | Systeem |
| Rolcontext | Ingelogde gebruiker met actieve rol Docent |
| Betrokken schermen | Oefenaanbod, niveaucontextselector, niveau-samenvatting |
| Gerelateerde usecases | UC-DOC-AANB-001 — Oefenaanbod openen; UC-DOC-AANB-005 — Categorieën binnen niveau bekijken; UC-DOC-OEF-001 — Oefeningen binnen categorie bekijken |
| Primaire entiteiten | Levels, LevelCollaborators, UserSettings |
| Secundaire entiteiten / events | LevelCategoryLinks, Exercises, StudentLevelAuthorizations |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een docent binnen Oefenaanbod een niveau selecteert als actuele werkcontext.
Een docent kan meerdere niveaus beheren of via samenwerking bewerken. De geselecteerde niveaucontext bepaalt welke categorieën, oefeningen, collaborators, leerlingtoegang en samenvattingsinformatie op vervolgschermen worden getoond. De selectie is geen autorisatiebron op zichzelf. Het systeem moet bij iedere selectie opnieuw server-side controleren of het niveau voor de docent toegankelijk is.
De selectie mag eventueel als gebruikersvoorkeur worden onthouden wanneer dat functioneel gewenst is. Die opslag is echter een voorkeur voor gebruiksgemak en geen bewijs van toegang.
3. Scope
Binnen scope:
- selecteren van een toegankelijk niveau binnen Oefenaanbod;
- server-side valideren van toegang tot het gekozen niveau;
- laden van de bijbehorende niveaucontext;
- tonen van niveaukerngegevens en samenvattingswaarden;
- onthouden van laatst gekozen niveaucontext als gebruikersvoorkeur;
- afhandelen van verouderde of niet meer toegankelijke selecties.
Buiten scope:
- aanmaken of wijzigen van het niveau;
- overdragen van eigenaarschap;
- collaborators toevoegen of verwijderen;
- categorieën koppelen;
- oefeningen configureren;
- leerlingautorisaties wijzigen;
- kiezen van leerlingniveau in het leerlingprofiel;
- beheerderondersteuning.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De docent heeft Oefenaanbod geopend. |
| PRE-002 | De docent heeft een actieve docentrol. |
| PRE-003 | Er bestaat minimaal één niveau dat voor de docent toegankelijk is. |
| PRE-004 | De niveaukeuze wordt aangeboden op basis van server-side toegankelijke niveaus. |
| PRE-005 | Een gekozen niveau-ID is niet op zichzelf voldoende voor toegang. |
| PRE-006 | De geselecteerde context wordt niet uit onbeveiligde clientstate vertrouwd. |
| PRE-007 | Een eventuele eerder opgeslagen voorkeur wordt opnieuw gevalideerd. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Het gekozen niveau is als actuele werkcontext geladen. |
| POST-002 | De docent ziet alleen gegevens die binnen het gekozen niveau en docentcontext horen. |
| POST-003 | Vervolgacties gebruiken het geselecteerde niveau als context. |
| POST-004 | Een ongeldige selectie leidt niet tot datalek of ongeautoriseerde weergave. |
| POST-005 | Optionele voorkeur voor laatst gekozen niveau is veilig bijgewerkt. |
| POST-006 | Er zijn geen wijzigingen aan het niveau zelf uitgevoerd. |
| POST-007 | Samenvattingswaarden zijn opnieuw afgeleid voor het gekozen niveau. |
6. Trigger
De usecase start wanneer de docent op de Oefenaanbodpagina een niveau kiest uit de niveaucontextselector of via een interne link naar een niveaucontext navigeert.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Oefenaanbod | Kiest een niveau. | Frontend verstuurt gekozen niveau-ID. | Niveau-ID is input, geen autorisatiebewijs. |
| 2 | Systeem | Applicatieservice | Controleert docentcontext. | Valideert actieve docentrol. | UserRoles + Roles. |
| 3 | Systeem | Applicatieservice | Controleert toegang tot niveau. | Controleert eigenaarschap of actieve collaboratorstatus. | Levels, LevelCollaborators. |
| 4 | Systeem | Applicatieservice | Laadt niveaukerngegevens. | Leest naam, beschrijving, zichtbaarheid en eigenaar. | Levels. |
| 5 | Systeem | Applicatieservice | Laadt samenvattingswaarden. | Berekent categorieën, oefeningen, leerlingen en collaborators binnen context. | Readmodel. |
| 6 | Systeem | Gebruikersinstelling | Slaat eventueel laatst gekozen niveau op. | Alleen na succesvolle validatie. | UserSettings of vergelijkbare voorkeur. |
| 7 | Systeem | Oefenaanbod | Toont niveaucontext. | Pagina toont categorieën en beschikbare vervolgacties. | Vervolgacties blijven apart geautoriseerd. |
| 8 | Docent | Oefenaanbod | Werkt verder binnen niveau. | Systeem gebruikt niveaucontext voor vervolgusecases. | Contextgebonden routing. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Docentrol is niet meer actief. | Selectie wordt geweigerd en route teruggezet naar veilige context. | Generieke toegangafhandeling. | Geen. |
| ALT-002 | 3 | Niveau bestaat niet. | Systeem toont niet-beschikbaarafhandeling. | Inline melding. | Geen. |
| ALT-003 | 3 | Niveau bestaat wel maar is niet toegankelijk. | Systeem blokkeert niveaucontext. | Generieke toegangafhandeling. | Geen. |
| ALT-004 | 3 | Collaboratorstatus is beëindigd. | Niveau wordt niet geladen als werkcontext. | Inline melding. | Geen. |
| ALT-005 | 5 | Samenvattingswaarden kunnen niet volledig worden berekend. | Kerncontext wordt geladen; probleem wordt veilig weergegeven. | Inline melding. | Geen. |
| ALT-006 | 6 | Opslaan van voorkeur mislukt. | Niveaucontext blijft voor huidige sessie bruikbaar. | Geen of inline melding. | Geen domeinmutatie behalve mislukte voorkeur. |
| ALT-007 | 1 | Docent kiest snel meerdere niveaus. | Systeem verwerkt alleen de laatst geldige selectie. | Niet van toepassing. | Eventuele voorkeur alleen laatst geldige selectie. |
| ALT-008 | 1 | Selectie komt via directe URL. | Zelfde server-side validatie als bij selector. | Niet van toepassing. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Een niveau mag alleen worden geselecteerd wanneer de docent eigenaar of actieve collaborator is. |
| BR-002 | Een geselecteerd niveau bepaalt de werkcontext, maar niet de autorisatie zelf. |
| BR-003 | Autorisatie wordt altijd server-side opnieuw bepaald. |
| BR-004 | Een opgeslagen laatst gekozen niveau mag nooit ongevalideerd worden gebruikt. |
| BR-005 | Een beëindigde collaborator verliest de mogelijkheid om het niveau als context te selecteren. |
| BR-006 | Selectie van een niveau wijzigt het niveau zelf niet. |
| BR-007 | Samenvattingswaarden worden opnieuw bepaald voor het gekozen niveau. |
| BR-008 | Categorieën en oefeningen die buiten het niveau vallen worden niet getoond. |
| BR-009 | Leerlinggegevens worden alleen als compacte aantallen getoond, niet als detaildataset. |
| BR-010 | De selectie is gescheiden van leerlingniveaukeuze in profiel. |
| BR-011 | Bij gecombineerde rollen blijft deze selectie beperkt tot docentfunctionaliteit. |
| BR-012 | Open niveaus van andere docenten zijn alleen selecteerbaar wanneer de docent volgens de geldende regels toegang heeft tot die context. |
| BR-013 | Collaboratorrechten geven toegang tot inhoud binnen het niveau, niet automatisch tot leerlingresultaten. |
| BR-014 | Vervolgacties zoals eigenaarschap, leerlingautorisaties en oefenbewerking hebben eigen autorisatieregels. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| LevelId | Moet bestaan als actief of historisch bruikbaar niveau binnen toegestane context. |
| Docentcontext | Moet actieve docentrol bevatten. |
| Eigenaarschap | OwnerUserId moet huidige docent zijn of voldoende rechten geven volgens context. |
| Collaboratorrecord | Moet actief zijn voor het gekozen niveau. |
| Laatst gekozen niveau | Mag alleen worden opgeslagen na succesvolle server-side validatie. |
| Routeparameter | Wordt als input gevalideerd, niet vertrouwd als autorisatiebron. |
| Samenvattingswaarden | Worden gefilterd op gekozen niveaucontext. |
| Gecombineerde rol | Moet expliciet docentcontext gebruiken. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 1-5 | Read | Levels, LevelCollaborators, LevelCategories, Exercises | Niveaucontext en samenvattingsdata worden gelezen. |
| 6 | Update | UserSettings / docentcontextvoorkeur | De laatst gekozen docentniveaucontext kan als gebruikersvoorkeur worden bijgewerkt wanneer deze opslag beschikbaar is; deze waarde is geen autorisatiebron. |
| 7 | Readmodel | Oefenaanbodreadmodel | Schermdata wordt opnieuw opgebouwd vanuit de nieuw gekozen niveaucontext. |
De niveaukeuze veroorzaakt geen wijziging aan niveau, categorie, oefening, collaboratorrechten of leerlingautorisaties.
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| Levels | Selecteren wijzigt geen niveaugegevens. |
| LevelCollaborators | Selecteren koppelt of ontkoppelt geen collaborator. |
| StudentLevelAuthorizations | Selecteren wijzigt geen leerlingtoegang. |
| Exercises | Selecteren wijzigt geen oefeningen. |
| LevelCategoryLinks | Selecteren koppelt geen categorieën. |
| SystemMessages | Selectie veroorzaakt geen bericht. |
| ExerciseRuns | Er wordt geen oefening gestart. |
| UserRelationships | Relaties worden niet gewijzigd. |
13. State diagram
Niet van toepassing.
De selectie van een niveau is een contextkeuze, geen persistent statusobject. Wanneer de gekozen context als voorkeur wordt opgeslagen, blijft de autorisatie alsnog afgeleid uit actuele docentrechten.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Niveau selecteren
16.2 Ongeldige niveaucontext
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Niveau selecteren | Ongeldige selectie gebruikt inline of routeguard-afhandeling. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijven dat Oefenaanbod vanuit één geselecteerde niveaucontext werkt. |
| Functioneel Ontwerp | Beschrijven dat niveaukeuze bepaalt welke categorieën en oefeningen worden getoond. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus en autorisatie en contextcontrole beschrijven de technische uitwerking. Server-side validatie van LevelId op eigenaarschap of collaboratorcontext. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus en autorisatie en contextcontrole beschrijven de technische uitwerking. Eventuele opslag van laatst gekozen niveau als voorkeur, niet als autorisatie. |
| Software Requirements Specification | Beschrijft dat een docent geen niveaucontext kan gebruiken zonder actuele toegang. |
| Software Requirements Specification | Beschrijft dat oude routeparameters of clientstate geen toegang afdwingen. |
| Database-informatie | Geen nieuwe tabel; eventueel UserSettings voor gebruikersvoorkeur. |
| Ontwerpbronnen | Business rules voor niveaucontextselectie en autorisatie. |
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-DOC-AANB-002-001 | SRS-AUTH-001 SRS-CAT-001 SRS-TCH-002 AC-AUTH-001 AC-CAT-001 AC-TCH-002 | Een docent alleen niveaus laten selecteren waartoe de docent actueel toegang heeft |
REQ-UC-DOC-AANB-002-002 | SRS-AUTH-001 SRS-CAT-006 SRS-TCH-002 AC-AUTH-001 AC-CAT-006 AC-TCH-002 | De gekozen niveaucontext server-side valideren |
REQ-UC-DOC-AANB-002-003 | SRS-AUTH-001 SRS-CAT-001 SRS-TCH-006 AC-AUTH-001 AC-CAT-001 AC-TCH-006 | Toegang tot het gekozen niveau baseren op eigenaarschap of actieve collaboratorstatus |
REQ-UC-DOC-AANB-002-004 | SRS-AUTH-001 SRS-TCH-006 AC-AUTH-001 AC-TCH-006 | Beëindigde collaboratorcontexten blokkeren |
REQ-UC-DOC-AANB-002-005 | SRS-AUTH-004 SRS-RDM-001 SRS-RDM-002 SRS-RDM-005 SRS-CAT-001 SRS-TCH-002 AC-AUTH-004 AC-RDM-001 AC-RDM-002 AC-RDM-005 AC-CAT-001 AC-TCH-002 | Samenvattingsinformatie opnieuw afleiden voor het geselecteerde niveau |
REQ-UC-DOC-AANB-002-006 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Het selecteren van een niveau niet gebruiken om niveaugegevens te wijzigen |
REQ-UC-DOC-AANB-002-007 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Een opgeslagen laatst gekozen niveau alleen gebruiken na actuele validatie |
REQ-UC-DOC-AANB-002-008 | SRS-ACC-003 SRS-ACC-005 SRS-CAT-006 SRS-TCH-002 SRS-NFR-SEC-001 SRS-NFR-ACC-001 AC-ACC-003 AC-ACC-005 AC-CAT-006 AC-TCH-002 AC-NFR-SEC-001 AC-NFR-ACC-001 | Ongeldige of ontoegankelijke niveaucontexten veilig afhandelen |
REQ-UC-DOC-AANB-002-009 | SRS-AUTH-001 SRS-CAT-001 SRS-TCH-002 AC-AUTH-001 AC-CAT-001 AC-TCH-002 | Vervolgacties binnen het niveau opnieuw autoriseren |
REQ-UC-DOC-AANB-002-010 | SRS-AUTH-001 SRS-AUTH-002 SRS-TCH-001 AC-AUTH-001 AC-AUTH-002 AC-TCH-001 | Routeparameters behandelen als input en niet als autorisatiebron |