UC-DOC-LLN-007 - Bulk niveau-autorisaties beheren
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-LLN-007 |
| Naam | Bulk niveau-autorisaties beheren |
| Domein | Docent |
| Subdomein | Leerlingen en niveau-autorisaties |
| Primaire actor | Docent |
| Secundaire actor(en) | Systeem, Leerling |
| Rolcontext | Actieve docentcontext met geldige docentrol, relevante docent-leerlingrelatie en toegestane niveaucontext |
| Betrokken schermen | Docent - Leerlingen, Docent - Autorisaties, Docent - Niveau-autorisaties beheren |
| Gerelateerde usecases | UC-DOC-LLN-001, UC-DOC-LLN-002, UC-DOC-LLN-003, UC-DOC-LLN-004, UC-DOC-LLN-008, UC-LLN-TOEG-001, UC-LLN-TOEG-002, UC-LLN-TOEG-003 |
| Primaire entiteiten | Users, UserRoles, Roles, UserRelationships, TeacherLevels, TeacherStudentLevelAccess |
| Secundaire entiteiten / events | SystemMessages, autorisatie-events, leerlingtoegangs-readmodel, audit/logging |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een docent meerdere leerlingen tegelijk aan een niveau koppelt of van een niveau ontkoppelt via een bulkweergave met beschikbare leerlingen links en reeds gekoppelde leerlingen rechts. De flow bundelt meerdere autorisatiewijzigingen in één beheerhandeling, maar behoudt per leerling afzonderlijke validatie, mutatie en communicatie-afleiding.
De usecase blijft bewust binnen het docentdomein. Relatievorming, profielbeheer, accounttoegang, leerlingfrontpagegedrag en generieke berichtafhandeling worden niet opnieuw als bronwaarheid beschreven. Deze flow gebruikt die domeinen alleen als randvoorwaarde of vervolgcontext.
Alle beslissingen die zichtbaarheid of wijzigbaarheid bepalen, worden server-side opnieuw gecontroleerd. Een selectie in de frontend, een oude route of een eerder geladen readmodel mag nooit zelfstandig bepalen dat een docent een leerling of niveau mag wijzigen.
3. Scope
3.1 Binnen scope
- Openen van het bulk-autorisatiescherm voor één geselecteerd niveau.
- Tonen van beschikbare leerlingen en gekoppelde leerlingen in gescheiden lijsten.
- Zoeken, filteren en selecteren binnen grotere aantallen leerlingen.
- Koppelen van meerdere geselecteerde leerlingen aan het niveau.
- Ontkoppelen van meerdere geselecteerde leerlingen van het niveau.
- Per leerling valideren of de wijziging toegestaan is.
- Per leerling vastleggen van autorisatiewijziging en communicatiebehoefte.
3.2 Buiten scope
- Aanmaken van nieuwe docent-leerlingrelaties.
- Wijzigen van niveau-inhoud of oefeningconfiguratie.
- Tonen van uitgebreide leerlingdetails of geschiedenis.
- Verzenden van privéberichten.
- Beheerderondersteuning of forceeracties.
3.3 DRY-afbakening
- De docent-leerlingrelatie zelf blijft bronhoudend in het generieke relatiedomein.
- De leerlingzijde van zichtbaarheid en starten van oefeningen blijft bronhoudend in het leerlingdomein.
- Systeemberichten worden functioneel gebruikt als communicatiekanaal, maar de mailbox- en leesstatusregels blijven bronhoudend in het generieke berichtendomein.
- Collaboratorrechten geven geen automatische toegang tot leerlingen, resultaten, geschiedenis of live meekijken.
- Niveau-autorisaties zijn gescheiden van rollen, relaties en profielinstellingen.
- Historische resultaten worden niet herschreven door autorisatiewijzigingen.
- Samenvattingen, lijsten en aantallen zijn afgeleide readmodelwaarden en vormen geen tweede bron van waarheid.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd. |
| PRE-002 | De gebruiker heeft een actieve docentrol. |
| PRE-003 | De OefenHub-sessiecontext is server-side opgebouwd. |
| PRE-004 | De docentcontext en relevante niveaucontext zijn beschikbaar. |
| PRE-005 | De betrokken leerling valt binnen een actieve docent-leerlingrelatie wanneer een leerlingmutatie wordt uitgevoerd. |
| PRE-006 | De backend kan actuele autorisatiegegevens ophalen voordat een wijziging wordt verwerkt. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De autorisatie- of communicatiehandeling is uitgevoerd of veilig geblokkeerd. |
| POST-002 | De docent heeft geen gegevens buiten de eigen docentcontext gewijzigd of gezien. |
| POST-003 | Alle uitgevoerde mutaties zijn herleidbaar vastgelegd waar dat voor deze flow geldt. |
| POST-004 | Afgeleide leerlingtoegang kan na de mutatie opnieuw correct worden bepaald. |
| POST-005 | Vervolgcommunicatie of vervolgtoegang wordt in de daarvoor bedoelde usecases afgehandeld. |
6. Trigger
De docent opent het bulk-autorisatiescherm voor een geselecteerd niveau en voert één of meer koppel- of ontkoppelacties uit.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Niveaucontext | Opent bulk-autorisaties voor niveau | Frontend laadt bulkweergave | TeacherLevelId |
| 2 | Systeem | Routeguard | Controleert docentrol en niveaucontext | Blokkeert zonder rechten | UserRoles, TeacherLevels |
| 3 | Systeem | Relatieservice | Haalt koppelbare leerlingen op | Vult beschikbare lijst | Actieve docent-leerlingrelaties |
| 4 | Systeem | Autorisatieservice | Haalt huidige autorisaties op | Vult gekoppelde lijst | TeacherStudentLevelAccess.IsActive = true |
| 5 | Frontend | Bulkweergave | Toont twee lijsten en zoekmogelijkheden | Docent kan leerlingen selecteren | Ongeveer 10 namen compact zichtbaar |
| 6 | Docent | Bulkweergave | Selecteert leerlingen links of rechts | Koppel/ontkoppelactie wordt actief | Selectiecontext |
| 7 | Docent | Bulkweergave | Klikt Koppel geselecteerd of Ontkoppel geselecteerd | Frontend stuurt bulkverzoek | Actietype + geselecteerde leerlingen |
| 8 | Systeem | Bulkservice | Valideert per leerling | Splitst geldige en ongeldige regels | Per-student server-side validatie |
| 9 | Systeem | Database | Voert geldige autorisatiewijzigingen uit | Slaat mutaties per leerling op | TeacherStudentLevelAccess |
| 10 | Systeem | Audit/eventlaag | Registreert wijzigingen per leerling | Legt bulkactie en individuele effecten vast | StudentLevelAccessBulkChanged |
| 11 | Systeem | Communicatievoorbereiding | Registreert communicatie per getroffen leerling | Verwijst naar UC-DOC-LLN-008 | Geen SystemMessage in deze usecase |
| 12 | Frontend | Bulkweergave | Ververst beide lijsten | Toont resultaat van de actie | Gedeeltelijke successen herkenbaar |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Docent mag niveau niet beheren | Systeem blokkeert de bulkweergave. | Niet van toepassing | Geen |
| ALT-002 | 3 | Geen koppelbare leerlingen beschikbaar | Systeem toont lege beschikbare lijst. | Niet van toepassing | Geen |
| ALT-003 | 4 | Geen leerlingen zijn gekoppeld | Systeem toont lege gekoppelde lijst. | Niet van toepassing | Geen |
| ALT-004 | 8 | Een of meer geselecteerde leerlingen zijn inmiddels niet meer koppelbaar | Systeem slaat geldige regels op en rapporteert geweigerde regels. | Niet van toepassing | Gedeeltelijk |
| ALT-005 | 8 | Selectie bevat dubbele of reeds verwerkte leerlingen | Systeem dedupliceert of behandelt idempotent. | Niet van toepassing | Geen dubbele mutatie |
| ALT-006 | 9 | Transactie faalt volledig | Systeem rolt alle wijzigingen terug en toont actuele toestand na herladen. | Niet van toepassing | Rollback |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Bulkbeheer werkt altijd binnen precies één geselecteerd niveau. |
| BR-002 | Alle geselecteerde leerlingen moeten per leerling binnen de actieve docent-leerlingcontext vallen. |
| BR-003 | Een bulkactie mag geen docent-leerlingrelaties aanmaken. |
| BR-004 | Koppelen en ontkoppelen blijven per leerling herleidbare autorisatiewijzigingen. |
| BR-005 | Een gedeeltelijk geldig bulkverzoek mag alleen geldige regels verwerken wanneer dat functioneel en technisch veilig rapporteerbaar is. |
| BR-006 | Beschikbare en gekoppelde lijsten zijn readmodelweergaven en geen aparte opslagbron. |
| BR-007 | Zoeken en paginering in bulkbeheer veroorzaken geen datamutaties. |
| BR-008 | Elke getroffen leerling moet via de communicatieflow geïnformeerd kunnen worden. |
| BR-009 | Autorisatiebeheer is altijd docentcontextgebonden en mag geen informatie uit andere docentcontexten lekken. |
| BR-010 | Alle autorisatiekritieke beslissingen worden server-side genomen. |
| BR-011 | Een wijziging in niveau-autorisatie is geen wijziging van leerlingrol, accountstatus of relatie. |
| BR-012 | De actuele toestand na een mutatie is leidend boven eerder geladen clientstate. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Docentrol | Moet actief zijn op het moment van de handeling. |
| Docentcontext | Wordt server-side bepaald uit sessie, rollen, relaties en niveaucontext. |
| StudentUserId | Moet binnen de actieve docent-leerlingcontext vallen wanneer een leerling wordt gewijzigd. |
| TeacherLevelId | Moet bestaan, actief zijn en binnen de toegestane docentcontext vallen. |
| TeacherStudentLevelAccess | Mag niet leiden tot dubbele actieve autorisaties voor dezelfde context. |
| Bulkselectie | Mag alleen geldige, dedupliceerde leerlingen bevatten. |
| Communicatiecontext | Mag geen gegevens over andere docenten of andere autorisatiecontexten bevatten. |
| Routeparameters | Mogen geen wijziging afdwingen zonder server-side hercontrole. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 9 | Bulk update/create | TeacherStudentLevelAccess | Meerdere autorisaties worden aangemaakt, heractiveerd of ingetrokken. |
| 10 | Event | StudentLevelAccessBulkChanged | Bulkactie is uitgevoerd met individuele effecten. |
| 11 | Vervolgactie | AuthorizationChangeCommunicationRequested | Communicatie per getroffen leerling moet worden verwerkt via UC-DOC-LLN-008. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| UserRelationships | Bulkbeheer maakt geen nieuwe relaties. |
| TeacherLevels | Het geselecteerde niveau wordt niet inhoudelijk gewijzigd. |
| Exercises | Oefeninhoud wijzigt niet. |
| SystemMessages | Berichten worden niet in deze usecase zelf gedetailleerd opgebouwd. |
| PrivateMessages | Geen privécommunicatie. |
13. State diagram
Deze usecase raakt de lifecycle van een niveau-autorisatie of de communicatie daarover. De autorisatie kent functioneel de toestanden niet aanwezig, actief en ingetrokken.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Bulkmutatie uitvoeren
16.2 Volledige blokkade
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Gehele usecase | Deze flow gebruikt geen domeinspecifieke popupregister-popup. Routeguard-, validatie-, lege-staat- en niet-beschikbaarafhandeling verlopen via componentmelding of bestaande generieke foutafhandeling. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Legt vast hoe docenten niveau-autorisaties voor gekoppelde leerlingen beheren binnen de eigen docentcontext. |
| Technisch Ontwerp | Technisch Ontwerp: autorisatie en contextcontrole, technische rolflows, relatiebeheer en readmodels en tellers beschrijven de technische uitwerking. Vertaalt de server-side validaties, transacties, idempotentie en communicatiekoppeling naar services en databasebewerkingen. |
| Software Requirements Specification | Leidt requirements af voor contextcontrole, autorisatiemutaties, auditbaarheid, communicatie en afscherming van andere docentcontexten. |
| Database-informatie | Bepaalt aanscherpingen rond TeacherStudentLevelAccess, SystemMessages en afgeleide leerlingtoegang. |
| Ontwerpbronnen | Raakt business rules, autorisatiematrix, command-register, event-register en usecase-matrices voor muterende autorisatie- en communicatieflows. |
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-LLN-007-001 | SRS-AUTH-001 SRS-AUTH-004 SRS-CAT-001 SRS-TCH-008 SRS-ADM-001 AC-AUTH-001 AC-AUTH-004 AC-CAT-001 AC-TCH-008 AC-ADM-001 | Bulkbeheer van niveau-autorisaties ondersteunen voor één geselecteerd niveau |
REQ-UC-DOC-LLN-007-002 | SRS-LRN-009 SRS-TCH-001 AC-LRN-009 AC-TCH-001 | Beschikbare en gekoppelde leerlingen gescheiden tonen |
REQ-UC-DOC-LLN-007-003 | SRS-AUTH-001 SRS-TCH-008 AC-AUTH-001 AC-TCH-008 | Elke bulkregel server-side valideren binnen de docentcontext |
REQ-UC-DOC-LLN-007-004 | SRS-AUTH-001 SRS-TCH-008 AC-AUTH-001 AC-TCH-008 | Dubbele actieve autorisaties voorkomen bij bulkacties |
REQ-UC-DOC-LLN-007-005 | SRS-LRN-009 SRS-TCH-008 SRS-NFR-AUD-001 AC-LRN-009 AC-TCH-008 AC-NFR-AUD-001 | Bulkmutaties herleidbaar vastleggen met individuele effecten per leerling |
REQ-UC-DOC-LLN-007-006 | SRS-LRN-009 SRS-TCH-008 AC-LRN-009 AC-TCH-008 | Na bulkmutaties communicatie richting getroffen leerlingen kunnen initiëren |