Skip to main content

UC-DOC-SAM-005 — Eigenaarschap overdragen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-SAM-005
NaamEigenaarschap overdragen
DomeinDocent
SubdomeinSamenwerking, collaborators en eigenaarschap
Primaire actorDocent
Secundaire actor(en)Systeem, ontvangende docent-collaborator
RolcontextDocentcontext als actuele eigenaar van het geselecteerde niveau
Betrokken schermenDocent - Oefenaanbod, niveau-detail, Eigenaarschap overdragen
Gerelateerde usecasesUC-DOC-SAM-001, UC-DOC-SAM-002, UC-DOC-SAM-004, UC-DOC-SAM-006, UC-DOC-SAM-007, UC-DOC-AANB-002, UC-DOC-AANB-004
Primaire entiteitenLevels, LevelCollaborators, Users
Secundaire entiteiten / eventsLevelOwnershipHistory, LevelCollaboratorHistory, SystemMessages, auditcontext, reden van overdracht
Gerelateerde popupsPOP-DOC-SAM-TRANSFER-OWNERSHIP-CONFIRM, POP-DOC-SAM-TRANSFER-OWNERSHIP-SUCCESS, POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKED
PopupregisterCentrale popupregisterregel(en) op PopupKey-niveau.
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe de actuele eigenaar van een niveau het eigenaarschap overdraagt aan een andere docent die al actieve collaborator van dat niveau is.

Eigenaarschap is een zwaardere bevoegdheid dan collaboratorrechten. De eigenaar beheert de niveaukern, collaborators en overdracht van eigenaarschap.

De overdracht is bewust beperkt tot bestaande actieve collaborators. Daardoor ontstaat geen impliciete docent-docentrelatie, geen nieuwe collaboratorroute en geen toegang voor willekeurige docenten buiten de samenwerkingscontext.

Na overdracht wordt de nieuwe eigenaar direct leidend voor niveaubeheer. De oude eigenaar blijft standaard als actieve collaborator aan het niveau gekoppeld, tenzij daarna een afzonderlijke ontkoppeling plaatsvindt.

3. Scope

Binnen scope

  • Openen van de overdrachtspagina voor een geselecteerd niveau.
  • Tonen van de actuele eigenaar en beschikbare actieve collaborators als kandidaten.
  • Kiezen van precies één nieuwe eigenaar uit de actieve collaboratorlijst.
  • Vastleggen van een verplichte reden van overdracht.
  • Server-side valideren dat actor actuele eigenaar is en kandidaat actieve collaborator is.
  • Wijzigen van Levels.OwnerUserId naar de gekozen nieuwe eigenaar.
  • Borgen dat de oude eigenaar als collaborator actief blijft of wordt gemaakt.
  • Auditbaar vastleggen van de overdracht en informeren van betrokken docenten.

Buiten scope

  • Een docent-docentrelatie aanmaken.
  • Een willekeurige docent buiten de actieve collaboratorlijst als eigenaar kiezen.
  • Collaborators toevoegen of verwijderen als onderdeel van deze flow.
  • Leerlingautorisaties wijzigen.
  • Oefeningen, categorieën of niveau-inhoud inhoudelijk wijzigen.
  • Beheerder-forceeracties vanuit docentondersteuning.
  • Automatisch overdragen bij accountverwijdering; dat hoort bij account-lifecycle.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd.
PRE-002De gebruiker heeft een actieve docentrol.
PRE-003Er is een geselecteerd niveau.
PRE-004De gebruiker is de actuele eigenaar van het geselecteerde niveau.
PRE-005Het niveau bestaat en is niet logisch verwijderd.
PRE-006Er is ten minste één actieve collaborator beschikbaar als kandidaat voor overdracht.
PRE-007De overdrachtsactie is beschikbaar binnen de docentcontext.

5. Post-condities

IDResultaat
POST-001Het niveau heeft een nieuwe actuele eigenaar.
POST-002De oude eigenaar is als actieve collaborator aan hetzelfde niveau gekoppeld of gebleven.
POST-003De overdracht is auditbaar vastgelegd met actor, oude eigenaar, nieuwe eigenaar, tijdstip en reden.
POST-004Betrokken docenten kunnen via systeemcommunicatie of samenwerkingscontext geïnformeerd worden.
POST-005Leerlingautorisaties, relaties, oefeningen en bestaande geschiedenis blijven inhoudelijk ongewijzigd.

6. Trigger

