UC-DOC-AANB-003 — Nieuw niveau aanmaken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-AANB-003 |
| Naam | Nieuw niveau aanmaken |
| Domein | Docent |
| Subdomein | Oefenaanbod, niveaus en categorieën |
| Primaire actor | Docent |
| Secundaire actor(en) | Systeem |
| Rolcontext | Ingelogde gebruiker met actieve rol Docent |
| Betrokken schermen | Oefenaanbod, formulier nieuw niveau, niveaucontextselector |
| Gerelateerde usecases | UC-DOC-AANB-001 — Oefenaanbod openen; UC-DOC-AANB-002 — Niveau selecteren; UC-DOC-AANB-006 — Bestaande categorie aan niveau koppelen; UC-DOC-SAM-001 — Collaborators van niveau bekijken |
| Primaire entiteiten | Levels |
| Secundaire entiteiten / events | LevelHistory, UserSettings, SystemMessages niet van toepassing |
| Gerelateerde popups | Niet van toepassing; inline validatie |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een docent een nieuw niveau aanmaakt vanuit Oefenaanbod.
Een niveau is de onderwijscontext waaronder categorieën, oefeningen, leerlingtoegang en samenwerking worden opgebouwd.
Bij aanmaken legt de docent minimaal een naam, beschrijving en zichtbaarheid vast.
De actuele eigenaar van het nieuwe niveau wordt automatisch de ingelogde docent.
De standaardzichtbaarheid is Open, tenzij de docent bewust Privé kiest.
Het aanmaken van een niveau maakt nog geen categorieën, oefeningen, leerlingautorisaties of collaborators aan. Die onderdelen worden via vervolgusecases beheerd.
3. Scope
Binnen scope:
- starten van de actie nieuw niveau aanmaken;
- invoeren en valideren van minimale niveaugegevens;
- aanmaken van een nieuw
Levels-record; - automatisch zetten van de actuele eigenaar;
- vastleggen van zichtbaarheid
OpenofPrivé; - registreren van aanmaakmetadata;
- tonen van het nieuwe niveau als actuele context na aanmaken.
Buiten scope:
- categorieën direct koppelen;
- oefeningen aanmaken;
- leerlingen autoriseren;
- collaborators toevoegen;
- eigenaarschap overdragen;
- beheerdergeforceerde aanmaak;
- centrale categorie-identiteit beheren;
- frontpagecontent beheren.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd met actieve docentrol. |
| PRE-002 | De docent heeft toegang tot Oefenaanbod. |
| PRE-003 | De actie Nieuw niveau aanmaken is beschikbaar voor de docent. |
| PRE-004 | De docent heeft geen beheerderrechten nodig voor deze lichte beheeractie. |
| PRE-005 | De invoer wordt server-side gevalideerd. |
| PRE-006 | De identiteit van de uitvoerende docent is bekend via de sessiecontext. |
| PRE-007 | Er bestaat geen impliciete verplichting om meteen categorieën of leerlingen te koppelen. |
| PRE-008 | Het systeem kan aanmaakmetadata vastleggen. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Er is een nieuw niveau aangemaakt. |
| POST-002 | De ingelogde docent is actuele eigenaar van het niveau. |
| POST-003 | Het niveau heeft naam, beschrijving en zichtbaarheid. |
| POST-004 | Het niveau bevat nog geen categorieën tenzij vervolgflows worden gestart. |
| POST-005 | Het niveau heeft nog geen leerlingen met autorisatie. |
| POST-006 | Het niveau heeft nog geen collaborators behalve de eigenaarcontext. |
| POST-007 | Aanmaakmetadata is vastgelegd. |
| POST-008 | Het nieuwe niveau kan als actuele context in Oefenaanbod worden gebruikt. |
| POST-009 | Er zijn geen systeemberichten verstuurd. |
| POST-010 | Er zijn geen relatie- of autorisatierecords aangemaakt. |
6. Trigger
De usecase start wanneer de docent vanuit Oefenaanbod kiest voor Nieuw niveau aanmaken.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Oefenaanbod | Kiest Nieuw niveau aanmaken. | Systeem opent formulier of inline invoer. | Actieve docentrol vereist. |
| 2 | Docent | Formulier nieuw niveau | Voert naam in. | Systeem houdt de invoer lokaal in het formulier bij. | Naam verplicht. |
| 3 | Docent | Formulier nieuw niveau | Voert beschrijving in. | Systeem houdt de invoer lokaal in het formulier bij. | Beschrijving verplicht of volgens ontwerp verplicht gemaakt. |
| 4 | Docent | Formulier nieuw niveau | Kiest zichtbaarheid. | Systeem zet keuze Open of Privé; standaard Open. | Visibility. |
| 5 | Docent | Formulier nieuw niveau | Slaat op. | Systeem valideert input server-side. | Validatie naam, beschrijving, zichtbaarheid. |
| 6 | Systeem | Applicatieservice | Controleert docentcontext. | Verwerking gaat alleen door bij actieve docentrol. | UserRoles. |
| 7 | Systeem | Applicatieservice | Maakt niveau aan. | Vult eigenaar met huidige docent. | Levels.OwnerUserId. |
| 8 | Systeem | Applicatieservice | Legt metadata vast. | Vult CreatedByUserId, CreatedAtUtc en auditinformatie. | Auditvelden. |
| 9 | Systeem | Applicatieservice | Stelt nieuwe context in. | Nieuwe niveau kan als actuele context worden geladen. | UC-DOC-AANB-002. |
| 10 | Systeem | Oefenaanbod | Toont aangemaakt niveau. | Docent ziet leeg niveau met vervolgacties. | Geen categorieën of oefeningen. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 5 | Naam ontbreekt. | Opslaan wordt geblokkeerd. | Inline validatie. | Geen. |
| ALT-002 | 5 | Beschrijving ontbreekt indien verplicht. | Opslaan wordt geblokkeerd. | Inline validatie. | Geen. |
| ALT-003 | 5 | Zichtbaarheid heeft onbekende waarde. | Opslaan wordt geblokkeerd. | Inline validatie. | Geen. |
| ALT-004 | 6 | Docentrol is niet meer actief. | Opslaan wordt geweigerd. | Generieke toegangafhandeling. | Geen. |
| ALT-005 | 7 | Databasefout tijdens aanmaken. | Transactie wordt teruggedraaid. | Inline foutmelding. | Geen half niveau. |
| ALT-006 | 7 | Dubbele of sterk gelijkende naam bestaat al voor dezelfde docentcontext. | Systeem blokkeert dubbele naam binnen dezelfde docentcontext of toont een gerichte doublurewaarschuwing wanneer de naam functioneel nog toegestaan is. | Inline melding. | Geen, tenzij de docent na waarschuwing een toegestane unieke variant opslaat. |
| ALT-007 | 9 | Nieuwe context kan niet worden opgeslagen als voorkeur. | Niveau blijft aangemaakt en wordt in de actuele werkcontext getoond. | Inline melding. | Niveau blijft bestaan. |
| ALT-008 | 1 | Docent annuleert. | Formulier sluit; Oefenaanbod blijft ongewijzigd. | Niet van toepassing. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen een gebruiker met actieve docentrol mag een nieuw niveau aanmaken. |
| BR-002 | De eigenaar van een nieuw niveau is automatisch de ingelogde docent. |
| BR-003 | Een niveau heeft minimaal een naam en zichtbaarheid. |
| BR-004 | De standaardzichtbaarheid van een nieuw niveau is Open. |
| BR-005 | Een privé-niveau vereist expliciete leerlingautorisatie voor leerlingtoegang. |
| BR-006 | Het aanmaken van een niveau maakt geen categorieën aan. |
| BR-007 | Het aanmaken van een niveau koppelt geen leerlingen. |
| BR-008 | Het aanmaken van een niveau koppelt geen collaborators. |
| BR-009 | Het aanmaken van een niveau maakt geen oefeningen. |
| BR-010 | Het aanmaken van een niveau verstuurt geen systeemberichten. |
| BR-011 | Aanmaakmetadata moet worden vastgelegd. |
| BR-012 | Een docent mag het niveau na aanmaken direct als werkcontext gebruiken. |
| BR-013 | Duplicaatdetectie op niveau-naam mag ondersteunen, maar is geen vervanging voor server-side validatie. |
| BR-014 | Een nieuw niveau is onderwijsstructuur, geen leerlingprofielniveau. |
| BR-015 | Beheerderondersteuning verloopt via het aparte beheerdomein; deze usecase is docent-selfservice. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Naam | Verplicht, niet leeg, geen uitsluitend whitespace. |
| Beschrijving | Volgens ontwerp verplicht of minimaal veilig tekstveld; geen actieve HTML. |
| Zichtbaarheid | Alleen toegestane waarden, minimaal Open en Private. |
| OwnerUserId | Wordt server-side gezet op huidige docent, niet uit formulier. |
| CreatedByUserId | Wordt server-side gezet op huidige gebruiker. |
| CreatedAtUtc | Wordt server-side in UTC gezet. |
| Niveau-ID | Wordt door systeem gegenereerd. |
| Formulierinput | Wordt server-side gesanitized en gevalideerd. |
| Rolcontext | Actieve docentrol vereist op moment van opslaan. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 7 | Create | Levels | Nieuw niveau aangemaakt met naam, beschrijving, zichtbaarheid en OwnerUserId van de ingelogde docent. |
| 8 | Audit | Levels / LevelHistory | Aanmaakmetadata en eventuele historyregel worden vastgelegd. |
| 9 | Contextupdate | Docentniveaucontext / UserSettings | Het nieuw aangemaakte niveau wordt de actuele werkcontext voor de docent. |
| 9 | Event | TeacherLevelCreated | Domeinevent voor het aangemaakte niveau. |
| 10 | Read | Oefenaanbodreadmodel | Nieuw niveau wordt gelezen en getoond. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| LevelCategoryLinks | Categorieën worden in aparte vervolgflows gekoppeld. |
| Exercises | Oefeningen worden in aparte vervolgflows aangemaakt. |
| StudentLevelAuthorizations | Leerlingen worden in aparte vervolgflows geautoriseerd. |
| LevelCollaborators | Collaborators worden in aparte vervolgflows gekoppeld. |
| UserRelationships | Relaties worden niet aangemaakt. |
| SystemMessages | Er is geen ontvanger voor een melding door alleen niveau-aanmaak. |
| ExerciseRuns | Er wordt geen oefening gestart. |
| FrontpageContent | Frontpagebeheer staat los van niveau-aanmaak. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Nieuw niveau aanmaken
16.2 Validatiefout
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Nieuw niveau aanmaken | Validatie en foutafhandeling zijn inline; geen popupregister-popup vereist. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijven dat docent vanuit Oefenaanbod een nieuw niveau kan aanmaken. |
| Functioneel Ontwerp | Vastleggen dat naam, beschrijving en zichtbaarheid minimaal worden vastgelegd. |
| Functioneel Ontwerp | Vastleggen dat eigenaar automatisch de ingelogde docent is. |
| Technisch Ontwerp | Oefencatalogus, niveaus, categorieën, oefeningen en modules beschrijft het aanmaken van niveaus, eigenaar en auditmetadata. |
| Technisch Ontwerp | Autorisatie, policies en server-side contextcontrole beschrijft de server-side docentcontextcontrole. |
| Software Requirements Specification | Beschrijft dat alleen actieve docentrol nieuw niveau kan aanmaken. |
| Software Requirements Specification | Beschrijft dat niveau-aanmaak geen categorieën, oefeningen of leerlingautorisaties aanmaakt. |
| Database-informatie | Levels bevat eigenaar, zichtbaarheid en auditmetadata volgens de database-informatiebaseline. |
| Ontwerpbronnen | Command CreateTeacherLevel en event TeacherLevelCreated. |
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-AANB-003-001 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Een docent een nieuw niveau laten aanmaken vanuit Oefenaanbod |
REQ-UC-DOC-AANB-003-002 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Niveau-aanmaak beperken tot gebruikers met actieve docentrol |
REQ-UC-DOC-AANB-003-003 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Bij niveau-aanmaak minimaal naam, beschrijving en zichtbaarheid verwerken |
REQ-UC-DOC-AANB-003-004 | SRS-AUTH-001 SRS-CAT-001 SRS-TCH-002 AC-AUTH-001 AC-CAT-001 AC-TCH-002 | De actuele eigenaar van een nieuw niveau server-side zetten op de ingelogde docent |
REQ-UC-DOC-AANB-003-005 | SRS-TCH-001 SRS-NFR-AUD-001 AC-TCH-001 AC-NFR-AUD-001 | Aanmaakmetadata vastleggen |
REQ-UC-DOC-AANB-003-006 | SRS-AUTH-001 SRS-TCH-001 AC-AUTH-001 AC-TCH-001 | Ongeldige of ontbrekende invoer blokkeren |
REQ-UC-DOC-AANB-003-007 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Na succesvolle aanmaak het nieuwe niveau als werkcontext kunnen tonen |
REQ-UC-DOC-AANB-003-008 | SRS-AUTH-001 SRS-CAT-001 SRS-LRN-009 SRS-TCH-003 AC-AUTH-001 AC-CAT-001 AC-LRN-009 AC-TCH-003 | Bij niveau-aanmaak geen categorieën, oefeningen, leerlingautorisaties of collaborators aanmaken |
REQ-UC-DOC-AANB-003-009 | SRS-MSG-001 SRS-CAT-001 SRS-TCH-002 AC-MSG-001 AC-CAT-001 AC-TCH-002 | Bij niveau-aanmaak geen systeemberichten versturen |
REQ-UC-DOC-AANB-003-010 | SRS-CAT-001 SRS-TCH-002 AC-CAT-001 AC-TCH-002 | Niveau-aanmaak transactioneel verwerken zodat geen half aangemaakt niveau ontstaat |