UC-BEH-DOCSUP-010 — Collaborator aan niveau toevoegen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-DOCSUP-010 |
| Naam | Collaborator aan niveau toevoegen |
| Domein | Beheerder / Docentondersteuning |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, database, autorisatiecomponent, docentondersteuningcomponent, historiecomponent |
| Rolcontext | Actieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Content > Docent ondersteuning |
| Gerelateerde usecases | UC-BEH-DOCSUP-001, UC-BEH-DOCSUP-002, UC-BEH-DOCSUP-003, UC-BEH-DOCSUP-004, UC-BEH-DOCSUP-005, UC-BEH-DOCSUP-006, UC-BEH-DOCSUP-007, UC-BEH-DOCSUP-008, UC-BEH-DOCSUP-009, UC-BEH-DOCSUP-011, UC-BEH-DOCSUP-012, UC-BEH-DOCSUP-013, UC-BEH-DOCSUP-014 |
| Primaire entiteiten | Users, UserRoles, Roles, TeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises, ExerciseModules, ExerciseHistory, LevelCollaborators, LevelStudentAuthorizations, UserRelationships |
| Secundaire entiteiten / events | RelationshipEvents, SystemMessages, beheerlog, docentondersteuning-readmodels, autorisatiecomponent |
| Gerelateerde popups | POP-BEH-DOCSUP-ADD-COLLABORATOR-CONFIRM |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een beheerder vanuit docentondersteuning een docent als collaborator aan een niveau toevoegt.
De actie is supportgericht, vindt plaats binnen één geselecteerde docentcontext en vereist een bestaand niveau, een geldige kandidaatdocent en een geldige docent-docentcontext.
De wijziging wordt auditbaar vastgelegd. De actie wijzigt geen historische runs, resultaten of centrale categorie- en module-identiteit.
Uitgangspunten
- Docentondersteuning werkt altijd vanuit één gekozen docentcontext.
- De beheerder heeft supportgerichte inzage, maar mutaties blijven beperkt tot expliciete beheeracties met audit.
- Centrale categorie- en module-identiteit worden niet vanuit deze pagina beheerd.
- Server-side autorisatie is leidend; clientstate mag geen objecttoegang afdwingen.
- Historische runs, resultaten en PDF-contexten worden niet herschreven.
3. Scope
Deze usecase beschrijft:
- Uitvoeren van de beheeractie: Collaborator aan niveau toevoegen.
- Controleren van beheerderrol, docentcontext en objectcontext.
- Tonen van een bevestiging via PopupKey.
- Verwerken van de domeinmutatie wanneer alle validaties slagen.
- Auditbaar vastleggen van actor, tijdstip, reden en betrokken objecten.
Deze usecase beschrijft niet:
- Centraal categoriebeheer; dat blijft bronhoudend in Beheerder / Categorieën beheren.
- Centraal technisch modulebeheer; dat blijft bronhoudend in Beheerder / Modules beheren.
- Volledig account- en rolbeheer; dat blijft bronhoudend in Beheerder / Accountbeheer.
- Reguliere docentflows vervangen; docentondersteuning is supportgericht en niet de primaire docentinterface.
- Live meekijken tijdens actieve oefeningen; beheerders mogen geschiedenis analyseren, maar niet live meekijken.
- Popupteksten, knopteksten of inputlabels specificeren; usecases verwijzen uitsluitend naar PopupKey.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Docent / Oefenaanbod | Docenten beheren hun eigen niveaus, categorieën en oefeningen via de reguliere docentflows; docentondersteuning biedt beheerderinzage en gerichte correctie. |
| Beheerder / Categorieën beheren | Centrale categorie-identiteit, migratie en statuswijziging worden daar beheerd, niet in docentondersteuning. |
| Beheerder / Modules beheren | Technische modulemetadata en modulemigraties worden daar beheerd; docentondersteuning kan alleen concrete oefeningcontext inspecteren. |
| Beheerder / Accountbeheer | Rollen, accountstatus en account lifecycle horen daar; docentondersteuning gebruikt bestaande account- en relatiecontext. |
| Generiek / Relaties | Relaties en uitnodigingen blijven bronhoudend in het relatiedomein; docentondersteuning kan alleen bestaande geldige context gebruiken of een expliciete beheeractie auditen. |
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd in OefenHub. |
| PRE-002 | De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft. |
| PRE-003 | De beheerder bevindt zich binnen de beheeromgeving via Content > Docent ondersteuning. |
| PRE-004 | De pagina gebruikt actuele serverdata; clientstate, routeparameters of verborgen formuliervelden bepalen geen autorisatie, docentcontext, niveaucontext of oefeningcontext. |
| PRE-005 | De ondersteuningsweergave voor één docent is geopend. |
| PRE-006 | Er is één relevant niveau of object binnen de docentcontext geselecteerd. |
| PRE-007 | De beheerder heeft de actie expliciet gekozen. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De actie Collaborator aan niveau toevoegen is verwerkt wanneer alle validaties slagen. |
| POST-002 | De wijziging is auditbaar vastgelegd. |
| POST-003 | Historische resultaten en runs blijven ongewijzigd. |
| POST-004 | Afgeleide overzichten en aantallen kunnen opnieuw worden opgebouwd. |
| POST-005 | Onbevoegde of ongeldige contexten zijn veilig geblokkeerd. |
6. Trigger
De usecase start wanneer de beheerder de actie Collaborator aan niveau toevoegen kiest en bevestigt.
7. Normale processtroom
| Stap | Actor | Component / context | Handeling | Resultaat | Belangrijke gegevens |
|---|---|---|---|---|---|
| 1 | Beheerder | Docentondersteuning | Kiest de beheeractie. | De frontend opent de bevestiging. | Geselecteerde context. |
| 2 | Backend | Autorisatiecomponent | Controleert beheerdercontext. | Alleen beheerder mag de actie uitvoeren. | Server-side rolcontext. |
| 3 | Backend | DocentContextService | Valideert docent- en niveaucontext. | Objecten buiten context worden geweigerd. | TeacherLevels en contextrecords. |
| 4 | Backend | Domeinservice | Controleert object-specifieke voorwaarden. | Alle business rules worden opnieuw server-side toegepast. | Relaties, autorisaties, collaborators of eigenaar. |
| 5 | Beheerder | Popup | Bevestigt actie en vult reden in wanneer vereist. | De definitieve verwerking start. | POP-BEH-DOCSUP-ADD-COLLABORATOR-CONFIRM |
| 6 | Backend | Domeinservice | Voert de mutatie transactioneel uit. | De domeinstatus wordt aangepast. | LevelCollaborators |
| 7 | Backend | AuditService | Legt de actie vast. | De wijziging is herleidbaar. | Beheerlog / history. |
| 8 | Frontend | Docentondersteuning | Ververs de context. | De beheerder ziet de actuele situatie. | Readmodel opnieuw geladen. |
8. Alternatieve en exceptionele processtromen
| Stap | Situatie | Afhandeling | PopupKey | Datamutatie |
|---|---|---|---|---|
| 2 | Beheerdercontext is ongeldig. | De backend weigert de actie en toont een veilige blokkade. | POP-BEH-DOCSUP-NO-ACCESS | Geen. |
| 3 | De geselecteerde docent bestaat niet of is niet toegankelijk. | De ondersteuningsweergave wordt niet geopend of wordt veilig teruggezet naar het overzicht. | POP-BEH-DOCSUP-SAVE-ERROR | Geen. |
| 4 | Het gekozen object bestaat niet meer. | De pagina toont dat het object niet beschikbaar is en ververst de context. | Niet van toepassing | Geen. |
| 5 | De readmodeldata is tijdelijk incompleet. | De beschikbare gegevens worden getoond met veilige ontbrekend-status; ontbrekend wordt niet als nul geïnterpreteerd. | Niet van toepassing | Geen. |
| 6 | De beheerder gebruikt een oude route of clientstate. | De backend negeert de clientcontext en herleidt de actuele context opnieuw. | Niet van toepassing | Geen. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-UC-BEH-DOCSUP-010-001 | De actie is alleen toegestaan binnen een geldige server-side docentcontext. |
| BR-UC-BEH-DOCSUP-010-002 | Het niveau moet binnen de geselecteerde docentcontext vallen. |
| BR-UC-BEH-DOCSUP-010-003 | De kandidaat moet een actief docentaccount zijn. |
| BR-UC-BEH-DOCSUP-010-004 | Er moet een geldige docent-docentcontext bestaan tussen de eigenaar en de kandidaatdocent. |
| BR-UC-BEH-DOCSUP-010-005 | De kandidaat mag nog geen actieve collaborator op hetzelfde niveau zijn. |
| BR-UC-BEH-DOCSUP-010-006 | De beheerder moet de actie expliciet bevestigen en een reden opgeven. |
| BR-UC-BEH-DOCSUP-010-007 | Collaboratorrechten geven alleen toegang tot onderwijsinhoud binnen dit niveau. |
| BR-UC-BEH-DOCSUP-010-008 | Collaboratorrechten geven geen leerling-, resultaat-, geschiedenis- of live-meekijktoegang. |
| BR-UC-BEH-DOCSUP-010-009 | De wijziging moet auditbaar zijn. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-UC-BEH-DOCSUP-010-001 | De beheerderrol wordt vlak vóór mutatie gecontroleerd. |
| VAL-UC-BEH-DOCSUP-010-002 | LevelId is verplicht en moet binnen de geselecteerde docentcontext vallen. |
| VAL-UC-BEH-DOCSUP-010-003 | CandidateTeacherUserId is verplicht en moet een actief docentaccount zijn. |
| VAL-UC-BEH-DOCSUP-010-004 | CandidateTeacherUserId mag niet gelijk zijn aan de huidige eigenaar wanneer dat tot een dubbele collaboratorstatus leidt. |
| VAL-UC-BEH-DOCSUP-010-005 | Er moet een geldige docent-docentcontext bestaan. |
| VAL-UC-BEH-DOCSUP-010-006 | Er mag nog geen actieve collaborator-koppeling voor dezelfde docent en hetzelfde niveau bestaan. |
| VAL-UC-BEH-DOCSUP-010-007 | De reden is verplicht en mag niet leeg zijn. |
| VAL-UC-BEH-DOCSUP-010-008 | De mutatie moet transactioneel worden verwerkt. |
| VAL-UC-BEH-DOCSUP-010-009 | Gelijktijdige wijzigingen moeten vóór opslaan opnieuw worden gevalideerd. |
11. Datamutaties en events
| Object / event | Mutatie |
|---|---|
| LevelCollaborators | Aanmaken of heractiveren van collaborator-koppeling voor niveau en kandidaatdocent. |
| Beheerlog / history | Vastleggen van beheerder, tijdstip, betrokken objecten en reden. |
| SystemMessages | Informatief bericht aan de betrokken docent(en) wanneer zij een actief intern account hebben; het bericht is geen rechtenbron. |
12. Geen datamutaties
| Object | Waarom geen mutatie |
|---|---|
| UserRelationships | De docent-docentrelatie wordt niet aangemaakt; er moet al een geldige docent-docentcontext bestaan of via UC-BEH-DOCSUP-012 expliciet zijn geforceerd. |
| TeacherLevels | Eigenaar, niveaugegevens en zichtbaarheid blijven ongewijzigd. |
| LevelStudentAuthorizations | Leerlingtoegang wordt niet gewijzigd. |
| ExerciseRuns | Historische runs, resultaten, gedeelde oefeningen en PDF-contexten blijven behouden. |
| User credentials | Wachtwoorden, tokens en identity-providergegevens blijven buiten scope. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik |
|---|---|
| POP-BEH-DOCSUP-ADD-COLLABORATOR-CONFIRM | Bevestiging voor de actie Collaborator aan niveau toevoegen. |
| POP-BEH-DOCSUP-SAVE-ERROR | Foutafhandeling wanneer de beheeractie niet kan worden opgeslagen. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Onderdeel | Afleiding |
|---|---|
| Functioneel Ontwerp | FO moet Collaborator aan niveau toevoegen beschrijven als expliciete supportactie binnen docentondersteuning. |
| Technisch Ontwerp | Technisch Ontwerp: technische rolflows, oefencatalogus, relatiebeheer en logging en historie beschrijven de technische uitwerking. TO vereist transactionele verwerking, server-side contextvalidatie en auditregistratie. |
| Software Requirements Specification | SRS moet voorwaarden, bevestiging, redenplicht en uitsluitingen voor Collaborator aan niveau toevoegen vastleggen. |
| Database | Wijzigt LevelCollaborators en auditrecords; historische runs blijven ongewijzigd. |
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-BEH-DOCSUP-010-001 | SRS-CAT-001 SRS-TCH-006 SRS-ADM-008 SRS-ADM-001 AC-CAT-001 AC-TCH-006 AC-ADM-008 AC-ADM-001 | Een beheerder de actie Collaborator aan niveau toevoegen kunnen laten uitvoeren binnen docentondersteuning |
REQ-UC-BEH-DOCSUP-010-002 | SRS-AUTH-001 SRS-TCH-001 SRS-ADM-001 AC-AUTH-001 AC-TCH-001 AC-ADM-001 | De docentcontext server-side valideren |
REQ-UC-BEH-DOCSUP-010-003 | SRS-AUTH-001 SRS-ADM-002 SRS-ADM-001 AC-AUTH-001 AC-ADM-002 AC-ADM-001 | Object-specifieke voorwaarden opnieuw server-side controleren |
REQ-UC-BEH-DOCSUP-010-004 | SRS-ADM-001 SRS-POP-001 AC-ADM-001 AC-POP-001 | Een bevestiging via PopupKey gebruiken |
REQ-UC-BEH-DOCSUP-010-005 | SRS-ADM-001 SRS-NFR-AUD-001 AC-ADM-001 AC-NFR-AUD-001 | De wijziging auditbaar vastleggen |
REQ-UC-BEH-DOCSUP-010-006 | SRS-CAT-001 SRS-TCH-006 SRS-ADM-001 AC-CAT-001 AC-TCH-006 AC-ADM-001 | Collaboratorrechten beperken tot onderwijsinhoud binnen het niveau |
REQ-UC-BEH-DOCSUP-010-007 | SRS-LRN-009 SRS-ADM-001 SRS-CNT-001 AC-LRN-009 AC-ADM-001 AC-CNT-001 | Historische runs, resultaten en centrale contentidentiteit niet herschrijven |
REQ-UC-BEH-DOCSUP-010-008 | SRS-ADM-001 SRS-NFR-SEC-001 AC-ADM-001 AC-NFR-SEC-001 | Conflicterende gelijktijdige wijzigingen veilig afhandelen |