4. Kinderen
4.1 Schermafbeelding

4.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-OVG-04-01 |
| Schermnaam | Kinderen |
| Doelgroep / onderdeel | Ouder/voogd |
| Bronbestand | oefenhub_ouders_02_kinderen_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | ooefenhub_ouders_02_kinderen_V1_4.png |
| Processtap / context | Ouder/voogd opent vanuit de ouder-/voogdcontext het overzicht van gekoppelde kinderen. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | De aangeleverde screenshotnaam bevat in de bestaande documentatie een dubbele beginletter oo; dit document gebruikt die bestandsnaam om de bestaande afbeeldingslink intact te houden. Header, profielmenu, berichtenteller en footer vallen buiten de inhoudelijke scope van dit schermdocument. |
| Route / URL-patroon | Functioneel routepatroon: ouder-voogd/kinderen. De technische route wordt door de applicatieroutering bepaald. |
| Autorisatie / vereiste rol-context | Actieve ouder-/voogdrolcontext (Guardian) met minimaal één actieve ouder/voogd-leerlingrelatie (GuardianStudent) voor de getoonde kinderen. |
| Primair domeinobject / hoofdentiteit | Gekoppelde leerling binnen een actieve ouder/voogd-leerlingrelatie. |
| Gerelateerde schermen / navigatie | Ouder/voogd frontpage, Ouder/voogd online overzicht, generiek relatiescherm, leerlinggeschiedenis/resultaatweergave in ouder-/voogdcontext. |
| Data-karakter | Samengestelde read-only overzichtsdata met acties naar geschiedenis en relatie-ontkoppeling. Mockupwaarden zijn voorbeelddata. |
4.3 Functionele beschrijving
Dit scherm toont de kinderen waarmee het account van de ingelogde gebruiker als ouder of voogd actief gekoppeld is. De pagina is bedoeld als gericht overzicht voor ouder-/voogdbegeleiding: de gebruiker ziet per kind wie gekoppeld is, kan de oefengeschiedenis van dat kind openen en kan de ouder-/voogdrelatie beëindigen wanneer de koppeling niet langer geldig is.
De pagina is nadrukkelijk geen scherm om namens een kind oefeningen te starten, antwoorden te wijzigen, docentstructuren te beheren of leerlingtoegang te muteren. De ouder/voogd krijgt alleen inzage in gegevens die voortkomen uit een actieve GuardianStudent-relatie en onderliggende leerlingtoegang. Voor elk getoond kind moet de server opnieuw controleren dat de ingelogde gebruiker in de actieve ouder-/voogdcontext nog recht heeft op inzage.
De zichtbare kindnamen, initialen, tijdstippen, niveaus en docentnamen in de mockup zijn dynamisch. Zij worden afgeleid uit de gekoppelde leerlingaccounts, actieve relaties, actieve niveauautorisaties, het actief geselecteerde niveau van het kind en de bijbehorende docentstructuur. Wanneer gegevens ontbreken, ingetrokken zijn of door autorisatie niet meer beschikbaar zijn, mag de frontend deze niet blijven tonen op basis van eerder geladen mockup- of clientdata.
4.3.1 Hoofdopbouw
De hoofdinhoud bestaat uit drie inhoudelijke onderdelen:
-
Introblok Kinderen
Legt uit dat de ouder/voogd hier de gekoppelde kinderen ziet, snel naar geschiedenis kan gaan en via details beschikbare niveaus, huidig niveau en gekoppelde docenten kan bekijken. -
Mijn kinderen
Toont een lijst met gekoppelde kinderen. Per kind zijn minimaal de naam, een compacte avatar/initialenweergave, de actie Geschiedenis, de actie Ontkoppelen en een uitklapbare detailweergave beschikbaar. -
Goed om te weten
Geeft aanvullende uitleg over kindgerichte geschiedenis, verschillen tussen gekoppelde docenten per kind en het feit dat ontkoppelen een bewuste bevestigde actie is.
De breadcrumb Home › Kinderen hoort bij de pagina-inhoud en maakt duidelijk dat de gebruiker zich binnen het ouder-/voogddeel van OefenHub bevindt. De navigatieknoppen in de header, het berichtenicoon, het profielmenu en de footer worden niet opnieuw als schermspecifieke onderdelen uitgewerkt.
4.3.2 Kindkaart en uitklapbare details
Elke kindkaart vertegenwoordigt één actieve ouder-/voogdrelatie met een leerling. De actie Geschiedenis opent de oefengeschiedenis van het betreffende kind in ouder-/voogdcontext. Die geschiedenis is kindgericht: zij is niet beperkt tot één docentcontext, maar mag alleen resultaten tonen waarvoor de ouder/voogd via de actieve relatie en de geldende autorisatieregels inzage heeft.
De uitklapbare detailweergave toont aanvullende dynamische gegevens:
- Laatst gezien: afgeleid uit de laatste bekende activiteit van het kind, bijvoorbeeld accountactiviteit of recente oefenrunactiviteit.
- Alle beschikbare niveaus: afgeleid uit actieve niveauautorisaties van de leerling.
- Huidige niveau: afgeleid uit het actief geselecteerde niveau van het kind, voor zover dit voor de ouder/voogd zichtbaar mag zijn.
- Gekoppelde docenten: afgeleid uit de docent-leerlingrelaties en niveaucontexten die bij de zichtbare niveaus horen.
Wanneer een kind meerdere docenten, niveaus of docentcontexten heeft, moet de weergave dit als dynamische collectie behandelen. Er mag niet worden aangenomen dat ieder kind precies één docent of precies één niveau heeft.
4.3.3 Geschiedenis openen
De actie Geschiedenis opent de resultaten- of geschiedenisweergave voor het gekozen kind. De server controleert daarbij minimaal:
- dat de gebruiker is ingelogd;
- dat de actieve rolcontext
Guardianis; - dat er een actieve
GuardianStudent-relatie bestaat tussen ouder/voogd en kind; - dat de gevraagde resultaten bij het geselecteerde kind horen;
- dat eventuele onderliggende niveau- of docentcontext niet buiten de toegestane relatie-inzage valt.
De ouder/voogd mag resultaten bekijken, maar niet aanpassen. Historische oefenruns blijven historisch bij het kind horen en worden niet herschreven wanneer docentkoppelingen, categorieën of niveaus later wijzigen.
4.3.4 Ontkoppelen
De actie Ontkoppelen beëindigt de ouder-/voogdrelatie niet direct vanuit de lijst. De actie opent altijd eerst een bevestigingsmodal of popup met de vraag of de gebruiker zeker weet dat de relatie ontkoppeld moet worden. Pas na bevestiging wordt de relatie functioneel beëindigd.
Ontkoppelen betekent dat het bestaande UserRelationships-record niet hard wordt verwijderd, maar op inactief wordt gezet met auditinformatie over actor, tijdstip en reden of toelichting wanneer die in de flow wordt gevraagd. Daarnaast wordt een RelationshipEvents-record vastgelegd. De relatiebeëindiging mag tot gevolg hebben dat dit kind niet meer zichtbaar is in deze lijst en dat de ouder/voogd geen toegang meer heeft tot de bijbehorende geschiedenis en live-meekijkcontext.
4.3.5 Leegstaten, foutstaten en disabled states
Wanneer de ouder/voogd geen actieve gekoppelde kinderen heeft, toont het scherm geen lege kaarten met voorbeelddata, maar een duidelijke lege status in het blok Mijn kinderen. De pagina mag dan uitleg tonen dat er nog geen actieve kindkoppelingen zijn.
De actie Geschiedenis is niet beschikbaar wanneer er voor het kind geen toegankelijke oefengeschiedenis bestaat of wanneer de autorisatie voor de betreffende gegevens ontbreekt. De actie Ontkoppelen is niet beschikbaar wanneer de relatie technisch niet door de huidige gebruiker beëindigd mag worden; in dat geval moet een toelichting of foutmelding worden getoond.
Wanneer detaildata, zoals gekoppelde docenten of niveaus, gedeeltelijk ontbreekt, blijft de kindkaart zichtbaar zolang de ouder-/voogdrelatie geldig is. Het ontbrekende onderdeel krijgt dan een lege of verklarende weergave, zonder fictieve fallbackwaarden.
4.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-OVG-04-01-S01 | S | Breadcrumb | Navigatiepad binnen de ouder-/voogdcontext. | Home › Kinderen | Hoort bij de pagina-inhoud; headernavigatie valt buiten scope. | GuardianChildrenBreadcrumbSection |
| SCH-OVG-04-01-S02 | S | Introblok | Uitlegblok bovenaan de pagina. | Kinderen | Beschrijft doel van de pagina en de beschikbare hoofdacties. | GuardianChildrenIntroSection |
| SCH-OVG-04-01-S03 | S | Mijn kinderen | Hoofdsectie met gekoppelde kinderen. | Mijn kinderen | Toont alleen kinderen met een actieve relatie die voor de gebruiker zichtbaar zijn. | GuardianChildrenListSection |
| SCH-OVG-04-01-T01 | T | Kindkaarten | Lijst/cardweergave van gekoppelde kinderen. | Mijn kinderen | Elke kaart staat voor één gekoppeld kind binnen de ouder-/voogdcontext. | GuardianChildCardList |
| SCH-OVG-04-01-F01 | F | Kindkaart > avatar | Initialen of avatar van het kind. | E / L / S / M | Dynamisch; mockupinitialen zijn voorbeeldwaarden. | ChildAvatarValue |
| SCH-OVG-04-01-F02 | F | Kindkaart > naam | Naam van het gekoppelde kind. | Emma Jansen | Dynamisch uit het leerlingaccount. | ChildDisplayNameValue |
| SCH-OVG-04-01-A01 | A | Kindkaart > Geschiedenis | Opent de kindgerichte oefengeschiedenis. | Geschiedenis | Alleen beschikbaar na server-side autorisatie op ouder-/voogdrelatie en kind. | OpenChildHistoryAction |
| SCH-OVG-04-01-A02 | A | Kindkaart > Ontkoppelen | Start bevestigde ontkoppelactie voor de ouder-/voogdrelatie. | Ontkoppelen | Opent altijd eerst een bevestigingsmodal/popup. | DisconnectGuardianStudentRelationAction |
| SCH-OVG-04-01-B01 | B | Kindkaart > uitklappen | Toont of verbergt extra kinddetails. | Meer informatie | Wijzigt alleen de UI-state; geen datamutatie. | ToggleChildDetailsButton |
| SCH-OVG-04-01-S04 | S | Uitklapbare details | Detailblok per kind met aanvullende context. | n.v.t. | Alleen zichtbaar wanneer de kaart is opengeklapt. | ChildDetailsSection |
| SCH-OVG-04-01-F03 | F | Details > Laatst gezien | Laatste bekende activiteit van het kind. | Laatst gezien | Dynamische tijdsaanduiding; geen vaste productiegegevens. | ChildLastSeenValue |
| SCH-OVG-04-01-F04 | F | Details > Alle beschikbare niveaus | Lijst met voor het kind beschikbare niveaus. | Alle beschikbare niveaus | Afgeleid uit actieve niveauautorisaties. | ChildAvailableLevelsValue |
| SCH-OVG-04-01-F05 | F | Details > Huidige niveau | Actief geselecteerd niveau van het kind. | Huidige niveau | Kan ontbreken of niet zichtbaar zijn wanneer geen niveau is geselecteerd of toegestaan. | ChildSelectedLevelValue |
| SCH-OVG-04-01-F06 | F | Details > Gekoppelde docenten | Docenten die in de zichtbare niveau-/relatiecontext gekoppeld zijn aan het kind. | Gekoppelde docenten | Dynamische collectie; kan per kind verschillen. | ChildLinkedTeachersValue |
| SCH-OVG-04-01-S05 | S | Goed om te weten | Informatieve rechterkolom met uitleg over deze pagina. | Goed om te weten | Tekst is informatief en ondersteunt begrip van kindgerichte inzage. | GuardianChildrenInfoSection |
| SCH-OVG-04-01-M01 | M | Goed om te weten > geschiedenis | Uitleg over kindgerichte geschiedenis. | Geschiedenis is volledig kindgericht | Informatieve tekst, geen mutatie. | ChildHistoryInfoMessage |
| SCH-OVG-04-01-M02 | M | Goed om te weten > docenten | Uitleg dat docenten per kind kunnen verschillen. | Docenten kunnen per kind verschillen | Informatieve tekst, geen mutatie. | ChildTeachersInfoMessage |
| SCH-OVG-04-01-M03 | M | Goed om te weten > ontkoppelen | Uitleg over bewust ontkoppelen. | Ontkoppelen is een bewuste actie | Verwijst functioneel naar bevestigingsstap. | ChildDisconnectInfoMessage |
| SCH-OVG-04-01-MOD01 | MOD | Bevestigingspopup ontkoppelen | Modal/popup die verschijnt na de actie Ontkoppelen. | Weet je het zeker? | Niet zichtbaar in de screenshot, maar functioneel verplicht voor deze actie. | DisconnectGuardianStudentRelationConfirmModal |
4.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-OVG-04-01-T01 | Kindkaarten | Mijn kinderen | GuardianChildCardList | UserRelationships, RelationshipTypes, Users | Gefilterde collectie actieve GuardianStudent-relaties voor de ingelogde ouder/voogd | list / collection | Nee | Alleen actieve relaties met relatietype GuardianStudent en geldige rolcontext mogen worden getoond. |
| SCH-OVG-04-01-F01 | Kindkaart > avatar | E / L / S / M | ChildAvatarValue | Users.ProfileAvatarId, ProfileAvatars, eventueel afgeleide initialen uit Users.DisplayName | Profielafbeelding of fallback-initialen van het kind | string / asset reference | Nee | Vrije uploads worden niet gebruikt; fallback moet veilig uit gebruikersnaam worden afgeleid. |
| SCH-OVG-04-01-F02 | Kindkaart > naam | Emma Jansen | ChildDisplayNameValue | Users.DisplayName, Users.FirstName, Users.MiddleName, Users.LastName | Weergavenaam van het gekoppelde kind | string | Nee | Alleen tonen wanneer het kind via actieve relatie zichtbaar is. |
| SCH-OVG-04-01-A01 | Kindkaart > Geschiedenis | Geschiedenis | OpenChildHistoryAction | ExerciseRuns, TeacherLevels, TeacherStudentLevelAccess, UserRelationships | Navigatieactie naar kindgerichte geschiedenis op basis van toegestane run- en niveaucontext | action | Ja | Server-side controle op ouder-/voogdrelatie en eigenaar van de gevraagde kinddata is verplicht. |
| SCH-OVG-04-01-A02 | Kindkaart > Ontkoppelen | Ontkoppelen | DisconnectGuardianStudentRelationAction | UserRelationships, RelationshipEvents | Bevestigde relatiebeëindiging | action | Ja | Mag relatie niet direct beëindigen; eerst bevestigingsmodal/popup tonen. |
| SCH-OVG-04-01-B01 | Kindkaart > uitklappen | Meer informatie | ToggleChildDetailsButton | Runtime UI-state | Clientstate voor tonen/verbergen van details | boolean / UI-state | Ja | Wijzigt geen databasegegevens. aria-expanded moet de zichtbare state volgen. |
| SCH-OVG-04-01-F03 | Details > Laatst gezien | Laatst gezien | ChildLastSeenValue | Users.LastSeenAtUtc, eventueel aangevuld met ExerciseRuns.LastActivityAtUtc | Laatste bekende activiteit van het kind | datetime / relatieve tekst | Nee | Tijdwaarde wordt lokaal leesbaar getoond; mag ontbreken wanneer niet beschikbaar. |
| SCH-OVG-04-01-F04 | Details > Alle beschikbare niveaus | Alle beschikbare niveaus | ChildAvailableLevelsValue | TeacherStudentLevelAccess, TeacherLevels, UserRelationships | Actieve niveaus waarvoor het kind toegang heeft en die voor ouder/voogd zichtbaar mogen zijn | list / string | Nee | Alleen actieve toegangen en actieve niveaus tonen. |
| SCH-OVG-04-01-F05 | Details > Huidige niveau | Huidige niveau | ChildSelectedLevelValue | UserSettings.SelectedTeacherLevelId, TeacherLevels, TeacherStudentLevelAccess | Actief geselecteerd niveau van het kind, gecontroleerd tegen toegestane niveaus | string / nullable reference | Nee | Geselecteerd niveau mag alleen worden getoond als het binnen zichtbare actieve toegang valt. |
| SCH-OVG-04-01-F06 | Details > Gekoppelde docenten | Gekoppelde docenten | ChildLinkedTeachersValue | UserRelationships, TeacherStudentLevelAccess, TeacherLevels, Users | Docenten die via actieve docent-leerlingrelatie en niveaucontext aan het kind gekoppeld zijn | list / string | Nee | Docenten kunnen per kind en per niveau verschillen; lijst is dynamisch. |
| SCH-OVG-04-01-S05 | Goed om te weten | Goed om te weten | GuardianChildrenInfoSection | Codegedreven vaste schermtekst of beheerbaar contentblok indien later zo ingericht | Informatieve schermtekst | string / rich text | Nee op dit scherm | Tekst mag geen autorisatie of datatoegang impliceren; alleen toelichting. |
| SCH-OVG-04-01-MOD01 | Bevestigingspopup ontkoppelen | Weet je het zeker? | DisconnectGuardianStudentRelationConfirmModal | PopupDetails of coded modaldefinitie, UserRelationships, RelationshipEvents | Bevestigingsflow voor relatiebeëindiging | modal / command | Ja | Bij bevestiging: UserRelationships.IsActive=false, auditvelden vullen en event vastleggen; bij annuleren geen mutatie. |
4.6 Schermtrace naar SRS en acceptatiecriteria
De onderstaande tabel legt per schermrequirement de koppeling naar het centrale schermrequirements-trace-register, SRS-requirements en acceptatiecriteria vast. De normatieve requirementtekst staat in de SRS; dit schermdocument beschrijft alleen de lokale schermcontext.
Deze tabel bevat alleen schermtraceability. De normatieve requirementtekst en acceptatiecriteria staan centraal in de SRS.
| Schermrequirement | Dekt | Schermcontext |
|---|---|---|
REQ-SCH-OVG-04-01-01 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | In ouder-/voogdcontext een overzicht tonen van kinderen waarmee de ingelogde gebruiker een actieve ouder/voogd-leerlingrelatie heeft |
REQ-SCH-OVG-04-01-02 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Het systeem mag in het kinderenoverzicht uitsluitend kinderen tonen waarvoor server-side een actieve GuardianStudent-relatie met de ingelogde gebruiker bestaat |
REQ-SCH-OVG-04-01-03 | SRS-AUTH-001 SRS-GUA-004 AC-AUTH-001 AC-GUA-004 | Per gekoppeld kind minimaal de naam, een compacte visuele identificatie en de acties Geschiedenis en Ontkoppelen tonen, tenzij de actie door autorisatie of status niet beschikbaar is |
REQ-SCH-OVG-04-01-04 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Per kind een uitklapbare detailweergave ondersteunen met laatst bekende activiteit, beschikbare niveaus, huidig niveau en gekoppelde docenten wanneer deze gegevens beschikbaar en geautoriseerd zijn |
REQ-SCH-OVG-04-01-05 | SRS-GUA-005 AC-GUA-005 | De actie Geschiedenis de ouder/voogd naar een kindgerichte geschiedenisweergave leiden zonder de ouder/voogd toe te staan resultaten of oefenruns te wijzigen |
REQ-SCH-OVG-04-01-06 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | De actie Geschiedenis server-side controleren dat de gevraagde resultaten bij een kind horen dat actief aan de ouder/voogd gekoppeld is |
REQ-SCH-OVG-04-01-07 | SRS-GUA-004 AC-GUA-004 | De actie Ontkoppelen altijd eerst een bevestigingsmodal of popup tonen voordat de ouder/voogd-leerlingrelatie beëindigd wordt |
REQ-SCH-OVG-04-01-08 | SRS-GUA-004 AC-GUA-004 | Een bevestigde ontkoppeling verwerken als soft-deactivatie van de relatie en niet als hard delete |
REQ-SCH-OVG-04-01-09 | SRS-NFR-AUD-001 SRS-GUA-004 AC-NFR-AUD-001 AC-GUA-004 | Ontkoppeling van een ouder/voogd-leerlingrelatie auditbaar vastleggen met actor, tijdstip en relatie-event |
REQ-SCH-OVG-04-01-10 | SRS-GUA-001 AC-GUA-001 | Een lege status tonen wanneer de ouder/voogd geen actieve gekoppelde kinderen heeft |
REQ-SCH-OVG-04-01-11 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Voorkomen dat mockupwaarden of eerder geladen clientdata zichtbaar blijven nadat een relatie of onderliggende toegang server-side is ingetrokken |
REQ-SCH-OVG-04-01-12 | SRS-GUA-001 AC-GUA-001 | Dynamische waarden zoals kindnamen, niveaus, docenten en tijdsaanduidingen behandelen als actuele runtimegegevens en niet als vaste productie-inhoud |
4.7 Technische koppeling
Voor technische uitwerking zijn vooral relevant:
- 04 Identiteit, authenticatie en rolcontext voor actieve ouder-/voogdcontext en gekoppelde leerlingidentiteit.
- 05 Autorisatie, policies en server-side contextcontrole voor controle op zichtbare kinderen, geschiedenisacties en ontkoppelen.
- 10 Oefenruns, voortgang, resultaten, statistieken en PDF-brondata voor kindgerichte geschiedenis, resultaten en historische runcontext.
- 12 Relatiebeheer, uitnodigingen en gedeelde oefeningen voor
GuardianStudent-relaties, relatiebeëindiging en relatie-events. - 15 Realtime live meekijken met SignalR voor de samenhang tussen kindkaart, online-status en live-meekijkcontext.
- 16 PDF-export met QuestPDF voor PDF-export vanuit kindgerichte geschiedenis- of resultaatdetailcontexten.
- 17 Readmodels, tellers, badges, caching en materialisatie voor
GuardianChildReadModel,GuardianHistoryReadModel,GuardianHistoryFilterReadModel,GuardianRunDetailReadModel,GuardianResultStatisticsReadModelenGuardianPdfExportModel. - 19 Logging, audit, securitylogging en technische foutafhandeling voor audit van ontkoppelen en foutafhandeling bij relatie- of geschiedenisacties.
- 24 Frontend, Blazor, routing, state en componentopbouw voor uitklapbare kinddetails, modals, navigatie en foutstates.
- 25 Privacy, retentie, anonimisering en gegevensbescherming voor minimale weergave van kind-, docent- en resultaatgegevens.