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