UC-OVG-KIND-003 — Kind selecteren
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-KIND-003 |
| Naam | Kind selecteren |
| Domein | Ouder/voogd / Kinderen en koppelingen |
| Primaire actor | Ouder/voogd |
| Secundaire actor(en) | Frontend, backend, database, autorisatiecomponent |
| Rolcontext | Actieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Kinderen |
| Gerelateerde usecases | UC-OVG-KIND-001, UC-OVG-KIND-004, UC-OVG-KIND-005 |
| Primaire entiteiten | Users, UserRelationships |
| Secundaire entiteiten / events | KindSelectionContext |
| Gerelateerde popups | OVG_CHILD_CONTEXT_NOT_AVAILABLE |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
De usecase beschrijft hoe een ouder/voogd op de pagina Kinderen precies één kind selecteert als context voor vervolgacties. Selectie is een noodzakelijke tussenstap voor Toon informatie, Bekijk geschiedenis en Ontkoppel leerling.
Een selectie in de frontend is nooit voldoende voor autorisatie. Iedere vervolgactie controleert opnieuw server-side of het geselecteerde kind nog binnen een actieve ouder-/voogdrelatie valt.
Uitgangspunten
- Er kan steeds maar één kind geselecteerd zijn.
- Selectie is geen autorisatiebron.
- Vervolgacties controleren de selectie opnieuw server-side.
- Een vervallen selectie mag geen oude kinddata tonen.
- Selectie wordt niet als blijvend domeinrecord opgeslagen.
3. Scope
Deze usecase beschrijft:
- Selecteren van één kind uit het overzicht.
- Activeren van contextafhankelijke acties na selectie.
- Server-side hercontrole bij vervolgactie.
- Vervallen selectie afhandelen wanneer relatie intussen niet meer actief is.
Deze usecase beschrijft niet:
- Kindgegevens tonen; dit hoort bij UC-OVG-KIND-004.
- Relatie beëindigen; dit hoort bij UC-OVG-KIND-005.
- Geschiedenis bekijken; dit valt buiten dit subdomein en hoort bij ouder/voogd-resultaten en geschiedenis.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Generiek / Relaties | Relatie-uitnodigingen, acceptatie en algemene relatievorming blijven bronhoudend in het generieke relatiedomein. |
| Generiek / Berichten | Systeemberichten en leesstatussen blijven bronhoudend in het centrale berichtendomein. |
| Leerling | De leerling blijft eigenaar van eigen oefenuitvoering; ouder/voogd kan niet namens het kind oefenen. |
| Docent | Docentautorisaties en docentresultaatinzage blijven begrensd door docentcontext; ouder-/voogdcontext gebruikt eigen relatiegrens. |
4. Pre-condities
| ID | Waarde |
|---|---|
| 001 | De pagina Kinderen is geladen. |
| 002 | Er is ten minste één zichtbaar kind of een lege staat. |
| 003 | De ouder/voogd heeft actieve ouder-/voogdcontext. |
5. Post-condities
| ID | Waarde |
|---|---|
| 001 | Maximaal één kind is geselecteerd. |
| 002 | Contextacties zijn beschikbaar of blijven uitgeschakeld. |
| 003 | Er is geen domeindata gewijzigd. |
6. Trigger
De usecase start wanneer de ouder/voogd de betreffende ouder-/voogdroute opent of de beschreven actie uitvoert binnen de actieve ouder-/voogdcontext.
7. Normale processtroom
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Ouder/voogd | Klikt op een kindregel | Frontend markeert selectie | UI-state |
| 2 | Frontend | Bewaart geselecteerde sleutel tijdelijk | Acties worden visueel beschikbaar | Clientstate |
| 3 | Ouder/voogd | Kiest vervolgactie | Frontend stuurt selectie mee | Vervolgactie |
| 4 | Backend | Controleert selectie server-side | Kind valt nog binnen actieve ouder-/voogdscope | UserRelationships |
| 5 | Backend | Start vervolgusecase | Toon informatie of ontkoppelen kan doorgaan | Context |
7.1 Scherm- en routegedrag
- De pagina Kinderen toont een compacte lijst en gebruikt selectie als bewuste tussenstap.
- Vervolgacties blijven uitgeschakeld totdat een kind is geselecteerd.
- Bij wijziging van relatie- of autorisatiestatus wordt oude clientstate ongeldig gemaakt.
- De gebruiker krijgt geen docentgerichte filters of beheeracties te zien.
8. Alternatieve en exceptionele processtromen
| ID | Waarde |
|---|---|
| 001 | Geen kind geselecteerd: acties blijven uitgeschakeld of tonen kind-selectie vereist afhandeling. |
| 002 | Geselecteerd kind is niet langer gekoppeld: vervolgactie wordt geblokkeerd en selectie vervalt. |
| 003 | Gebruiker selecteert ander kind: vorige selectie wordt vervangen. |
| 004 | Meervoudige selectie via browsermanipulatie: backend accepteert maar één kind-ID per vervolgactie. |
8.1 Afhandeling van verouderde of ongeldige clientstate
- De backend herhaalt de autorisatiecontrole bij iedere vervolgactie.
- Oude selectie-, route- of browsercontext wordt genegeerd wanneer de actuele server-side context geen toegang meer geeft.
- De frontend mag verouderde weergave herstellen door opnieuw het actuele viewmodel op te vragen.
9. Business rules
| ID | Waarde |
|---|---|
| 001 | Er kan steeds maar één kind geselecteerd zijn. |
| 002 | Selectie is geen autorisatiebron. |
| 003 | Vervolgacties controleren de selectie opnieuw server-side. |
| 004 | Een vervallen selectie mag geen oude kinddata tonen. |
| 005 | Selectie wordt niet als blijvend domeinrecord opgeslagen. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Geselecteerd kind | Tijdelijke UI-context met kind-ID. | Geen persistente autorisatiebron. |
| Actiestatus | Vervolgacties worden beschikbaar na selectie. | Backend controleert opnieuw bij elke vervolgactie. |
| Vervallen selectie | Ontstaat wanneer relatie intussen niet meer actief is. | Selectie wordt ongeldig en data wordt niet getoond. |
9.2 Autorisatie- en privacygrenzen
- De zichtbare dataset wordt altijd server-side beperkt tot de actieve ouder-/voogdcontext.
- Persoonsgegevens van kinderen worden alleen getoond zolang er een actieve ouder-/voogdrelatie bestaat.
- Historische oefenresultaten worden gelezen binnen de toegestane context, maar niet gewijzigd door raadplegen of samenvatten.
10. Datavalidatie
| ID | Waarde |
|---|---|
| 001 | Kind-ID moet bestaan. |
| 002 | Kind-ID moet binnen een actieve ouder-/voogdrelatie vallen. |
| 003 | Relatie moet op het moment van vervolgactie actief zijn. |
| 004 | De ingelogde gebruiker moet de ouder-/voogdkant van de relatie zijn. |
11. Datamutaties en events
| ID | Waarde |
|---|---|
| 001 | Geen domeinmutaties. |
12. Geen datamutaties
| ID | Waarde |
|---|---|
| 001 | UserRelationships worden niet gewijzigd. |
| 002 | UserSettings worden niet gewijzigd door selectie. |
| 003 | Users worden niet gewijzigd. |
| 004 | Geen kindcontext wordt persistent opgeslagen als autorisatiebron. |
13. State diagram
Niet van toepassing.
Kindselectie is tijdelijke UI-context. De selectie wordt niet als domeinstatus opgeslagen en verleent geen autorisatie.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik | Opmerking |
|---|---|---|
| OVG_CHILD_CONTEXT_NOT_AVAILABLE | Gebruik binnen deze usecase. | Tekst, knoppen, acties en eventuele inputdefinitie blijven bronhoudend in het popupregister. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Aspect | Afleiding |
|---|---|
| FO/TO/SRS-001 | Er kan steeds maar één leerling tegelijk geselecteerd worden. |
| FO/TO/SRS-002 | Acties op de pagina Kinderen vereisen een geselecteerd kind. |
| FO/TO/SRS-003 | Server-side autorisatie blijft leidend. |
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-OVG-KIND-003-001 | SRS-AUTH-004 SRS-GUA-001 SRS-NFR-PER-001 AC-AUTH-004 AC-GUA-001 AC-NFR-PER-001 | Maximaal één geselecteerd kind tegelijk ondersteunen |
REQ-UC-OVG-KIND-003-002 | SRS-AUTH-001 SRS-AUTH-004 SRS-GUA-001 AC-AUTH-001 AC-AUTH-004 AC-GUA-001 | Vervolgacties blokkeren zolang geen kind is geselecteerd |
REQ-UC-OVG-KIND-003-004 | SRS-GUA-001 SRS-NFR-SEC-001 AC-GUA-001 AC-NFR-SEC-001 | Vervallen selecties veilig afhandelen |
REQ-UC-OVG-KIND-003-005 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Selectie niet als blijvende autorisatiebron opslaan |