Skip to main content

UC-BEH-CAT-005 — Categoriemigratie voorbereiden

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-CAT-005
NaamCategoriemigratie voorbereiden
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-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 de geopende broncategorie een migratie naar een bestaande doelcategorie voorbereidt. De broncategorie staat vast door de detailcontext; de beheerder kiest alleen nog een doelcategorie.

Voorbereiden betekent: doelcategorie selecteren, voorwaarden controleren, impact bepalen, conflicten zichtbaar maken en de beheerder laten beoordelen of uitvoering verantwoord is. Er worden nog geen koppelingen gewijzigd en er wordt nog geen CategoryMigrations-record aangemaakt.

De migratievoorbereiding is noodzakelijk omdat dubbele of overlappende categorieën gevolgen kunnen hebben voor meerdere docentniveaus, oefeningen en leerlingweergaven.

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:

  • Selecteren van een bestaande doelcategorie.
  • Blokkeren van migratie naar dezelfde categorie.
  • Beperken van doelkeuze tot actieve categorieën.
  • Bepalen van impact op actieve docentniveaukoppelingen en oefenkoppelingen.
  • Detecteren van conflicten wanneer doelkoppelingen of oefenkoppelingen al bestaan.
  • Tonen van een uitvoerbaar migratievoorstel zonder datamutatie.

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.
  • Migratie daadwerkelijk uitvoeren; dit hoort bij UC-BEH-CAT-006.
  • Nieuwe doelcategorie aanmaken tijdens migratie.
  • Conflicten handmatig per rij oplossen buiten de vastgelegde migratieregels.

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 beheerweergave van de broncategorie geopend.
PRE-006De broncategorie bestaat en is server-side gevalideerd.
PRE-007Er is minimaal één andere actieve categorie beschikbaar als mogelijke doelcategorie.

5. Post-condities

IDResultaat
POST-001De beheerder ziet een migratievoorstel met bron, doel, impact en conflicten.
POST-002Geen categorie, koppeling, oefening of historie is gewijzigd.
POST-003De migratie kan alleen worden uitgevoerd wanneer de voorbereiding geldig is.
POST-004De doelcategorie is niet gelijk aan de broncategorie.
POST-005De doelcategorie is een bestaande actieve centrale categorie.

6. Trigger

De usecase start wanneer de beheerder in de sectie Migreren naar een doelcategorie kiest of het migratievoorstel laat berekenen.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderSectie Migreren naarOpent de migratiesectie.De frontend toont de broncategorie read-only.Bron CategoryId uit detailcontext.
2BackendDoelcategoriequeryLaadt mogelijke doelcategorieën.Alleen actieve categorieën behalve de bron zijn selecteerbaar.Categories.IsDeleted = false.
3BeheerderDoelkeuzeKiest een bestaande doelcategorie.De frontend vraagt impactanalyse op.TargetCategoryId.
4BackendAutorisatiecomponentControleert beheerdercontext.Alleen beheerder mag migratie voorbereiden.Server-side autorisatie.
5BackendMigratieServiceValideert bron en doel.Bron en doel moeten bestaan en verschillend zijn.Categories.
6BackendMigratieServiceBerekent te verplaatsen niveau-categoriekoppelingen.Bepaalt bron TeacherLevelCategories en bestaande doelkoppelingen.TeacherLevelCategories.
7BackendMigratieServiceBerekent oefenkoppelconflicten.Bepaalt welke oefeningen onder doelcategorie al bestaan.TeacherLevelCategoryExercises.
8FrontendMigratievoorstelToont impact en conflicten.De beheerder ziet wat uitvoering zal doen.Read-only voorstel.
9FrontendUitvoeractieMaakt Uitvoeren alleen beschikbaar wanneer voorstel geldig is.De vervolgactie leidt naar UC-BEH-CAT-006.Voorbereide migratiecontext.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011Broncategorie is soft deleted of al gemigreerd.De backend bepaalt of voorbereiding is toegestaan; normaal wordt uitvoering geblokkeerd wanneer bron niet nieuw kiesbaar is maar nog wel historie heeft.Niet van toepassing.Geen.
ALT-0022Geen actieve doelcategorie beschikbaar.De migratiesectie toont dat migratie niet kan worden voorbereid.Niet van toepassing.Geen.
ALT-0033Beheerder kiest dezelfde categorie als doel.De keuze wordt geweigerd.Niet van toepassing.Geen.
ALT-0045Bron of doel bestaat niet meer.Het voorstel wordt niet opgesteld; de detailcontext moet herladen worden.Niet van toepassing.Geen.
ALT-0057Er zijn conflicten met bestaande doelkoppelingen.Het voorstel toont hoe dubbele records worden voorkomen; uitvoeren blijft alleen mogelijk als de vaste migratieregels alle conflicten kunnen afhandelen.Niet van toepassing.Geen.
ALT-0068Impactanalyse kan niet volledig worden berekend.Uitvoeren blijft geblokkeerd.Niet van toepassing.Geen.

