UC-DOC-AANB-008 — Categoriegebruik en zichtbaarheid afleiden
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-AANB-008 |
| Naam | Categoriegebruik en zichtbaarheid afleiden |
| Domein | Docent |
| Subdomein | Oefenaanbod, niveaus en categorieën |
| Primaire actor | OefenHub-systeem |
| Secundaire actor(en) | Docent, Leerling |
| Rolcontext | Docentcontext en leerlingcontext binnen hetzelfde niveau |
| Betrokken schermen | Oefenaanbod; categorieoverzicht; leerlingnavigatie; leerling-frontpage |
| Gerelateerde usecases | UC-DOC-AANB-005, UC-DOC-AANB-006, UC-DOC-AANB-007, UC-DOC-OEF-006, UC-LLN-TOEG-001 |
| Primaire entiteiten | Levels, LevelCategories, Categories, Exercises |
| Secundaire entiteiten / events | Afgeleide readmodels, ExerciseHistory |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Het systeem leidt per niveau en categorie af hoe een categorie binnen docentbeheer en leerlingnavigatie behandeld moet worden. Voor docenten blijft een gekoppelde categorie zichtbaar als beheercontext, ook wanneer er nog geen actieve oefeningen zijn. Voor leerlingen wordt dezelfde categorie alleen zichtbaar wanneer binnen hun actieve niveau en toegangscontext minimaal één actieve oefening beschikbaar is. Deze usecase borgt dat categoriegebruik en zichtbaarheid niet als vrije handmatige docentinstelling worden gezien, maar als afgeleide uit bestaande brondata.
Deze usecase beschrijft de docenthandeling binnen het subdomein Oefenaanbod, niveaus en categorieën. De usecase is procesgericht en beschrijft geen pixelniveau-schermdetails. Schermdetails, exacte layout en componentvormgeving blijven bronhoudend in schermdocumentatie en mockups. Centraal categoriebeheer, migratie van categorieën en beheerdercorrecties blijven bronhoudend in de beheerderflows en ontwerpbronnen.
3. Scope
Binnen scope:
- afleiden van categoriegebruik binnen een niveau;
- afleiden van leerlingzichtbaarheid op basis van actieve oefeningen;
- onderscheiden tussen docentbeheerzichtbaarheid en leerlingzichtbaarheid;
- toepassen van niveaucontext en toegangscontext;
- uitleggen wanneer afgeleide waarden eventueel technisch gecachet mogen worden;
- voorkomen dat afgeleide zichtbaarheid een tweede bron van waarheid wordt.
Buiten scope:
- oefening activeren of in onderhoud zetten;
- leerlingniveau-autorisaties beheren;
- centrale categorie-eigenschappen wijzigen;
- frontpagecontent beheren;
- populariteit of statistieken berekenen;
- categorieën migreren of samenvoegen.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | Er bestaat een niveau met nul, één of meerdere categorie-koppelingen. |
| PRE-002 | Categorieën en oefeningen hebben actuele statusinformatie. |
| PRE-003 | Voor leerlingzichtbaarheid is een actieve leerling-niveaucontext beschikbaar. |
| PRE-004 | Voor docentbeheerzichtbaarheid is een geldige docentcontext beschikbaar. |
| PRE-005 | Het systeem kan actieve oefeningen binnen niveau en categorie bepalen. |
| PRE-006 | Autorisatie- en toegangregels voor de actor zijn server-side beschikbaar. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Voor docentbeheer is duidelijk welke categorieën aan het niveau gekoppeld zijn. |
| POST-002 | Voor leerlingnavigatie is bepaald welke categorieën zichtbaar zijn. |
| POST-003 | Categorieën zonder actieve oefeningen zijn niet leerlingzichtbaar. |
| POST-004 | Afgeleide zichtbaarheid is herleidbaar uit brondata. |
| POST-005 | Er zijn geen onnodige handmatige zichtbaarheidsschermen voor categorieën ontstaan. |
| POST-006 | Eventuele cachewaarden zijn afgeleid en vervangbaar, niet bronhoudend. |
6. Trigger
De usecase wordt uitgevoerd wanneer een overzicht, navigatie of frontpage moet bepalen welke categorieën of categoriegegevens zichtbaar zijn. De trigger kan ontstaan vanuit docentbeheer, leerlingnavigatie, leerling-frontpage of na wijzigingen aan oefeningen binnen een categorie.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Systeem | Contextresolver | Ontvangt verzoek om categoriegebruik of zichtbaarheid te bepalen. | Systeem bepaalt actorcontext en niveaucontext. | Docent of leerling. |
| 2 | Systeem | Autorisatie | Controleert of de actor het niveau mag zien. | Onbevoegde context wordt geblokkeerd. | UserRoles, relaties, autorisaties. |
| 3 | Systeem | Categoriebron | Laadt categorie-koppelingen voor het niveau. | Gekoppelde categorieën vormen basis voor beheercontext. | LevelCategories. |
| 4 | Systeem | Oefeningbron | Laadt actieve en inactieve oefeningen binnen niveau en categorie. | Actieve status wordt gebruikt voor leerlingzichtbaarheid. | Exercises.IsActive. |
| 5 | Systeem | Docentafleiding | Bepaalt docentbeheerzichtbaarheid. | Alle gekoppelde categorieën blijven beheersbaar zichtbaar volgens statusregels. | Docentcontext. |
| 6 | Systeem | Leerlingafleiding | Bepaalt leerlingzichtbaarheid. | Categorie telt alleen mee wanneer minimaal één actieve oefening toegankelijk is. | Leerlingcontext plus actieve oefening. |
| 7 | Systeem | Readmodel | Bouwt resultset voor betreffende scherm. | Readmodel bevat uitleg/flags voor zichtbaar, niet zichtbaar of beheer-only. | Geen nieuwe brondata. |
| 8 | Systeem | Optionele cache | Actualiseert alleen afgeleide cache indien deze technisch bestaat. | Cache is afgeleid en mag worden herbouwd. | Geen functionele bron. |
| 9 | Docent of Leerling | Scherm | Ziet passende categoriegegevens. | Docent ziet beheercontext; leerling ziet alleen toegankelijke categorieën. | DRY-toegangsregels. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Actor heeft geen toegang tot niveau. | Systeem retourneert geen categoriegegevens. | Routeguard of toegang-geweigerdafhandeling. | Geen. |
| ALT-002 | 3 | Niveau heeft geen categorie-koppelingen. | Docent ziet lege beheercontext; leerling ziet geen categorieën voor dat niveau. | Geen popupregister-popup. | Geen. |
| ALT-003 | 4 | Categorie heeft alleen inactieve oefeningen. | Docent ziet categorie als beheercontext; leerling ziet categorie niet. | Geen popupregister-popup. | Geen. |
| ALT-004 | 4 | Oefening is actief maar leerling mist niveauautorisatie. | Categorie wordt voor die leerling niet zichtbaar. | Geen popupregister-popup. | Geen. |
| ALT-005 | 8 | Afgeleide cache is verouderd of ontbreekt. | Systeem herbouwt of negeert cache op basis van brondata. | Geen popupregister-popup. | Technische cacheverversing zonder domeinmutatie. |
| ALT-006 | 8 | Cacheverversing faalt maar bronquery slaagt. | Systeem toont brongebaseerd resultaat en logt technische cachefout. | Technische logging. | Geen domeinmutatie. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Categoriegebruik binnen docentbeheer wordt afgeleid uit LevelCategories. |
| BR-002 | Leerlingzichtbaarheid van een categorie wordt afgeleid uit actieve oefeningen binnen de geldige niveau- en autorisatiecontext. |
| BR-003 | Een docent zet categoriezichtbaarheid voor leerlingen niet handmatig aan of uit. |
| BR-004 | Een categorie zonder actieve oefeningen mag wel zichtbaar blijven voor de docent in beheercontext. |
| BR-005 | Een categorie zonder actieve oefeningen mag niet zichtbaar zijn in leerlingnavigatie. |
| BR-006 | Een actieve oefening maakt een categorie alleen zichtbaar voor leerlingen die de onderliggende niveaucontext mogen gebruiken. |
| BR-007 | Afgeleide zichtbaarheid mag technisch gecachet worden, maar cache is geen bron van waarheid. |
| BR-008 | Wijzigingen aan oefenstatus kunnen zichtbaarheid opnieuw laten afleiden. |
| BR-009 | Centrale categorie-status kan invloed hebben op koppelbaarheid, maar historische beheercontext kan zichtbaar blijven waar functioneel nodig. |
| BR-010 | De afleiding mag geen leerlingautorisaties of relaties aanpassen. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| ActorContext | Moet geldige docent- of leerlingcontext zijn. |
| LevelId | Moet bestaan en passen bij de actorcontext. |
| LevelCategory | Moet bij het niveau horen. |
| CategoryStatus | Wordt gelezen om koppelbaarheid en beheerweergave te bepalen. |
| Exercise.IsActive | Moet betrouwbaar de oefenbeschikbaarheid binnen de categorie bepalen. |
| StudentLevelAuthorization | Moet actief zijn voor leerlingzichtbaarheid in privéniveaus. |
| DerivedVisibility | Wordt server-side berekend en niet door de client aangeleverd. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 1-7 | Readmodel | Categoriegebruik en zichtbaarheid | Afgeleid uit niveau-, categorie-, oefening- en autorisatiebrondata zonder domeinmutatie. |
| 8 | Afgeleide cache | Materialized readmodel of cache | Alleen afgeleide cache kan technisch worden ververst; de cache is geen bron van waarheid. |
Deze usecase schrijft geen functioneel domeinevent. Foutafhandeling rond cacheverversing is technische logging en geen categorie- of zichtbaarheidsevent.
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| Categories | Zichtbaarheidsafleiding wijzigt de centrale categorie niet. |
| LevelCategories | Koppelingen worden gelezen, niet gewijzigd. |
| Exercises | Oefenstatus wordt gelezen, niet gewijzigd. |
| TeacherStudentLevelAuthorizations | Autorisaties worden gelezen, niet gewijzigd. |
| UserRelationships | Relaties worden gelezen waar nodig, niet gewijzigd. |
| SystemMessages | Afleiding van zichtbaarheid stuurt geen berichten. |
13. State diagram
Niet van toepassing als persistent statusmodel. De zichtbaarheid is een afgeleide toestand uit bestaande brondata en geen zelfstandige statuskolom die handmatig beheerd wordt.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Afleiding van zichtbaarheid is systeemlogica zonder gebruikersbevestiging. | Geen domeinspecifieke popup nodig. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft dat categoriezichtbaarheid voor leerlingen wordt afgeleid uit actieve oefeningen binnen het actieve niveau. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus en autorisatie en contextcontrole beschrijven de technische uitwerking. Beschrijf afleiding uit LevelCategories, Exercises.IsActive en autorisatiecontext, inclusief optionele cache als afgeleide. |
| Software Requirements Specification | Neem eisen op dat zichtbaarheid niet handmatig door docent wordt ingesteld en dat cache geen bron van waarheid is. |
| Database-informatie | Controleer dat geen aparte verplichte categoriezichtbaarheidstabel als bron nodig is. |
| Ontwerpbronnen | Beschrijven business rules over afgeleide zichtbaarheid en onderscheid tussen docentbeheer en leerlingnavigatie. |
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-008-001 | SRS-RDM-001 SRS-RDM-004 SRS-RDM-005 SRS-CAT-001 SRS-TCH-002 SRS-ADM-001 AC-RDM-001 AC-RDM-004 AC-RDM-005 AC-CAT-001 AC-TCH-002 AC-ADM-001 | Categoriegebruik binnen docentbeheer afleiden uit niveau-categorie-koppelingen |
REQ-UC-DOC-AANB-008-002 | SRS-RDM-001 SRS-RDM-005 SRS-ACC-003 SRS-ACC-005 SRS-CAT-006 SRS-LRN-005 AC-RDM-001 AC-RDM-005 AC-ACC-003 AC-ACC-005 AC-CAT-006 AC-LRN-005 | Leerlingzichtbaarheid van categorieën afleiden uit actieve toegankelijke oefeningen binnen de niveaucontext |
REQ-UC-DOC-AANB-008-003 | SRS-CAT-001 SRS-LRN-009 SRS-TCH-002 AC-CAT-001 AC-LRN-009 AC-TCH-002 | Categoriezichtbaarheid voor leerlingen niet als vrije handmatige docentinstelling behandelen |
REQ-UC-DOC-AANB-008-004 | SRS-CAT-001 SRS-LRN-009 SRS-TCH-002 SRS-ADM-001 AC-CAT-001 AC-LRN-009 AC-TCH-002 AC-ADM-001 | Categorieën zonder actieve oefeningen wel in docentbeheer kunnen tonen |
REQ-UC-DOC-AANB-008-005 | SRS-CAT-001 SRS-LRN-009 SRS-TCH-002 AC-CAT-001 AC-LRN-009 AC-TCH-002 | Categorieën zonder actieve oefeningen verbergen voor leerlingen |
REQ-UC-DOC-AANB-008-006 | SRS-AUTH-001 SRS-TCH-001 AC-AUTH-001 AC-TCH-001 | De afleiding server-side uitvoeren op basis van brondata en autorisatiecontext |
REQ-UC-DOC-AANB-008-007 | SRS-RDM-001 SRS-TCH-001 AC-RDM-001 AC-TCH-001 | Afgeleide cachewaarden gebruiken zolang deze afgeleid en herbouwbaar blijven |
REQ-UC-DOC-AANB-008-008 | SRS-AUTH-001 SRS-REL-001 SRS-CAT-001 SRS-LRN-005 SRS-TCH-002 AC-AUTH-001 AC-REL-001 AC-CAT-001 AC-LRN-005 AC-TCH-002 | Door zichtbaarheidsafleiding geen relaties, autorisaties, oefeningen of categorieën wijzigen |
REQ-UC-DOC-AANB-008-009 | SRS-RDM-001 SRS-RDM-005 SRS-CAT-001 SRS-TCH-002 AC-RDM-001 AC-RDM-005 AC-CAT-001 AC-TCH-002 | Bij wijziging van oefenstatus de categoriezichtbaarheid opnieuw correct kunnen afleiden |