Skip to main content

UC-BEH-CAT-002 — Categoriebeheer openen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-CAT-002
NaamCategoriebeheer openen
DomeinBeheerder / Categorieën beheren
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, database, autorisatiecomponent, categoriebeheercomponent, historiecomponent
RolcontextActieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenContent > Categorieën beheren
Gerelateerde usecasesUC-BEH-CAT-001, UC-BEH-CAT-003, UC-BEH-CAT-004, UC-BEH-CAT-005, UC-BEH-CAT-006, UC-BEH-CAT-007
Primaire entiteitenCategories, CategoryHistory, CategoryMigrations, TeacherLevelCategories, TeacherLevelCategoryExercises
Secundaire entiteiten / eventsUsers, ExerciseRuns, SharedExercises, categoriebeheer-readmodels
Gerelateerde popupsNiet van toepassing
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe een beheerder vanuit het categorieoverzicht de detail- en beheerweergave van precies één geselecteerde centrale categorie opent.

De beheerweergave bevat minimaal de onderdelen Intro / uitleg, Categorie, Migreren naar en Geschiedenis. De geselecteerde categorie is het centrale object van de pagina; alle acties binnen de pagina worden server-side tegen deze CategoryId gevalideerd.

De Intro / uitleg toont een samenvatting van gebruik en impact, inclusief actieve docentniveaus, actieve oefenkoppelingen, aanmaakinformatie en laatste wijzigingsinformatie.

Uitgangspunten

  • Categorieën zijn centrale onderwijsinhoud en geen private docentlabels.
  • Naam, kleur en icoon vormen samen de centrale categorie-identiteit.
  • Beheeracties op categorieën zijn volledig server-side gevalideerd.
  • Historische resultaten behouden hun oorspronkelijke categoriecontext.
  • Popupinhoud blijft bronhoudend in het centrale popupregister.

3. Scope

Deze usecase beschrijft:

  • Openen van de detail- en beheerweergave voor één categorie.
  • Laden van categorie-identiteit, impact, aanmaakinformatie en laatste wijziging.
  • Tonen van tabs of secties Intro / uitleg, Categorie, Migreren naar en Geschiedenis.
  • Bepalen welke vervolgacties beschikbaar of geblokkeerd zijn.
  • Veilig omgaan met verlopen of ongeldige categorieselecties.

Deze usecase beschrijft niet:

  • Docentniveaubeheer, leerlingautorisaties of oefeningconfiguratie wijzigen; die blijven bronhoudend in docentflows of docentondersteuning.
  • Nieuwe centrale categorieën aanmaken vanuit beheer; categorie-aanmaak is bronhoudend in de docentflow of via technische migratie wanneer dat expliciet nodig is.
  • Historische exercise runs herschrijven; bestaande runs behouden hun oorspronkelijke categoriecontext.
  • Popupteksten of knopteksten specificeren; usecases verwijzen uitsluitend naar PopupKey.
  • Categoriegegevens opslaan; dit hoort bij UC-BEH-CAT-003.
  • Migratie daadwerkelijk uitvoeren; dit hoort bij UC-BEH-CAT-006.
  • Volledige historylijst tonen; dit hoort bij UC-BEH-CAT-007.

3.1 Afbakening met aangrenzende domeinen

OnderdeelAfbakening
Docent / OefenaanbodDocenten koppelen categorieën aan niveaus en maken waar toegestaan nieuwe centrale categorieën aan; beheer past de centrale identiteit en onderhoudsacties toe.
Beheerder / DocentondersteuningSupport op concrete docentstructuren mag categoriegebruik inspecteren, maar centrale categorie-identiteit wordt hier beheerd.
Leerling / OefenaanbodLeerlingen zien alleen afgeleide toegankelijke categorieën; deze bundel bepaalt niet zelfstandig leerlingtoegang.
Database-informatieCategories, CategoryHistory en CategoryMigrations blijven de technische bron voor centrale categorie-identiteit en audit.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd in OefenHub.
PRE-002De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft.
PRE-003De beheerder bevindt zich binnen de beheeromgeving via Content > Categorieën beheren.
PRE-004De pagina gebruikt actuele serverdata; clientstate, routeparameters of verborgen formuliervelden bepalen geen autorisatie of categorie-identiteit.
PRE-005Er is één CategoryId geselecteerd vanuit het categorieoverzicht.
PRE-006Het geselecteerde Categories-record bestaat op het moment van openen.

