Skip to main content

UC-BEH-CAT-007 — Categoriegeschiedenis bekijken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-CAT-007
NaamCategoriegeschiedenis bekijken
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-002, UC-BEH-CAT-003, UC-BEH-CAT-004, UC-BEH-CAT-005, UC-BEH-CAT-006
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 de beheerhistorie van een centrale categorie bekijkt. De geschiedenis toont relevante beheeracties op categorieniveau, waaronder aanmaak, inhoudelijke wijzigingen, statuswijzigingen en migratiegerelateerde acties.

CategoryHistory is de leesbare auditlaag voor categoriewijzigingen. Migraties worden in de geschiedenis zichtbaar gemaakt als gewone geschiedenisregels op bron- en doelcategorie, terwijl CategoryMigrations de compacte bron-doel-registratie bevat.

Het bekijken van geschiedenis is read-only en wijzigt geen categorie, koppeling, migratie of auditrecord.

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:

  • Tonen van CategoryHistory voor één categorie.
  • Tonen van actiecode, oude waarde, nieuwe waarde, reden, actor en datum/tijd.
  • Tonen van migratiegerelateerde regels op bron- en doelcategorie.
  • Veilige actorweergave bij geanonimiseerde of inactieve beheerders.
  • Pagineren of compact tonen van grotere historysets.

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.
  • Historyregels aanpassen of verwijderen.
  • Zoeken in globale beheerlogs buiten deze categoriecontext.
  • Volledige migratietabel als los beheerlogdomein aanbieden.

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-005De beheerder heeft de detailweergave van één categorie geopend.
PRE-006De categorie bestaat of is historisch raadpleegbaar.
PRE-007CategoryHistory bevat nul of meer regels voor deze categorie.

5. Post-condities

IDResultaat
POST-001De beheerder ziet de categoriegeschiedenis of een lege geschiedenisstaat.
POST-002Geen historyrecord is gewijzigd of aangemaakt.
POST-003Geen categoriegegevens zijn gewijzigd.
POST-004Migratiegerelateerde historie is herkenbaar als bron- of doelactie.
POST-005De getoonde datum/tijd is gebaseerd op UTC-opslag en lokale weergave.

6. Trigger

De usecase start wanneer de beheerder binnen categoriebeheer het onderdeel Geschiedenis opent.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderBeheerweergaveOpent Geschiedenis.De frontend vraagt historyregels op.CategoryId uit detailcontext.
2BackendAutorisatiecomponentControleert beheerdercontext.Alleen beheerder mag categoriehistory bekijken.Server-side autorisatie.
3BackendHistoriequeryValideert CategoryId.Ook soft-deleted categorieën kunnen history tonen.Categories.Id.
4BackendHistoriequeryLaadt CategoryHistory-regels.Regels worden aflopend of functioneel chronologisch gesorteerd.CategoryHistory.
5BackendActorweergaveVerrijkt actorinformatie veilig.Geanonimiseerde of inactieve beheerders worden zonder actuele persoonsgegevens weergegeven.Users.
6FrontendGeschiedenisToont historyregels met actie, oude waarde, nieuwe waarde, reden, actor en tijdstip.De beheerder kan reconstructie uitvoeren.Read-only history.
7FrontendPagineringToont compacte navigatie indien nodig.Pagineren wijzigt geen history.Readmodel.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Gebruiker is geen beheerder.De backend weigert toegang.Niet van toepassing.Geen.
ALT-0023Categorie bestaat niet meer als normaal record maar heeft historische verwijzingen.De history wordt getoond wanneer server-side reconstructie veilig mogelijk is.Niet van toepassing.Geen.
ALT-0034Er zijn geen historyregels.De tab toont een lege staat.Niet van toepassing.Geen.
ALT-0045Actor is geanonimiseerd.De UI toont een veilige geanonimiseerde actorweergave.Niet van toepassing.Geen.
ALT-0056OldValue of NewValue is leeg.De UI toont dit als niet van toepassing zonder de betekenis te wijzigen.Niet van toepassing.Geen.

9. Business rules

IDBusiness rule
BR-001CategoryHistory is append-only en mag niet via de GUI worden aangepast of verwijderd.
BR-002Een historyregel moet de beheeractie, actor, tijdstip en reden zichtbaar maken wanneer deze is vastgelegd.
BR-003Migratieacties zijn zichtbaar als gewone geschiedenisregels op categorieniveau.
BR-004CategoryMigrations vervangt CategoryHistory niet; het vult de migratiereconstructie aan.
BR-005Geanonimiseerde actoren mogen geen actuele persoonsgegevens tonen.
BR-006Paginering, sortering of filtering van history is readmodelgedrag.
BR-007Geschiedenis toont beheeracties op categorieniveau en is geen zoekfunctie over alle docentstructuren.

