UC-DOC-SAM-003 - Collaborator van niveau ontkoppelen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-SAM-003 |
| Naam | Collaborator van niveau ontkoppelen |
| Domein | Docent |
| Subdomein | Samenwerking, collaborators en eigenaarschap |
| Primaire actor | Docent |
| Secundaire actor(en) | Systeem |
| Rolcontext | Docentcontext als actuele eigenaar van het geselecteerde niveau |
| Betrokken schermen | Docent - Collaborators op niveau, actieve collaborators, ontkoppelactie, bevestiging |
| Gerelateerde usecases | UC-DOC-SAM-001, UC-DOC-SAM-002, UC-DOC-SAM-004, UC-DOC-SAM-005, UC-DOC-OEF-005, UC-DOC-OEF-006 |
| Primaire entiteiten | Levels, LevelCollaborators, Users |
| Secundaire entiteiten / events | LevelCollaboratorHistory, SystemMessages, ExerciseHistory, open bewerkcontexten |
| Gerelateerde popups | POP-DOC-SAM-REMOVE-COLLABORATOR-CONFIRM, POP-DOC-SAM-REMOVE-COLLABORATOR-SUCCESS, POP-DOC-SAM-REMOVE-COLLABORATOR-BLOCKED |
| Popupregister | Centrale popupregisterregel(en) op PopupKey-niveau. |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe de actuele eigenaar van een niveau een actieve collaborator van dat niveau ontkoppelt. Ontkoppelen verwijdert het collaboratorrecord niet hard, maar beëindigt de actieve samenwerking voor het niveau. Bestaande audit- en wijzigingshistorie blijft behouden. Eerdere wijzigingen van de collaborator aan categorieën of oefeningen blijven historisch zichtbaar. Ontkoppelen heeft geen terugwerkende wijziging op oefenconfiguraties, leerlingruns, resultaten of geschiedenis.
3. Scope
3.1 Binnen scope
- Selecteren van een actieve collaborator.
- Bevestigen van ontkoppeling.
- Controleren dat de actor actuele eigenaar is.
- Blokkeren van ontkoppelen van de eigenaar zelf.
- Deactiveren van het niveaugebonden collaboratorrecord.
- Vastleggen van auditinformatie en voorgeschreven systeemcommunicatie.
- Beëindigen van actieve collaboratorrechten voor toekomstige contentmutaties.
3.2 Buiten scope
- Docent-docentrelatie beëindigen.
- Eerdere oefeningwijzigingen terugdraaien.
- Leerlingtoegang wijzigen.
- Eigenaarschap overdragen.
- Centrale beheerder-forceeracties.
- Niet-opgeslagen formulierstaat of browserstate op clientniveau beheren.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd als docent. |
| PRE-002 | De gebruiker is actuele eigenaar van het niveau. |
| PRE-003 | Het niveau bestaat. |
| PRE-004 | De te ontkoppelen gebruiker is actieve collaborator op dit niveau. |
| PRE-005 | De te ontkoppelen gebruiker is niet de actuele eigenaar. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Het collaboratorrecord is niet langer actief. |
| POST-002 | De ontkoppelde docent heeft geen contentbewerkrechten meer binnen dit niveau. |
| POST-003 | Bestaande historie blijft behouden. |
| POST-004 | Er is auditinformatie vastgelegd. |
| POST-005 | Er is geen leerling-, resultaat- of live-meekijktoegang gewijzigd, doordat de afgeleide contentrechten direct vervallen. |
6. Trigger
De eigenaar kiest bij een actieve collaborator de actie Ontkoppel.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Collaborators op niveau | Selecteert actieve collaborator | Toont ontkoppelactie | LevelCollaborators.Id |
| 2 | Docent | Popup/bevestiging | Bevestigt ontkoppelen | Start verwerking | POP-DOC-SAM-REMOVE-COLLABORATOR-CONFIRM |
| 3 | Systeem | Backend autorisatie | Controleert eigenaarstatus | Gaat alleen verder bij actuele eigenaar | Levels.OwnerUserId |
| 4 | Systeem | Validatie | Controleert dat doel actieve collaborator is | Voorkomt ongeldige deactivatie | LevelCollaborators.IsActive |
| 5 | Systeem | Validatie | Controleert dat doel niet de eigenaar is | Blokkeert verwijderen eigenaar | Levels.OwnerUserId |
| 6 | Systeem | Database | Zet collaboratorrecord op inactief | Samenwerking is beëindigd | LevelCollaborators.IsActive = false |
| 7 | Systeem | Audit | Registreert ontkoppeling | Historie is herleidbaar | LevelCollaboratorHistory |
| 8 | Systeem | Communicatie | Maakt informatief systeembericht | Ontkoppelde docent wordt geïnformeerd | SystemMessages |
| 9 | Frontend | Collaborators op niveau | Ververst lijst | Collaborator staat niet meer bij actief | Readmodel |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | Actor is geen eigenaar | Systeem blokkeert ontkoppelen. | POP-DOC-SAM-REMOVE-COLLABORATOR-BLOCKED | Geen |
| ALT-002 | 4 | Collaborator is al inactief | Systeem ververst lijst en voert geen nieuwe ontkoppeling uit. | POP-DOC-SAM-REMOVE-COLLABORATOR-BLOCKED | Geen |
| ALT-003 | 5 | Doel is actuele eigenaar | Systeem blokkeert ontkoppelen; gebruik eigendomsoverdracht indien nodig. | POP-DOC-SAM-REMOVE-COLLABORATOR-BLOCKED | Geen |
| ALT-004 | 6 | Ontkoppelde docent heeft browser nog open | Nieuwe mutaties worden server-side geblokkeerd zodra rechten opnieuw worden gecontroleerd. | Niet van toepassing | Geen extra domeinmutatie |
| ALT-005 | 6 | Opslaan faalt | Systeem rolt terug en laat collaborator actief. | POP-DOC-SAM-REMOVE-COLLABORATOR-BLOCKED | Geen blijvende mutatie |
| ALT-006 | 8 | Systeembericht kan niet worden aangemaakt | Kernmutatie blijft leidend wanneer communicatie niet transactioneel verplicht is; fout wordt technisch gelogd. | Niet van toepassing | Technische logging |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen de actuele eigenaar mag via de docentflow collaborators ontkoppelen. |
| BR-002 | De eigenaar zelf kan niet via collaboratorontkoppeling worden verwijderd. |
| BR-003 | Ontkoppelen is soft-deactivation van de niveaugebonden collaboratorstatus. |
| BR-004 | Eerdere contentwijzigingen van de collaborator blijven historisch herleidbaar. |
| BR-005 | Ontkoppeling wijzigt geen docent-docentrelatie. |
| BR-006 | Ontkoppeling wijzigt geen leerlingautorisaties. |
| BR-007 | Na ontkoppeling moeten nieuwe contentmutaties door de voormalige collaborator server-side worden geweigerd. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Actor | Moet actuele eigenaar zijn. |
| TargetCollaborator | Moet actief zijn en bij hetzelfde niveau horen. |
| OwnerCheck | Doel mag niet de eigenaar zijn. |
| Concurrency | Als het record al gewijzigd is, moet de actuele status opnieuw worden gelezen. |
| History | Ontkoppeling moet auditbaar worden vastgelegd. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 6 | Update | LevelCollaborators | IsActive = false, DeactivatedAtUtc en DeactivatedByUserId vullen. |
| 7 | Create | LevelCollaboratorHistory | Ontkoppelactie vastleggen. |
| 8 | Create | SystemMessages | Informatief systeembericht aan de ontkoppelde docent. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| UserRelationships | Docent-docentrelatie blijft bestaan. |
| Exercises | Oefeningen worden niet teruggedraaid of gewijzigd. |
| ExerciseHistory | Bestaande geschiedenis blijft behouden. |
| StudentLevelAuthorizations | Leerlingtoegang wijzigt niet. |
| Levels.OwnerUserId | Eigenaarschap blijft gelijk. |
13. State diagram
LevelCollaborators gaat van actief naar inactief. Historische records blijven bestaan voor audit en reconstructie.
14. Decision flow
De decision flow controleert eigenaarstatus, actieve collaboratorstatus en het verbod om de actuele eigenaar via deze flow te verwijderen.
15. Data lifecycle diagram
Na ontkoppeling blijft het collaboratorrecord historisch bestaan maar telt het niet meer mee voor actuele bewerkrechten.
16. Sequence diagrammen
16.1 Collaborator ontkoppelen
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| POP-DOC-SAM-REMOVE-COLLABORATOR-CONFIRM | Voor definitief ontkoppelen | Voorkomt onbedoelde beëindiging van samenwerking. |
| POP-DOC-SAM-REMOVE-COLLABORATOR-SUCCESS | Na succesvolle ontkoppeling | Bevestigt dat de collaborator niet langer actief is. |
| POP-DOC-SAM-REMOVE-COLLABORATOR-BLOCKED | Bij ongeldige actor, status of eigenaarconflict | Legt uit waarom ontkoppelen niet kan. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Vastleggen dat collaboratorontkoppeling niveaugebonden is en geen docent-docentrelatie beëindigt. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, autorisatie en logging en historie beschrijven de technische uitwerking. Soft-deactivation, concurrency en auditregels uitwerken. |
| Software Requirements Specification | Requirements opnemen voor blokkeren van eigenaarverwijdering, soft-deactivation en server-side rechtenverval. |
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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-DOC-SAM-003-001 | SRS-REL-003 SRS-REL-006 SRS-CAT-001 SRS-TCH-006 AC-REL-003 AC-REL-006 AC-CAT-001 AC-TCH-006 | De eigenaar toestaan een actieve collaborator van een niveau te ontkoppelen |
REQ-UC-DOC-SAM-003-002 | SRS-REL-003 SRS-REL-006 SRS-TCH-006 AC-REL-003 AC-REL-006 AC-TCH-006 | Voorkomen dat de actuele eigenaar via collaboratorontkoppeling wordt verwijderd |
REQ-UC-DOC-SAM-003-003 | SRS-REL-003 SRS-REL-006 SRS-TCH-001 AC-REL-003 AC-REL-006 AC-TCH-001 | Ontkoppelen als soft-deactivation verwerken |
REQ-UC-DOC-SAM-003-004 | SRS-AUTH-001 SRS-REL-003 SRS-REL-006 SRS-TCH-006 SRS-CNT-001 AC-AUTH-001 AC-REL-003 AC-REL-006 AC-TCH-006 AC-CNT-001 | Na ontkoppeling nieuwe contentmutaties door de voormalige collaborator blokkeren |
REQ-UC-DOC-SAM-003-005 | SRS-REL-003 SRS-REL-006 SRS-TCH-001 SRS-NFR-AUD-001 AC-REL-003 AC-REL-006 AC-TCH-001 AC-NFR-AUD-001 | Ontkoppeling auditbaar vastleggen |