Skip to main content

UC-DOC-AANB-006 — Bestaande categorie aan niveau koppelen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-AANB-006
NaamBestaande categorie aan niveau koppelen
DomeinDocent
SubdomeinOefenaanbod, niveaus en categorieën
Primaire actorDocent
Secundaire actor(en)OefenHub-systeem
RolcontextDocent als eigenaar of actieve collaborator van een niveau
Betrokken schermenOefenaanbod; niveaucontext; categorie koppelen
Gerelateerde usecasesUC-DOC-AANB-002, UC-DOC-AANB-005, UC-DOC-AANB-007, UC-DOC-AANB-008, UC-DOC-OEF-001
Primaire entiteitenLevels, Categories, LevelCategories
Secundaire entiteiten / eventsCategoryLinkedToLevel, CategoryHistory
Gerelateerde popupsPOP-DOC-AANB-CATEGORY-ALREADY-LINKED, POP-DOC-AANB-CATEGORY-LINK-FAILED
PopupregisterAanvullen indien deze popupkeys nog niet bestaan
MoSCoWMust

2. Omschrijving

De docent koppelt een bestaande centrale categorie aan het geselecteerde niveau. Deze route voorkomt onnodige doublures doordat de docent eerst uit bestaande centrale categorieën kan kiezen. Na koppeling kan de docent binnen die categorie concrete oefeningen beheren of aanmaken. De koppeling maakt de categorie nog niet automatisch zichtbaar voor leerlingen; leerlingzichtbaarheid volgt pas uit actieve onderliggende oefeningen binnen het niveau.

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:

  • tonen van selecteerbare bestaande centrale categorieën;
  • koppelen van precies één bestaande categorie aan het geselecteerde niveau;
  • voorkomen van dubbele actieve koppelingen binnen hetzelfde niveau;
  • vastleggen van actor en tijdstip van de koppeling;
  • auditbaar maken van de niveau-categorie-koppeling;
  • terugkeren naar categorieoverzicht na succesvolle koppeling.

Buiten scope:

  • aanmaken van een nieuwe centrale categorie;
  • wijzigen van categorie-identiteit;
  • migreren of samenvoegen van categorieën;
  • automatisch aanmaken van oefeningen;
  • automatisch zichtbaar maken van de categorie voor leerlingen zonder actieve oefening;
  • leerlingautorisaties wijzigen.

4. Pre-condities

IDVoorwaarde
PRE-001De actor is ingelogd met actieve docentrol.
PRE-002Er is een geselecteerd niveau binnen de docentcontext.
PRE-003De docent heeft bewerkrecht op het niveau als eigenaar of actieve collaborator.
PRE-004Er bestaat minimaal één centrale categorie die als koppelbaar mag worden aangeboden.
PRE-005De te koppelen categorie is actief en niet uitgefaseerd voor nieuwe koppelingen.
PRE-006Er bestaat nog geen actieve koppeling tussen hetzelfde niveau en dezelfde categorie.

5. Post-condities

IDResultaat
POST-001Er is een actieve koppeling tussen het niveau en de bestaande centrale categorie.
POST-002De categorie verschijnt in het categorieoverzicht van het niveau.
POST-003Er is auditinformatie vastgelegd over actor en tijdstip.
POST-004De categorie is niet automatisch leerlingzichtbaar wanneer er nog geen actieve oefeningen zijn.
POST-005Er zijn geen centrale categorie-eigenschappen gewijzigd.
POST-006Er zijn geen oefeningen, leerlingautorisaties of systeemberichten aangemaakt.

6. Trigger