10. Datavalidatie

IDValidatie
VAL-001CategoryId is verplicht en server-side gevalideerd.
VAL-002ActionType wordt alleen weergegeven wanneer het een bekende gesloten waarde is; onbekende waarden worden veilig als technische auditwaarde getoond.
VAL-003ChangedAtUtc wordt als UTC opgeslagen en lokaal weergegeven.
VAL-004Reason wordt weergegeven zoals opgeslagen, met veilige encoding.
VAL-005OldValue en NewValue worden veilig geëncodeerd om XSS te voorkomen.
VAL-006Actorweergave mag niet vertrouwen op client-aangeleverde gebruikersnamen.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001Geen functionele mutatieGeschiedenis bekijken is read-only.
MUT-002Geen domeineventHet bekijken van CategoryHistory schrijft geen nieuw CategoryHistory- of ander auditrecord.

12. Geen datamutaties

IDGeen mutatieReden
NO-001CategoryHistoryRegels worden niet aangepast of verwijderd.
NO-002CategoryMigrationsMigratierecords worden niet aangepast.
NO-003CategoriesCategorie-identiteit en status blijven ongewijzigd.
NO-004TeacherLevelCategoriesKoppelingen blijven ongewijzigd.
NO-005UsersActorinformatie wordt alleen gelezen.

13. State diagram

Niet van toepassing. Deze usecase toont append-only historie en wijzigt geen statusobject. Filteren, sorteren en pagineren zijn readmodelgedrag.

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 OntwerpCategoriebeheer toont geschiedenis met aanmaak, wijzigingen, status en migratieacties.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, databaseontwerp en historie en background jobs beschrijven de technische uitwerking. CategoryHistory is append-only en wordt read-only ontsloten in categoriebeheer.
Software Requirements SpecificationSRS moet historyweergave, veilige actorweergave en XSS-veilige waardeweergave vastleggen.
DatabaseGebruikt CategoryHistory en waar nodig CategoryMigrations als reconstructiebron.

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-007-REQ-001SRS-CAT-001
SRS-ADM-001
AC-CAT-001
AC-ADM-001
Per categorie een beheerhistorie kunnen tonen
UC-BEH-CAT-007-REQ-002SRS-ADM-001
SRS-NFR-AUD-001
AC-ADM-001
AC-NFR-AUD-001
Per historyregel actie, oude waarde, nieuwe waarde, reden, actor en tijdstip tonen wanneer aanwezig
UC-BEH-CAT-007-REQ-003SRS-CAT-004
SRS-ADM-006
SRS-ADM-001
AC-CAT-004
AC-ADM-006
AC-ADM-001
Migratiegerelateerde acties zichtbaar maken op bron- en doelcategorie
UC-BEH-CAT-007-REQ-004SRS-ADM-001
SRS-NFR-AUD-001
AC-ADM-001
AC-NFR-AUD-001
CategoryHistory niet wijzigen bij raadplegen
UC-BEH-CAT-007-REQ-005SRS-ADM-003
SRS-ADM-001
SRS-NFR-SEC-001
SRS-NFR-PRV-001
AC-ADM-003
AC-ADM-001
AC-NFR-SEC-001
AC-NFR-PRV-001
Geanonimiseerde of inactieve actoren veilig weergeven
UC-BEH-CAT-007-REQ-006SRS-ADM-001
SRS-NFR-SEC-001
AC-ADM-001
AC-NFR-SEC-001
Opgeslagen tekstwaarden veilig encoden bij weergave
UC-BEH-CAT-007-REQ-007SRS-ADM-001
SRS-NFR-AUD-001
AC-ADM-001
AC-NFR-AUD-001
Een lege historyset duidelijk en zonder fout tonen
UC-BEH-CAT-007-REQ-008SRS-RDM-001
SRS-RDM-008
SRS-ADM-001
SRS-NFR-AUD-001
SRS-NFR-PER-001
AC-RDM-001
AC-RDM-008
AC-ADM-001
AC-NFR-AUD-001
AC-NFR-PER-001
Historysortering en paginering als readmodelgedrag behandelen