5. Post-condities

IDResultaat
POST-001De beheerder ziet de beheerweergave voor precies één categorie.
POST-002De broncategorie voor migratievoorbereiding is vastgelegd door de geopende categoriecontext.
POST-003Beschikbare acties zijn afgestemd op status en gebruiksimpact.
POST-004Geen categoriegegevens zijn gewijzigd.
POST-005Geen migratie of historymutatie is aangemaakt.

6. Trigger

De usecase start wanneer de beheerder in het categorieoverzicht een categorie selecteert en Open beheer kiest.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderOverzichtKiest Open beheer voor een geselecteerde categorie.De frontend vraagt de detailcontext op.CategoryId uit geselecteerde regel.
2BackendAutorisatiecomponentControleert beheerdercontext.Alleen een actieve beheerder mag de detailweergave openen.Server-side autorisatie.
3BackendCategoriequeryValideert dat CategoryId bestaat.Ongeldige of verwijderde routecontext wordt veilig afgehandeld.Categories.Id.
4BackendDetailreadmodelLaadt categorie-identiteit.Naam, kleur, icoon, status, CreatedAtUtc en UpdatedAtUtc worden beschikbaar.Categories.
5BackendImpactreadmodelLaadt gebruiksimpact.Actieve docentniveaus en actieve oefenkoppelingen worden berekend.TeacherLevelCategories en TeacherLevelCategoryExercises.
6FrontendBeheerweergaveToont Intro / uitleg, Categorie, Migreren naar en Geschiedenis.Elke sectie werkt vanuit dezelfde servergevalideerde CategoryId.Detailcontext.
7FrontendActiestatusBepaalt welke acties zichtbaar of uitgeschakeld zijn.Status wijzigen wordt geblokkeerd bij actieve koppelingen; migreren vereist actieve broncontext.Business rules.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011Geen categorie geselecteerd.Open beheer blijft niet beschikbaar of de backend weigert de aanvraag.Niet van toepassing.Geen.
ALT-0022Gebruiker is geen beheerder.De backend weigert toegang.Niet van toepassing.Geen.
ALT-0033CategoryId bestaat niet.De gebruiker keert terug naar het overzicht met veilige niet-beschikbaarafhandeling.Niet van toepassing.Geen.
ALT-0045Impactreadmodel kan niet volledig worden samengesteld.De beheerweergave toont de categorie niet als veilig wijzigbaar totdat impact bekend is.Niet van toepassing.Geen.
ALT-0057Categorie heeft actieve koppelingen.Statuswijziging naar niet-kiesbaar wordt zichtbaar geblokkeerd.Niet van toepassing.Geen.

9. Business rules

IDBusiness rule
BR-001Een beheerweergave heeft altijd precies één centrale categorie als context.
BR-002Het onderdeel Migreren naar gebruikt de geopende categorie als vaste broncategorie.
BR-003Acties worden niet alleen in de frontend uitgeschakeld maar server-side opnieuw gecontroleerd.
BR-004De detailweergave combineert beheerbare categorie-identiteit met read-only impactinformatie.
BR-005Actieve koppelingen bepalen of statuswijziging toegestaan is.
BR-006De detailweergave is geen docentniveau- of oefeningeditor.
BR-007Aanmaakinformatie en laatste wijzigingsinformatie worden getoond voor beheerbaarheid en auditcontext.