De usecase start wanneer de docent in het categorieoverzicht van een niveau kiest voor de actie om een bestaande categorie te koppelen. De docent wil hergebruik maken van een al bestaande centrale categorie in plaats van een nieuwe centrale categorie aan te maken.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1DocentCategorieoverzichtKiest actie Bestaande categorie koppelen.Systeem opent/selecteert de koppelcomponent.LevelId uit actieve docentcontext.
2SysteemBackend autorisatieControleert bewerkrecht op niveau.Alleen eigenaar of actieve collaborator mag koppelen.Levels, LevelCollaborators.
3SysteemCategoriekeuzeLaadt actieve centrale categorieën die nog niet gekoppeld zijn.Reeds gekoppelde categorieën worden uitgesloten of als niet-koppelbaar gemarkeerd.Categories, LevelCategories.
4DocentCategoriekeuzeSelecteert één bestaande categorie.Systeem bewaart selectie clientside tot bevestiging.CategoryId.
5DocentCategoriekeuzeBevestigt koppeling.Systeem valideert selectie opnieuw server-side.Geen vertrouwen op clientstate.
6SysteemBackend verwerkingControleert dubbele koppeling en categorietoestand.Bij geldige selectie wordt koppeling aangemaakt.Unieke niveau-categoriecombinatie.
7SysteemDatabaseMaakt LevelCategories-record aan of activeert toegestane nieuwe koppeling volgens datamodel.Actor en timestamp worden vastgelegd.CreatedByUserId, CreatedAtUtc.
8SysteemAudit/eventRegistreert koppelactie.Event of historyregel maakt wijziging herleidbaar.CategoryLinkedToLevel.
9SysteemReadmodelHerbouwt categorieoverzicht.Nieuwe categorie verschijnt in beheercontext.Afgeleide zichtbaarheid = afhankelijk van actieve oefeningen.
10DocentCategorieoverzichtBekijkt resultaat.Docent kan doorgaan naar oefeningen binnen categorie.Vervolg naar UC-DOC-OEF-001.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Docent heeft geen bewerkrecht op niveau.Systeem blokkeert de actie.Generieke toegang-geweigerdafhandeling.Geen.
ALT-0023Er zijn geen koppelbare categorieën beschikbaar.Systeem toont lege keuze met route naar nieuwe categorie aanmaken als toegestaan.Geen popupregister-popup.Geen.
ALT-0035Categorie is inmiddels gekoppeld door andere gebruiker.Systeem blokkeert dubbele koppeling en ververst overzicht.POP-DOC-AANB-CATEGORY-ALREADY-LINKED.Geen.
ALT-0045Categorie is inmiddels gedeactiveerd of uitgefaseerd.Systeem blokkeert koppeling en vraagt nieuwe selectie.Generieke niet-beschikbaarafhandeling of popupkey toevoegen indien nodig.Geen.
ALT-0056Unieke constraint of concurrencycontrole faalt.Systeem rolt transactie terug en toont veilige foutafhandeling.POP-DOC-AANB-CATEGORY-LINK-FAILED.Geen blijvende mutatie.
ALT-0068Auditregistratie faalt binnen transactie.Systeem rolt de koppeling terug als audit verplicht transactioneel is.POP-DOC-AANB-CATEGORY-LINK-FAILED.Geen blijvende mutatie.

9. Business rules

IDRegel
BR-001Een docent mag alleen een categorie koppelen aan een niveau waarop de docent bewerkrecht heeft.
BR-002Alleen bestaande actieve centrale categorieën mogen als doel van deze usecase worden gekozen.
BR-003Een niveau mag niet meer dan één actieve koppeling met dezelfde centrale categorie hebben.
BR-004Het koppelen van een categorie maakt geen nieuwe centrale categorie aan.
BR-005Het koppelen van een categorie wijzigt geen naam, kleur of icoon van de centrale categorie.
BR-006Een gekoppelde categorie wordt pas leerlingzichtbaar wanneer er binnen die categorie minimaal één actieve oefening bestaat.
BR-007Koppelbare categorieën worden server-side bepaald; de client mag geen willekeurige CategoryId afdwingen.
BR-008De koppelactie moet herleidbaar zijn via actor en tijdstip.
BR-009De koppelactie veroorzaakt geen systeembericht aan leerlingen.
BR-010Centrale categorie-migratie of beheerdercorrectie is geen onderdeel van deze docentflow.

10. Datavalidatie

Veld / objectValidatie
LevelIdBestaat, is actief genoeg voor docentbeheer en is toegankelijk voor actor.
CategoryIdBestaat, is actief en is toegestaan voor nieuwe koppelingen.
TeacherUserIdHeeft actieve docentrol en bewerkrecht binnen geselecteerd niveau.
LevelCategoryUnieke actieve combinatie van LevelId en CategoryId.
CreatedByUserIdWordt server-side gevuld met huidige gebruiker.
CreatedAtUtcWordt server-side in UTC gezet.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
7CreateLevelCategoriesNieuwe actieve koppeling tussen niveau en bestaande centrale categorie wordt aangemaakt.
7AuditveldenLevelCategoriesCreatedByUserId en CreatedAtUtc worden gevuld.
8EventCategoryLinkedToLevelVastgelegd dat een bestaande centrale categorie aan het niveau is gekoppeld.
9ReadmodelCategorieoverzichtHet categorieoverzicht wordt opnieuw opgebouwd uit brondata.

