UC-DOC-SAM-002 - Collaborator aan niveau koppelen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-SAM-002 |
| Naam | Collaborator aan niveau koppelen |
| 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, beschikbare docenten, koppelactie, bevestiging |
| Gerelateerde usecases | UC-DOC-SAM-001, UC-DOC-SAM-003, UC-DOC-SAM-004, UC-DOC-AANB-002, UC-GEN-REL-002, UC-GEN-MSG-001 |
| Primaire entiteiten | Levels, LevelCollaborators, Users, UserRelationships |
| Secundaire entiteiten / events | LevelCollaboratorHistory, SystemMessages, docent-docentrelatie, auditgegevens |
| Gerelateerde popups | POP-DOC-SAM-ADD-COLLABORATOR-CONFIRM, POP-DOC-SAM-ADD-COLLABORATOR-SUCCESS, POP-DOC-SAM-ADD-COLLABORATOR-BLOCKED |
| Popupregister | Centrale popupregisterregel(en) op PopupKey-niveau. |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe de actuele eigenaar van een niveau een andere docent als collaborator aan dat niveau koppelt. De beoogde collaborator moet al een actieve docent-docentrelatie met de eigenaar hebben. De relatievorming zelf hoort niet bij deze usecase. Na koppeling mag de collaborator meewerken aan categorieën, oefeningen en configuraties binnen dit specifieke niveau, maar krijgt geen toegang tot leerlingen, resultaten, geschiedenis of live meekijken. De koppeling is niveaugebonden en wordt auditbaar vastgelegd.
3. Scope
3.1 Binnen scope
- Selecteren van een beschikbare docent als collaborator.
- Controleren dat de actor actuele eigenaar is van het niveau.
- Controleren dat de kandidaat een actieve docentrol en actieve docent-docentrelatie heeft.
- Aanmaken of reactiveren van een niveaugebonden collaboratorrecord.
- Vastleggen van actor, tijdstip en reden of context van de koppeling.
- Informeren van de nieuwe collaborator via systeemcommunicatie wanneer dit centraal is ingericht.
3.2 Buiten scope
- Nieuwe docent-docentrelatie maken.
- Relatie-uitnodiging sturen of accepteren.
- Leerlingtoegang aan de collaborator geven.
- Eigenaarschap overdragen.
- Centrale beheerder-forceerroute voor collaborators.
- Module- of categoriebeheer buiten het gekozen niveau.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd als docent. |
| PRE-002 | De gebruiker is actuele eigenaar van het geselecteerde niveau. |
| PRE-003 | Het niveau bestaat en is actief bruikbaar. |
| PRE-004 | De kandidaat heeft een actieve docentrol. |
| PRE-005 | Er bestaat een actieve docent-docentrelatie tussen eigenaar en kandidaat. |
| PRE-006 | De kandidaat is nog geen actieve collaborator op dit niveau. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De kandidaat is actieve collaborator op het niveau. |
| POST-002 | De collaborator heeft inhoudelijke bewerkrechten binnen dit niveau volgens UC-DOC-SAM-004. |
| POST-003 | Er is auditinformatie vastgelegd. |
| POST-004 | De koppeling heeft geen leerlingtoegang, resultaattoegang of live-meekijkrecht aangemaakt. |
6. Trigger
De eigenaar kiest in de collaboratorweergave een beschikbare docent en activeert Koppel geselecteerd.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Collaborators op niveau | Selecteert een beschikbare docent | Markeert kandidaat | Users.Id |
| 2 | Docent | Collaborators op niveau | Klikt Koppel geselecteerd | Start koppelverwerking | Command AddLevelCollaborator |
| 3 | Systeem | Backend autorisatie | Controleert eigenaarstatus | Gaat alleen verder bij actuele eigenaar | Levels.OwnerUserId |
| 4 | Systeem | Relatiecontrole | Controleert actieve docent-docentrelatie | Bevestigt kandidaatcontext | UserRelationships |
| 5 | Systeem | Validatie | Controleert dat kandidaat niet al actieve collaborator is | Voorkomt dubbele koppeling | LevelCollaborators |
| 6 | Systeem | Database | Maakt of reactiveert collaboratorrecord | Collaborator is actief | LevelCollaborators.IsActive = true |
| 7 | Systeem | Audit | Registreert koppelactie | Historie is herleidbaar | LevelCollaboratorHistory |
| 8 | Systeem | Communicatie | Maakt informatief systeembericht voor de collaborator | Ontvanger wordt geïnformeerd | SystemMessages |
| 9 | Frontend | Collaborators op niveau | Ververst de lijst | Nieuwe collaborator staat bij actieve collaborators | Readmodel |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | Actor is geen actuele eigenaar | Systeem blokkeert koppelen. | POP-DOC-SAM-ADD-COLLABORATOR-BLOCKED | Geen |
| ALT-002 | 4 | Geen actieve docent-docentrelatie | Systeem toont kandidaat niet of blokkeert de actie. | POP-DOC-SAM-ADD-COLLABORATOR-BLOCKED | Geen |
| ALT-003 | 4 | Kandidaat heeft geen actieve docentrol | Systeem blokkeert koppelen. | POP-DOC-SAM-ADD-COLLABORATOR-BLOCKED | Geen |
| ALT-004 | 5 | Kandidaat is al actieve collaborator | Systeem voorkomt dubbele koppeling en ververst de lijst. | POP-DOC-SAM-ADD-COLLABORATOR-BLOCKED | Geen |
| ALT-005 | 6 | Er bestaat een inactief oud collaboratorrecord | Systeem reactiveert het bestaande record en schrijft een nieuwe auditregistratie. | POP-DOC-SAM-ADD-COLLABORATOR-CONFIRM | LevelCollaborators.IsActive = true |
| ALT-006 | 6 | Opslaan faalt transactioneel | Systeem rolt de verwerking terug en toont foutafhandeling. | POP-DOC-SAM-ADD-COLLABORATOR-BLOCKED | Geen blijvende mutatie |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen de actuele eigenaar van een niveau mag via de docentflow collaborators toevoegen. |
| BR-002 | Een collaborator kan alleen worden toegevoegd wanneer er een actieve docent-docentrelatie bestaat. |
| BR-003 | Een niveau mag meerdere actieve collaborators hebben. |
| BR-004 | De eigenaar zelf wordt niet als gewone collaborator toegevoegd. |
| BR-005 | Een collaborator krijgt geen toegang tot leerlingen, resultaten, geschiedenis of live meekijken. |
| BR-006 | Dubbele actieve collaboratorrecords voor dezelfde docent en hetzelfde niveau zijn niet toegestaan. |
| BR-007 | Koppelen moet auditbaar zijn. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| LevelId | Moet bestaan en eigenaar moet overeenkomen met de actor. |
| CandidateUserId | Moet verwijzen naar een gebruiker met actieve docentrol. |
| Docent-docentrelatie | Moet actief zijn tussen eigenaar en kandidaat. |
| Bestaande collaborator | Er mag geen actieve dubbele koppeling bestaan. |
| Transactie | Koppeling, audit en communicatie worden consistent verwerkt. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 6 | Create/Update | LevelCollaborators | Aanmaken of reactiveren van collaboratorrecord. |
| 7 | Create | LevelCollaboratorHistory | Vastleggen van koppelactie. |
| 8 | Create | SystemMessages | Informatief systeembericht aan de nieuwe collaborator. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| UserRelationships | De docent-docentrelatie wordt niet aangemaakt of aangepast. |
| StudentLevelAuthorizations | Er wordt geen leerlingtoegang aangemaakt. |
| ExerciseRuns | Er ontstaan geen oefenruns. |
| Roles/UserRoles | Rollen worden niet gewijzigd. |
| Levels.OwnerUserId | Eigenaarschap blijft ongewijzigd. |
13. State diagram
LevelCollaborators kent functioneel actief/inactief gedrag. Deze usecase brengt een kandidaat naar actieve collaboratorstatus voor één niveau.
14. Decision flow
De decision flow controleert eigenaarstatus, kandidaatgeldigheid en dubbele actieve collaboratorrecords voordat een koppeling wordt aangemaakt of gereactiveerd.
15. Data lifecycle diagram
Na succesvolle verwerking bestaat een actieve niveaugebonden collaboratorrelatie. De relatie kan via UC-DOC-SAM-003 worden gedeactiveerd.
16. Sequence diagrammen
16.1 Collaborator koppelen
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| POP-DOC-SAM-ADD-COLLABORATOR-CONFIRM | Voor definitief koppelen wanneer bevestiging nodig is | Voorkomt onbedoelde collaboratorrechten. |
| POP-DOC-SAM-ADD-COLLABORATOR-SUCCESS | Na succesvolle koppeling | Bevestigt dat de collaborator actief is. |
| POP-DOC-SAM-ADD-COLLABORATOR-BLOCKED | Bij ongeldig niveau, kandidaat of rechten | Legt uit dat koppelen niet is toegestaan. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Vastleggen dat alleen de eigenaar via docentflow collaborators kan toevoegen en dat collaboratorrechten beperkt zijn tot inhoud binnen het niveau. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, autorisatie en logging en historie beschrijven de technische uitwerking. Command AddLevelCollaborator, transactiegrenzen, uniqueness en audit uitwerken. |
| Software Requirements Specification | Requirements opnemen voor kandidaatvalidatie, relationele beperkingen en blokkade 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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-DOC-SAM-002-001 | SRS-CAT-001 SRS-TCH-006 AC-CAT-001 AC-TCH-006 | De eigenaar van een niveau toestaan een geldige docent als collaborator te koppelen |
REQ-UC-DOC-SAM-002-002 | SRS-AUTH-001 SRS-REL-001 SRS-TCH-001 AC-AUTH-001 AC-REL-001 AC-TCH-001 | Koppelen blokkeren zonder actieve docent-docentrelatie |
REQ-UC-DOC-SAM-002-003 | SRS-TCH-006 AC-TCH-006 | Dubbele actieve collaboratorrecords voorkomen |
REQ-UC-DOC-SAM-002-004 | SRS-CAT-006 SRS-TCH-006 AC-CAT-006 AC-TCH-006 | Collaboratorrechten beperken tot inhoudelijke niveaucontext |
REQ-UC-DOC-SAM-002-005 | SRS-TCH-006 SRS-NFR-AUD-001 AC-TCH-006 AC-NFR-AUD-001 | Elke collaborator-koppeling auditbaar vastleggen |