10. Datavalidatie

IDValidatie
VAL-001CategoryId is verplicht en moet bestaan.
VAL-002De actieve gebruiker moet op het moment van openen beheerder zijn.
VAL-003Impactwaarden moeten server-side worden berekend.
VAL-004Actiestatussen mogen niet uit querystring of clientstate worden afgeleid.
VAL-005Een soft-deleted categorie mag nog geopend worden voor historie en herstelanalyse.
VAL-006De broncategorie voor migratie mag na openen niet door een verborgen formulierwaarde worden vervangen.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001Geen functionele mutatieOpenen van detailbeheer wijzigt geen categorie.
MUT-002Geen domeineventOpenen van een beheerweergave wordt niet als CategoryHistory of ander domeinevent vastgelegd.

12. Geen datamutaties

IDGeen mutatieReden
NO-001CategoriesGeen veld van de categorie wordt gewijzigd.
NO-002CategoryHistoryOpenen van een detailpagina is geen beheerwijziging.
NO-003CategoryMigrationsEr wordt geen migratie voorbereid of uitgevoerd.
NO-004TeacherLevelCategoriesKoppelingen blijven ongewijzigd.
NO-005TeacherLevelCategoryExercisesOnderliggende oefenkoppelingen blijven ongewijzigd.

13. State diagram

Niet van toepassing. Deze usecase opent een detailcontext en wijzigt geen persistent statusobject. Beschikbare vervolgacties worden afgeleid uit actuele categorie- en impactdata.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

Niet van toepassing.

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

DocumentAfleiding
Functioneel OntwerpDe beheerpagina werkt als tweestapsflow: eerst selecteren, daarna beheren.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, databaseontwerp en historie en background jobs beschrijven de technische uitwerking. De detailcontext moet server-side vanuit CategoryId worden geladen en niet uit clientstate worden vertrouwd.
Software Requirements SpecificationSRS moet eisen dat acties per status en impact opnieuw server-side worden gecontroleerd.
DatabaseCategories, TeacherLevelCategories, TeacherLevelCategoryExercises en CategoryHistory leveren de getoonde context.

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
UC-BEH-CAT-002-REQ-001SRS-AUTH-004
SRS-CAT-006
SRS-ADM-001
AC-AUTH-004
AC-CAT-006
AC-ADM-001
Detailbeheer openen voor precies één geselecteerde categorie
UC-BEH-CAT-002-REQ-002SRS-CAT-001
SRS-ADM-006
SRS-ADM-001
SRS-NFR-AUD-001
AC-CAT-001
AC-ADM-006
AC-ADM-001
AC-NFR-AUD-001
De onderdelen Intro / uitleg, Categorie, Migreren naar en Geschiedenis tonen
UC-BEH-CAT-002-REQ-003SRS-ADM-001
AC-ADM-001
Aanmaakinformatie en laatste wijzigingsinformatie tonen
UC-BEH-CAT-002-REQ-004SRS-CAT-001
SRS-TCH-002
SRS-ADM-001
AC-CAT-001
AC-TCH-002
AC-ADM-001
Actieve docentniveaus en actieve oefenkoppelingen als impact tonen
UC-BEH-CAT-002-REQ-005SRS-AUTH-001
SRS-ADM-001
AC-AUTH-001
AC-ADM-001
Status- en migratieacties blokkeren wanneer server-side voorwaarden niet geldig zijn
UC-BEH-CAT-002-REQ-006SRS-ADM-001
SRS-NFR-AUD-001
AC-ADM-001
AC-NFR-AUD-001
Bij openen van detailbeheer geen CategoryHistory of CategoryMigrations aanmaken
UC-BEH-CAT-002-REQ-007SRS-ADM-001
SRS-NFR-SEC-001
AC-ADM-001
AC-NFR-SEC-001
Verlopen of ongeldig geworden CategoryId veilig afhandelen