Skip to main content

UC-BEH-CAT-006 — Categorie migreren

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-CAT-006
NaamCategorie migreren
DomeinBeheerder / Categorieën beheren
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, database, autorisatiecomponent, categoriebeheercomponent, historiecomponent, systeemberichtencomponent
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-007
Primaire entiteitenCategories, CategoryHistory, CategoryMigrations, TeacherLevelCategories, TeacherLevelCategoryExercises
Secundaire entiteiten / eventsUsers, SystemMessages, ExerciseRuns, SharedExercises, categoriebeheer-readmodels
Gerelateerde popupsPOP-BEH-CAT-MIGRATION-CONFIRM
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft de daadwerkelijke migratie van een broncategorie naar een bestaande doelcategorie. De migratie wordt gebruikt wanneer dubbele of semantisch overlappende centrale categorieën zijn ontstaan.

De actie verplaatst relevante actieve koppelingen naar de doelcategorie, voorkomt dubbele records, legt de migratie vast in CategoryMigrations en schrijft CategoryHistory op zowel bron- als doelcategorie. De broncategorie blijft historisch bestaan maar wordt na succesvolle migratie niet langer als normale nieuwe keuze aangeboden. Betrokken docenten aan de bronkant worden via centrale systeemberichtcommunicatie geïnformeerd, zonder dat de usecase berichtteksten of knopteksten dupliceert.

Bestaande historische ExerciseRuns en gedeelde-oefening-snapshots worden niet herschreven; zij blijven de context tonen zoals die gold op het moment van maken of delen.

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:

  • Transactioneel uitvoeren van een voorbereide categoriemigratie.
  • Verplaatsen of samenvoegen van TeacherLevelCategories naar de doelcategorie.
  • Verplaatsen of samenvoegen van TeacherLevelCategoryExercises zonder duplicaten.
  • Vastleggen van CategoryMigrations met bron, doel, actor, moment en reden.
  • Vastleggen van CategoryHistory op bron- en doelcategorie.
  • Broncategorie na migratie niet meer nieuw selecteerbaar maken.
  • Aanmaken van systeemberichten voor betrokken docenten op basis van de centrale systeemberichttemplate voor categoriemigratie.

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.
  • Nieuwe doelcategorie aanmaken tijdens uitvoering.
  • Historische runs, resultaten of PDF-contexten herschrijven.
  • Systeemberichtteksten, knopteksten of template-inhoud uitschrijven; deze blijven bronhoudend in templatebeheer systeemberichten.

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 bestaat een geldig migratievoorstel vanuit UC-BEH-CAT-005.
PRE-006Broncategorie en doelcategorie bestaan en zijn verschillend.
PRE-007Doelcategorie is actief.
PRE-008De beheerder heeft een verplichte reden ingevuld.

5. Post-condities

IDResultaat
POST-001Relevante actieve koppelingen gebruiken de doelcategorie of zijn conflictveilig samengevoegd.
POST-002Dubbelen in TeacherLevelCategories en TeacherLevelCategoryExercises zijn niet aangemaakt.
POST-003CategoryMigrations bevat de uitgevoerde migratie.
POST-004CategoryHistory bevat migratieregels voor bron en doel.
POST-005De broncategorie blijft historisch beschikbaar maar is niet langer nieuw kiesbaar.
POST-006Betrokken docenten aan de bronkant hebben een systeembericht ontvangen.
POST-007Historische ExerciseRuns blijven ongewijzigd.

6. Trigger