De actuele eigenaar kiest vanuit de niveaucontext de actie Eigenaarschap overdragen.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1DocentNiveau-detailOpent Eigenaarschap overdragenSysteem laadt overdrachtscontextLevels.Id
2SysteemBackend autorisatieControleert actieve docentrol en eigenaarstatusAlleen actuele eigenaar mag verderUserRoles, Levels.OwnerUserId
3SysteemCollaborator-readmodelHaalt actieve collaborators opToont kandidatenlijstLevelCollaborators.IsActive = true
4DocentEigenaarschap overdragenSelecteert nieuwe eigenaarSysteem markeert kandidaatCollaboratorUserId
5DocentEigenaarschap overdragenVult reden van overdracht inSysteem valideert verplichte redenReason
6DocentEigenaarschap overdragenBevestigt overdrachtSysteem start server-side overdrachtCommand TransferLevelOwnership
7SysteemBackend autorisatieValideert opnieuw eigenaarstatus en kandidaatstatusVoorkomt verouderde UI-stateConcurrency
8SysteemDatabaseWijzigt eigenaar van niveauLevels.OwnerUserId wordt nieuwe eigenaarLevels
9SysteemDatabaseBorgt oude eigenaar als collaboratorOude eigenaar behoudt bewerktoegang als collaboratorLevelCollaborators
10SysteemAuditLegt overdracht vastHistoryregel en event ontstaanLevelOwnershipHistory, event
11SysteemCommunicatieMaakt informatieve systeemberichten voor betrokkenenBetrokken docenten worden geïnformeerdSystemMessages
12FrontendNiveau-detailToont bijgewerkte niveaucontextNieuwe eigenaar is zichtbaarReadmodel

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Gebruiker is geen actuele eigenaarSysteem blokkeert de overdracht en toont toegang geweigerd of niet-beschikbaarafhandeling.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0023Er zijn geen actieve collaboratorsSysteem toont dat overdracht niet mogelijk is totdat eerst een collaborator is toegevoegd.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0034Geselecteerde kandidaat is niet langer actieve collaboratorSysteem weigert overdracht bij server-side validatie.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0045Reden ontbreekt of is te kortSysteem blokkeert bevestigen en vraagt een geldige reden.Niet van toepassingGeen
ALT-0057Eigenaarstatus is gewijzigd tussen laden en bevestigenSysteem weigert de overdracht wegens verouderde context.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0068Databaseconflict of technische foutSysteem rolt de transactie terug en behoudt bestaande eigenaar.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-00711Systeembericht kan niet worden aangemaaktSysteem rondt de overdracht niet als volledig geslaagd af zolang verplichte communicatie niet consistent is verwerkt.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen blijvende deelmutatie

9. Business rules

IDRegel
BR-001Alleen de actuele eigenaar van een niveau mag eigenaarschap overdragen.
BR-002Een nieuwe eigenaar moet een actieve collaborator van hetzelfde niveau zijn.
BR-003Eigenaarschap mag niet rechtstreeks worden overgedragen aan een willekeurige docent buiten de collaboratorcontext.
BR-004Een reden van overdracht is verplicht.
BR-005Na overdracht blijft de oude eigenaar standaard actieve collaborator van het niveau.
BR-006Overdracht wijzigt geen leerlingautorisaties en geen docent-leerlingrelaties.
BR-007Overdracht wijzigt geen bestaande oefenruns, resultaten of geschiedenis.
BR-008De overdracht wordt auditbaar vastgelegd met oude eigenaar, nieuwe eigenaar, actor, tijdstip en reden.
BR-009Server-side validatie is leidend; de kandidatenlijst in de UI is geen autorisatiebewijs.
BR-010Een overdracht mag niet leiden tot een niveau zonder eigenaar.

10. Datavalidatie

Veld / objectValidatie
LevelIdMoet bestaan en in docentcontext toegankelijk zijn.
ActorUserIdMoet gelijk zijn aan actuele Levels.OwnerUserId op het moment van bevestigen.
NewOwnerUserIdMoet verwijzen naar een actieve collaborator van hetzelfde niveau.
ReasonVerplicht, niet leeg en binnen de tekstlimieten van de applicatie.
ConcurrencyEigenaarstatus en collaboratorstatus worden direct vóór mutatie opnieuw gecontroleerd.
OldOwnerCollaboratorNa overdracht moet de oude eigenaar als actieve collaborator kunnen blijven bestaan of worden aangemaakt als historisch herleidbaar record.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
8UpdateLevelsOwnerUserId wordt gewijzigd van oude eigenaar naar nieuwe eigenaar; UpdatedByUserId en UpdatedAtUtc worden bijgewerkt.
9Create/UpdateLevelCollaboratorsOude eigenaar wordt als actieve collaborator geborgd wanneer dat nog niet bestaat.
10CreateLevelOwnershipHistoryOverdracht wordt vastgelegd met oude eigenaar, nieuwe eigenaar, actor, tijdstip en reden.
10EventLevelOwnershipTransferredDomeinevent voor audit en vervolgverwerking.
11CreateSystemMessagesInformatieve systeemberichten aan oude en nieuwe eigenaar.