9. Business rules

IDBusiness rule
BR-001De broncategorie is altijd de geopende categorie en kan niet via een verborgen veld worden gewijzigd.
BR-002Migreren naar dezelfde categorie is niet toegestaan.
BR-003De doelcategorie moet een bestaande actieve centrale categorie zijn.
BR-004Tijdens voorbereiding worden geen CategoryMigrations of CategoryHistory-records geschreven.
BR-005Het migratievoorstel moet dubbele TeacherLevelCategories en TeacherLevelCategoryExercises expliciet herkennen.
BR-006Historische ExerciseRuns tellen niet als te migreren records en worden niet in het mutatievoorstel opgenomen.
BR-007Een migratievoorstel is alleen uitvoerbaar wanneer de backend de impact volledig heeft kunnen berekenen.

10. Datavalidatie

IDValidatie
VAL-001SourceCategoryId is verplicht en komt uit de server-side detailcontext.
VAL-002TargetCategoryId is verplicht en moet verschillen van SourceCategoryId.
VAL-003TargetCategoryId moet verwijzen naar een actieve Categories-record.
VAL-004Bron- en doelcategorie moeten op het moment van voorbereiding opnieuw uit de database worden gelezen.
VAL-005Impactaantallen en conflictregels worden server-side berekend.
VAL-006De uitvoerbaarheid van het voorstel mag niet door de client worden bepaald.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001Geen functionele mutatieVoorbereiden berekent alleen een migratievoorstel.
MUT-002Geen domeineventZonder uitvoering ontstaat geen CategoryMigrations-, CategoryHistory- of systeemberichtrecord.

12. Geen datamutaties

IDGeen mutatieReden
NO-001CategoriesBron en doel blijven ongewijzigd.
NO-002TeacherLevelCategoriesGeen koppeling wordt verplaatst of gedeactiveerd.
NO-003TeacherLevelCategoryExercisesGeen oefenkoppeling wordt verplaatst of gedeactiveerd.
NO-004CategoryMigrationsVoorbereiden legt geen migratie vast.
NO-005CategoryHistoryVoorbereiden schrijft geen categoriehistorie.

13. State diagram

Niet van toepassing. Deze usecase berekent een uitvoerbaar migratievoorstel zonder persistente migratiestatus of CategoryMigrations-record aan te maken.

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 OntwerpMigreren naar werkt vanuit een vaste broncategorie en een bestaande actieve doelcategorie.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, databaseontwerp en historie en background jobs beschrijven de technische uitwerking. De voorbereiding gebruikt een server-side migratieservice voor impact- en conflictanalyse.
Software Requirements SpecificationSRS moet eisen dat voorbereiding geen mutatie uitvoert en dat conflictsituaties zichtbaar zijn.
DatabaseTeacherLevelCategories en TeacherLevelCategoryExercises vormen de impactbron; CategoryMigrations ontstaat pas bij uitvoering.

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-005-REQ-001SRS-CAT-004
SRS-ADM-006
SRS-ADM-001
AC-CAT-004
AC-ADM-006
AC-ADM-001
Migratievoorbereiding altijd vanuit de geopende broncategorie uitvoeren
UC-BEH-CAT-005-REQ-002SRS-AUTH-001
SRS-CAT-001
SRS-ADM-006
SRS-ADM-001
AC-AUTH-001
AC-CAT-001
AC-ADM-006
AC-ADM-001
Migreren naar dezelfde categorie blokkeren
UC-BEH-CAT-005-REQ-003SRS-CAT-001
SRS-ADM-001
AC-CAT-001
AC-ADM-001
Alleen actieve bestaande doelcategorieën selecteerbaar maken
UC-BEH-CAT-005-REQ-004SRS-CAT-002
SRS-TCH-002
SRS-ADM-001
AC-CAT-002
AC-TCH-002
AC-ADM-001
Impact op docentniveaukoppelingen berekenen
UC-BEH-CAT-005-REQ-005SRS-ADM-001
AC-ADM-001
Impact op onderliggende oefenkoppelingen berekenen
UC-BEH-CAT-005-REQ-006SRS-ADM-001
AC-ADM-001
Conflicten met bestaande doelkoppelingen zichtbaar maken
UC-BEH-CAT-005-REQ-007SRS-ADM-001
AC-ADM-001
Tijdens migratievoorbereiding geen data wijzigen
UC-BEH-CAT-005-REQ-008SRS-AUTH-001
SRS-ADM-001
AC-AUTH-001
AC-ADM-001
Uitvoering blokkeren wanneer de impactanalyse niet volledig of niet afhandelbaar is