De usecase start wanneer de beheerder vanuit een geldig migratievoorstel kiest voor migratie uitvoeren en de bevestiging met reden afrondt.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderMigratievoorstelKiest Uitvoeren.De frontend toont een bevestigingspopup met verplichte reden.PopupKey POP-BEH-CAT-MIGRATION-CONFIRM.
2BeheerderPopupBevestigt met reden.De backend ontvangt uitvoeropdracht.Reason verplicht.
3BackendAutorisatiecomponentControleert beheerdercontext.Alleen beheerder mag migratie uitvoeren.Server-side autorisatie.
4BackendMigratieServiceHerberekent bron, doel, impact en conflicten.De voorbereiding wordt niet blind vertrouwd.Categories en koppelingen.
5BackendMigratieServiceStart transactie.Alle mutaties slagen samen of worden teruggedraaid.Transaction boundary.
6BackendMigratieServiceVerwerkt TeacherLevelCategories.Bestaande doelkoppelingen worden hergebruikt; ontbrekende doelkoppelingen worden aangemaakt of omgezet volgens migratieregels.TeacherLevelCategories.
7BackendMigratieServiceVerwerkt TeacherLevelCategoryExercises.Bestaande oefenkoppelingen onder doelcategorie worden niet gedupliceerd; bronkoppelingen worden historisch/inactief of verplaatst.TeacherLevelCategoryExercises.
8BackendMigratieServiceMarkeert broncategorie als niet nieuw selecteerbaar.Broncategorie blijft historisch bestaan.Categories.IsDeleted of equivalent statusgedrag.
9BackendMigratieServiceLegt migratie vast.CategoryMigrations wordt aangemaakt.SourceCategoryId, TargetCategoryId, MigratedByUserId, Reason.
10BackendHistorieServiceSchrijft historie op bron en doel.ActionType MIGRATE_SOURCE_TO_TARGET en MIGRATE_TARGET_FROM_SOURCE.CategoryHistory.
11BackendSysteemberichtencomponentBepaalt betrokken docenten en maakt systeemberichten aan.Alleen docenten met actieve bronimpact worden geïnformeerd.SystemMessages via centrale template.
12BackendTransactieCommit transactie.Alle wijzigingen zijn consistent opgeslagen.Database.
13FrontendDetailweergaveToont resultaat en vernieuwde impact.De beheerder ziet nieuwe toestand.Nieuw readmodel.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011Beheerder annuleert.Er wordt geen migratie uitgevoerd.POP-BEH-CAT-MIGRATION-CONFIRM.Geen.
ALT-0022Reden ontbreekt.De bevestiging wordt geweigerd.POP-BEH-CAT-MIGRATION-CONFIRM.Geen.
ALT-0034Bron of doel is gewijzigd sinds voorbereiding.De migratie wordt geweigerd of het voorstel moet opnieuw worden berekend.Niet van toepassing.Geen.
ALT-0044Doelcategorie is niet meer actief.De migratie wordt geblokkeerd.Niet van toepassing.Geen.
ALT-0056Doelkoppeling bestaat al op hetzelfde docentniveau.De bestaande doelkoppeling wordt hergebruikt en bronkoppeling wordt conflictveilig verwerkt.Niet van toepassing.Transactie volgens migratieregels.
ALT-0067Dezelfde oefening bestaat al actief onder de doelcategorie.Er wordt geen dubbele oefenkoppeling aangemaakt.Niet van toepassing.Bronkoppeling wordt historisch/inactief verwerkt.
ALT-00712Transactie faalt.Alle mutaties inclusief history en systeemberichten worden teruggedraaid en de beheerder krijgt foutafhandeling.Niet van toepassing.Rollback.

9. Business rules

IDBusiness rule
BR-001Een categoriemigratie vereist altijd een bestaande actieve doelcategorie.
BR-002Broncategorie en doelcategorie moeten verschillend zijn.
BR-003De backend herberekent impact vlak vóór uitvoering.
BR-004Migratie moet transactioneel zijn: koppelingen, CategoryMigrations en CategoryHistory blijven consistent.
BR-005Dubbele TeacherLevelCategories mogen niet blind worden aangemaakt.
BR-006Dubbele TeacherLevelCategoryExercises mogen niet blind worden aangemaakt.
BR-007Bestaande ExerciseRuns worden niet herschreven en behouden hun oorspronkelijke CategoryId-context.
BR-008Na succesvolle migratie is de broncategorie niet langer nieuw selecteerbaar voor docenten.
BR-009Migratie wordt in CategoryHistory zichtbaar op zowel bron- als doelcategorie.
BR-010Betrokken docenten worden geïnformeerd via centrale systeemberichtcommunicatie; berichtinhoud blijft bronhoudend in systeemberichttemplates.

10. Datavalidatie

IDValidatie
VAL-001SourceCategoryId en TargetCategoryId zijn verplicht en verschillend.
VAL-002TargetCategoryId moet op uitvoermoment actief zijn.
VAL-003Reason is verplicht en maximaal 1000 tekens voor CategoryMigrations.
VAL-004MigratedByUserId is de actuele beheerder uit server-side sessiecontext.
VAL-005Voor iedere te migreren koppeling moet worden vastgesteld of een doelkoppeling al bestaat.
VAL-006Voor iedere onderliggende oefenkoppeling moet worden vastgesteld of dezelfde oefening al actief onder de doelcategorie bestaat.
VAL-007De volledige migratie moet binnen één database-transactie worden uitgevoerd.
VAL-008Ontvangers van migratiecommunicatie worden server-side bepaald uit actieve bronkoppelingen en niet uit clientinvoer.

11. Datamutaties en events