12. Geen datamutaties

EntiteitReden
CategoriesCentrale categorie wordt hergebruikt en niet gewijzigd.
ExercisesKoppelen van categorie maakt geen oefeningen aan.
ExerciseRunsGeen leerlingrun ontstaat door categorie koppelen.
UserSettingsDocentvoorkeuren worden niet gewijzigd.
SystemMessagesLeerlingen worden niet geïnformeerd over alleen een categorie-koppeling.
TeacherStudentLevelAuthorizationsNiveau-autorisaties blijven ongewijzigd.

13. State diagram

Niet van toepassing. De usecase wijzigt een koppeling, maar geen statusobject met eigen lifecycle.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyMomentDoel
POP-DOC-AANB-CATEGORY-ALREADY-LINKEDWanneer de categorie al aan het niveau gekoppeld is.Voorkomt dubbele koppeling.
POP-DOC-AANB-CATEGORY-LINK-FAILEDWanneer de koppeling door technische of concurrencyfout niet kan worden opgeslagen.Geeft veilige foutafhandeling zonder halve mutatie.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpBeschrijft expliciet dat docenten bestaande centrale categorieën kunnen koppelen aan een niveau om doublures te voorkomen.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus en autorisatie en contextcontrole beschrijven de technische uitwerking. Beschrijf server-side filtering van koppelbare categorieën, unieke niveau-categoriecombinatie en transactiegrenzen.
Software Requirements SpecificationNeem eisen op voor het voorkomen van dubbele koppelingen, autorisatie en auditbaarheid.
Database-informatieControleer LevelCategories inclusief auditvelden en unieke actieve combinatie.
OntwerpbronnenBeschrijven command en event voor categorie-koppeling door docent.

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-DOC-AANB-006-001SRS-CAT-002
SRS-TCH-002
AC-CAT-002
AC-TCH-002
Een docent met bewerkrecht een bestaande centrale categorie aan een niveau kunnen laten koppelen
REQ-UC-DOC-AANB-006-002SRS-CAT-002
SRS-TCH-002
AC-CAT-002
AC-TCH-002
Alleen actieve en koppelbare centrale categorieën aanbieden
REQ-UC-DOC-AANB-006-003SRS-CAT-005
SRS-TCH-002
AC-CAT-005
AC-TCH-002
Voorkomen dat dezelfde categorie meerdere keren actief aan hetzelfde niveau wordt gekoppeld
REQ-UC-DOC-AANB-006-004SRS-AUTH-001
SRS-CAT-006
SRS-TCH-002
AC-AUTH-001
AC-CAT-006
AC-TCH-002
De koppelactie server-side valideren op niveaucontext, docentrol en categoriecontext
REQ-UC-DOC-AANB-006-005SRS-TCH-001
SRS-NFR-AUD-001
AC-TCH-001
AC-NFR-AUD-001
Actor en tijdstip van de koppelactie vastleggen
REQ-UC-DOC-AANB-006-006SRS-CAT-002
SRS-TCH-002
AC-CAT-002
AC-TCH-002
Bij het koppelen geen centrale categorie-eigenschappen wijzigen
REQ-UC-DOC-AANB-006-007SRS-AUTH-001
SRS-LRN-009
SRS-TCH-002
AC-AUTH-001
AC-LRN-009
AC-TCH-002
Bij het koppelen geen oefeningen of leerlingautorisaties aanmaken
REQ-UC-DOC-AANB-006-008SRS-RDM-001
SRS-RDM-005
SRS-CAT-001
SRS-TCH-002
AC-RDM-001
AC-RDM-005
AC-CAT-001
AC-TCH-002
De categorie na succesvolle koppeling tonen in het categorieoverzicht van het niveau
REQ-UC-DOC-AANB-006-009SRS-SHR-001
SRS-TCH-001
SRS-NFR-SEC-001
AC-SHR-001
AC-TCH-001
AC-NFR-SEC-001
Concurrencyfouten veilig afhandelen zonder dubbele of gedeeltelijke koppeling