12. Geen datamutaties

EntiteitReden
UserRelationshipsDocent-docentrelaties worden niet aangemaakt of gewijzigd.
StudentLevelAuthorizationsLeerlingtoegang blijft gelijk.
ExercisesOefeningen worden niet gewijzigd.
ExerciseRunsResultaten en lopende runs worden niet aangepast.
Roles/UserRolesRollen worden niet gewijzigd.
LiveViewAuditEr start of eindigt geen live meekijksessie door eigendomsoverdracht.

13. State diagram

Eigenaarschap is geen los statusobject, maar de eigenaarreferentie van een niveau wijzigt wel van oude eigenaar naar nieuwe eigenaar. De oude eigenaar blijft daarna als collaborator actief.

14. Decision flow

De decision flow borgt dat eigenaarschap alleen overgaat naar een actieve collaborator van hetzelfde niveau en dat de verplichte reden aanwezig is.

15. Data lifecycle diagram

De actuele eigenaar wijzigt op het niveau. De oude eigenaar blijft via een actief collaboratorrecord betrokken bij hetzelfde niveau.

16. Sequence diagrammen

16.1 Eigenaarschap overdragen

17. Popupverwijzingen

PopupKeyMomentDoel
POP-DOC-SAM-TRANSFER-OWNERSHIP-CONFIRMVoor definitieve overdrachtLaat de eigenaar expliciet bevestigen dat het eigenaarschap wordt overgedragen.
POP-DOC-SAM-TRANSFER-OWNERSHIP-SUCCESSNa succesvolle overdrachtBevestigt dat de nieuwe eigenaar actief is.
POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDBij ongeldige actor, kandidaat, reden of concurrencyLegt uit dat overdracht niet uitgevoerd kan worden.

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

DoeldocumentAfleiding
Functioneel OntwerpBeschrijven dat eigenaarschap uitsluitend naar actieve collaborators kan worden overgedragen en dat de oude eigenaar collaborator blijft.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, autorisatie en logging en historie beschrijven de technische uitwerking. Transactie, concurrencycontrole, auditregistratie en systeemberichtverwerking voor eigendomsoverdracht uitwerken.
Software Requirements SpecificationRequirements opnemen voor verplichte reden, geldige kandidaat, eigenaarcontrole en behoud van leerlingtoegang.

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
REQ-UC-DOC-SAM-005-001SRS-CAT-001
SRS-TCH-007
AC-CAT-001
AC-TCH-007
Eigenaarschap van een niveau alleen door de actuele eigenaar laten overdragen
REQ-UC-DOC-SAM-005-002SRS-CAT-001
SRS-TCH-006
AC-CAT-001
AC-TCH-006
Eigenaarschap alleen kunnen overdragen aan een actieve collaborator van hetzelfde niveau
REQ-UC-DOC-SAM-005-003SRS-TCH-001
SRS-NFR-AUD-001
AC-TCH-001
AC-NFR-AUD-001
Een verplichte reden van overdracht vastleggen
REQ-UC-DOC-SAM-005-004SRS-CAT-001
SRS-TCH-002
AC-CAT-001
AC-TCH-002
Voorkomen dat een niveau zonder eigenaar ontstaat
REQ-UC-DOC-SAM-005-005SRS-TCH-006
AC-TCH-006
De oude eigenaar na overdracht als actieve collaborator behouden of borgen
REQ-UC-DOC-SAM-005-006SRS-TCH-001
SRS-NFR-AUD-001
AC-TCH-001
AC-NFR-AUD-001
De overdracht auditbaar vastleggen met oude eigenaar, nieuwe eigenaar, actor, tijdstip en reden
REQ-UC-DOC-SAM-005-007SRS-AUTH-001
SRS-LRN-009
SRS-TCH-001
AC-AUTH-001
AC-LRN-009
AC-TCH-001
Door eigendomsoverdracht geen leerlingautorisaties of resultaten wijzigen
REQ-UC-DOC-SAM-005-008SRS-AUTH-001
SRS-TCH-001
SRS-GUA-001
AC-AUTH-001
AC-TCH-001
AC-GUA-001
Verouderde UI-context bij overdracht server-side detecteren en blokkeren