IDMutatie / eventToelichting
MUT-001TeacherLevelCategories update/create/deactivateBronkoppelingen worden overgezet of conflictveilig samengevoegd met doelkoppelingen.
MUT-002TeacherLevelCategoryExercises update/create/deactivateOnderliggende oefenkoppelingen worden overgezet zonder actieve duplicaten.
MUT-003Categories updateBroncategorie wordt niet langer nieuw selecteerbaar gemaakt.
MUT-004CategoryMigrations CREATEMigratie wordt append-only vastgelegd met bron, doel, actor, tijdstip en reden.
MUT-005CategoryHistory CREATEBron- en doelcategorie krijgen elk leesbare migratiehistorie.
MUT-006SystemMessages CREATEBetrokken docenten aan de bronkant worden geïnformeerd via de centrale systeemberichttemplate voor categoriemigratie.

12. Geen datamutaties

IDGeen mutatieReden
NO-001ExerciseRunsHistorische runs behouden LevelId, CategoryId, ExerciseId en modulecontext.
NO-002SharedExercisesSnapshotteksten van gedeelde oefeningen worden niet herschreven.
NO-003ExercisesConcrete oefeningconfiguraties worden niet aangepast door categoriemigratie.
NO-004UsersRollen en relaties worden niet aangepast.
NO-005PrivateMessagesEr wordt geen privébericht aangemaakt door de migratie zelf.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

Deze usecase verwijst uitsluitend naar PopupKey. Popupteksten, knopteksten, inputlabels, acties en themakeuzes blijven bronhoudend in het popupregister en popup-themes.

PopupKeyGebruik
POP-BEH-CAT-MIGRATION-CONFIRMDefinitieve bevestiging van categoriemigratie met verplichte reden.

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

DocumentAfleiding
Functioneel OntwerpCategoriemigratie zet broncategorie om naar bestaande doelcategorie, houdt bron historisch herleidbaar en informeert betrokken docenten.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, databaseontwerp en historie en background jobs beschrijven de technische uitwerking. Uitvoering vereist transactionele verwerking van koppelingen, migratierecord, historyregels en systeemberichten.
Software Requirements SpecificationSRS moet duplicaatpreventie, rollbackgedrag, reason-validatie, docentcommunicatie en niet-herschrijven van historische runs eisen.
DatabaseGebruikt CategoryMigrations, CategoryHistory, Categories, TeacherLevelCategories, TeacherLevelCategoryExercises en SystemMessages.

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-006-REQ-001SRS-CAT-004
SRS-ADM-006
SRS-ADM-001
AC-CAT-004
AC-ADM-006
AC-ADM-001
Categoriemigratie alleen uitvoeren na bevestiging met verplichte reden
UC-BEH-CAT-006-REQ-002SRS-ADM-001
AC-ADM-001
Impact vlak vóór uitvoering opnieuw berekenen
UC-BEH-CAT-006-REQ-003SRS-ADM-001
AC-ADM-001
Migratie transactioneel uitvoeren
UC-BEH-CAT-006-REQ-004SRS-ADM-001
AC-ADM-001
Bestaande doelkoppelingen hergebruiken in plaats van dupliceren
UC-BEH-CAT-006-REQ-005SRS-CAT-001
SRS-ADM-001
AC-CAT-001
AC-ADM-001
Bestaande oefenkoppelingen onder de doelcategorie hergebruiken in plaats van dupliceren
UC-BEH-CAT-006-REQ-006SRS-ADM-001
SRS-NFR-AUD-001
AC-ADM-001
AC-NFR-AUD-001
CategoryMigrations vastleggen met bron, doel, beheerder, tijdstip en reden
UC-BEH-CAT-006-REQ-007SRS-CAT-001
SRS-ADM-001
SRS-NFR-AUD-001
AC-CAT-001
AC-ADM-001
AC-NFR-AUD-001
CategoryHistory vastleggen op bron- en doelcategorie
UC-BEH-CAT-006-REQ-008SRS-CAT-004
SRS-ADM-006
SRS-ADM-001
AC-CAT-004
AC-ADM-006
AC-ADM-001
De broncategorie na migratie niet langer nieuw selecteerbaar maken
UC-BEH-CAT-006-REQ-009SRS-CAT-004
SRS-LRN-009
SRS-ADM-006
SRS-ADM-001
AC-CAT-004
AC-LRN-009
AC-ADM-006
AC-ADM-001
Historische ExerciseRuns niet herschrijven door een categoriemigratie
UC-BEH-CAT-006-REQ-010SRS-MSG-001
SRS-TCH-001
SRS-ADM-001
AC-MSG-001
AC-TCH-001
AC-ADM-001
Betrokken docenten aan de bronkant informeren via centrale systeemberichtcommunicatie
UC-BEH-CAT-006-REQ-011SRS-ADM-001
AC-ADM-001
Bij fout de volledige migratie terugdraaien