2. Frontpage
2.1 Schermafbeelding

2.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-OVG-01-01 |
| Schermnaam | Frontpage — Ouder/voogd |
| Doelgroep / onderdeel | Ouder/voogd |
| Bronbestand | oefenhub_ouders_01_frontpage_V1_3.html |
| Mockupversie | V1.3 |
| Screenshotbestand | oefenhub_ouders_01_frontpage_V1_3.png |
| Processtap / context | Gebruiker is ingelogd en bevindt zich in de actieve ouder-/voogd-context. De pagina is de reguliere frontpage voor een gebruiker die op dat moment als ouder/voogd handelt. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie. |
| Opmerkingen | De zichtbare voorbeeldwaarden in de mockup zijn dynamische samenvattingswaarden. Header, profielmenu, berichtenicoon en footer worden niet opnieuw als UI-componenten uitgewerkt; alleen de frontpage-inhoud zelf valt binnen deze pagina. |
| Route / URL-patroon | Functioneel routepatroon: ouder-/voogd-frontpage na inloggen of na wisselen naar actieve ouder-/voogd-context; de technische route wordt door de applicatieroutering bepaald. |
| Autorisatie / vereiste rol-context | Actieve ouder-/voogd-context met een actieve roltoekenning Guardian. De getoonde gegevens worden server-side beperkt tot leerlingen waarmee de gebruiker een actieve ouder-/voogdrelatie heeft. |
| Primair domeinobject / hoofdentiteit | Geen enkel primair mutatieobject; samengestelde frontpage op basis van gekoppelde leerlingen, relatiecontext, niveaucontext en afgeronde oefenruns. |
| Gerelateerde schermen / navigatie | Kinderen, Online, Relaties, Berichten, Profiel, Toegankelijkheid, Voorkeuren en Meld een probleem. |
| Data-karakter | Read-only aggregatiepagina met contextgebonden contentblokken en dynamische tel-/resultaatwaarden. |
2.3 Functionele beschrijving
Deze frontpage is de startpagina voor een gebruiker die OefenHub in de rol Ouder/voogd gebruikt. De pagina geeft geen directe oefenacties en laat de ouder/voogd geen oefeningen namens een leerling starten. Het doel is snelle oriëntatie: de ouder/voogd ziet hoeveel gekoppelde kinderen er zijn, of er voldoende onderwijscontext bekend is en hoe de recente oefenactiviteit van die kinderen er samengevat uitziet.
De pagina bestaat uit een contextspecifiek introblok en twee samenvattende kaarten: Kinderenoverzicht en Resultatenoverzicht. De gebruiker kan voor details verder navigeren via de rolgebonden menu-ingangen, zoals Kinderen en Online. De frontpage zelf blijft bewust een overzichtsscherm en geen detail- of beheerpagina.
2.3.1 Interpretatie van mockupwaarden
Alle zichtbare persoonsnamen, aantallen, percentages en meldingen in de mockup zijn voorbeelddata. Waarden zoals Noor, 2, 3, 14, 47, 81% en 6 mogen niet als vaste productiewaarden worden beschreven. Zij worden per ingelogde gebruiker, actieve rolcontext, gekoppelde leerlingen, relatiecontext en afgeronde oefenruns opnieuw bepaald.
De tekstuele intro en kaarttoelichtingen kunnen inhoudelijk via contextgebonden frontpage-content worden beheerd, maar de structurele pagina-opbouw, kaartvolgorde, layout en aggregatielogica zijn codegedreven. De ouder-/voogd-context correspondeert technisch met ContextType = Guardian waar contextgebonden content of footer-/frontpagebeheer wordt toegepast.
2.3.2 Hoofdopbouw
De hoofdinhoud van de pagina bestaat uit:
-
Introblok
Een ouder-/voogdgerichte toelichting op de functie van de frontpage. Dit blok maakt duidelijk dat de gebruiker een samenvatting ziet van gekoppelde kinderen, oefenactiviteit, gekoppelde docenten en recente resultaten. -
Kinderenoverzicht
Een samenvattingskaart met vier waarden: gekoppelde kinderen, kinderen met een bekend huidig niveau, totaal gekoppelde docenten en kinderen zonder docentkoppeling. Deze kaart helpt de ouder/voogd snel te zien of de basisrelaties en onderwijscontexten compleet genoeg zijn. -
Resultatenoverzicht
Een samenvattingskaart met recente oefenactiviteit en resultaatindicaties: afgerond deze week, afgerond deze maand, gemiddeld goed en gemarkeerd als Geen idee. Deze waarden zijn signalerend bedoeld en vervangen niet de volledige geschiedenis- of detailweergave.
2.3.3 Autorisatie en gegevensafbakening
De pagina mag alleen worden geopend door een gebruiker met een actieve ouder-/voogdrol. Wanneer een gebruiker meerdere rollen heeft, is de actieve frontendcontext bepalend voor de zichtbare frontpageblokken. Voor de ouder-/voogd-frontpage worden alleen gegevens opgehaald van leerlingen waarmee de gebruiker een actieve GuardianStudent-relatie heeft.
De server moet bij iedere aggregatie controleren dat de ingelogde gebruiker de gekoppelde leerlingen daadwerkelijk als ouder/voogd mag bekijken. Een frontendfilter of verborgen navigatie is geen beveiliging. Een ouder/voogd mag resultaten en live contexten van gekoppelde leerlingen bekijken, maar mag vanuit deze frontpage geen oefenruns genereren, oefeningen starten of leerlinggegevens wijzigen.
2.3.4 Leegstaten, foutstaten en disabled states
Wanneer de gebruiker nog geen actieve gekoppelde kinderen heeft, toont de frontpage geen geforceerde detailinhoud. De samenvattingswaarden horen dan nul of een expliciete lege status te tonen. De gebruiker kan via Relaties of een passende uitnodigingsflow naar relatiebeheer worden geleid wanneer dat functioneel beschikbaar is.
Wanneer een gekoppelde leerling nog geen actueel niveau heeft, telt deze leerling niet mee bij Huidig niveau ingesteld. Wanneer een gekoppelde leerling geen actieve docentrelatie of beschikbare docentcontext heeft, telt deze leerling mee bij Zonder docentkoppeling.
Wanneer er geen afgeronde oefenruns zijn in de relevante periode, tonen de resultaatwaarden nul of een duidelijke lege status. Een ontbrekende waarde door een technische fout mag niet als 0 worden gepresenteerd wanneer daardoor een onjuiste indruk ontstaat. In dat geval moet de UI een niet-beschikbare status tonen, bijvoorbeeld een streepje of foutmelding binnen de kaart, terwijl de rest van de frontpage bruikbaar blijft.
2.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-OVG-01-01-S01 | S | Hoofdinhoud | Shell van de ouder-/voogd-frontpage. | n.v.t. | Bevat de frontpage-inhoud exclusief header en footer. | GuardianFrontpageShell |
| SCH-OVG-01-01-S02 | S | Introkaart | Contextspecifiek introductieblok voor ouder/voogd. | Welkom op je frontpage als ouder of voogd | Tekst is beheerbaar als frontpagecontent; structuur is codegedreven. | GuardianIntroCard |
| SCH-OVG-01-01-F01 | F | Introkaart | Titel van het introblok. | Welkom op je frontpage als ouder of voogd | Dynamische of beheerbare contexttekst; geen gebruikersdata. | GuardianIntroTitle |
| SCH-OVG-01-01-F02 | F | Introkaart | Toelichtende introductietekst. | Op deze frontpage zie je snel hoe het gaat... | Tekst verwijst naar gekoppelde kinderen en recente resultaten. | GuardianIntroText |
| SCH-OVG-01-01-S03 | S | Kaart links | Samenvattingskaart over gekoppelde kinderen en onderwijscontext. | Kinderenoverzicht | Read-only aggregatiekaart. | GuardianChildrenSummaryCard |
| SCH-OVG-01-01-F03 | F | Kinderenoverzicht | Contextlabel boven de kaarttitel. | Ouder/voogd | Visuele contextaanduiding; geen filteractie. | GuardianCardKicker |
| SCH-OVG-01-01-F04 | F | Kinderenoverzicht | Kaarttag rechtsboven. | Overzicht | Visueel label; geen actieknop. | GuardianChildrenCardTag |
| SCH-OVG-01-01-F05 | F | Kinderenoverzicht | Aantal actieve gekoppelde leerlingen. | Gekoppelde kinderen | Dynamische teller. | LinkedChildrenCount |
| SCH-OVG-01-01-F06 | F | Kinderenoverzicht | Aantal gekoppelde leerlingen waarvoor een actueel niveau bekend is. | Huidig niveau ingesteld | Dynamische teller. | ChildrenWithCurrentLevelCount |
| SCH-OVG-01-01-F07 | F | Kinderenoverzicht | Aantal actieve docentrelaties over gekoppelde leerlingen. | Totaal gekoppelde docenten | Dynamische teller; kan relaties of unieke docenten tellen volgens de gekozen readmodeldefinitie. | LinkedTeachersCount |
| SCH-OVG-01-01-F08 | F | Kinderenoverzicht | Aantal gekoppelde leerlingen zonder actieve docentrelatie of beschikbare docentcontext. | Zonder docentkoppeling | Signaalwaarde voor ontbrekende onderwijscontext. | ChildrenWithoutTeacherContextCount |
| SCH-OVG-01-01-S04 | S | Kaart rechts | Samenvattingskaart over recente resultaten van gekoppelde kinderen. | Resultatenoverzicht | Read-only aggregatiekaart. | GuardianResultsSummaryCard |
| SCH-OVG-01-01-F09 | F | Resultatenoverzicht | Kaarttag rechtsboven. | Resultaten | Visueel label; geen actieknop. | GuardianResultsCardTag |
| SCH-OVG-01-01-F10 | F | Resultatenoverzicht | Aantal afgeronde oefeningen in de huidige week. | Afgerond deze week | Dynamische teller over afgeronde runs van gekoppelde kinderen. | CompletedRunsThisWeekCount |
| SCH-OVG-01-01-F11 | F | Resultatenoverzicht | Aantal afgeronde oefeningen in de huidige maand. | Afgerond deze maand | Dynamische teller over afgeronde runs van gekoppelde kinderen. | CompletedRunsThisMonthCount |
| SCH-OVG-01-01-F12 | F | Resultatenoverzicht | Samengevat percentage juiste antwoorden. | Gemiddeld goed | Dynamisch percentage op basis van afgeronde runstatistieken. | AverageCorrectPercentage |
| SCH-OVG-01-01-F13 | F | Resultatenoverzicht | Aantal vragen dat als Geen idee is gemarkeerd. | Gemarkeerd als ‘Geen idee’ | Signaalwaarde voor extra ondersteuning. | DunnoMarkedCount |
2.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-OVG-01-01-S02 | Introkaart | Welkom op je frontpage als ouder of voogd | GuardianIntroCard | ContentBlocks met DomainType = FrontPage en ContextType = Guardian | Beheerbare frontpagecontent binnen codegedreven kaartlocatie | section / rich text | Nee op deze view | Ontbrekende content mag de pagina niet breken; layout en blokvolgorde blijven codegedreven. |
| SCH-OVG-01-01-F01 | Introkaart | Welkom op je frontpage als ouder of voogd | GuardianIntroTitle | ContentBlocks | Contextspecifieke titel voor ouder-/voogd-frontpage | string | Nee op deze view | Tekst is beheerbaar via frontpagebeheer, niet rechtstreeks op deze frontpage. |
| SCH-OVG-01-01-F02 | Introkaart | Introductietekst | GuardianIntroText | ContentBlocks | Contextspecifieke toelichtingstekst | string / rich text | Nee op deze view | Tekst mag geen persoonsgegevens of vaste aantallen bevatten tenzij deze runtime veilig worden ingevuld. |
| SCH-OVG-01-01-F05 | Kinderenoverzicht | Gekoppelde kinderen | LinkedChildrenCount | UserRelationships + RelationshipTypes.Code = GuardianStudent + Users | Telling van actieve leerlingrelaties voor de ingelogde ouder/voogd | int | Nee | Alleen actieve relaties en actieve leerlingaccounts tellen mee; server-side relatiecontrole verplicht. |
| SCH-OVG-01-01-F06 | Kinderenoverzicht | Huidig niveau ingesteld | ChildrenWithCurrentLevelCount | UserSettings.SelectedTeacherLevelId, TeacherLevels, TeacherStudentLevelAccess, UserRelationships | Telling van gekoppelde leerlingen waarvoor een actueel niveau bekend en geldig is | int | Nee | Een niveau telt alleen mee wanneer het nog bestaat en binnen de actuele of historisch toegestane leerlingcontext herleidbaar is. |
| SCH-OVG-01-01-F07 | Kinderenoverzicht | Totaal gekoppelde docenten | LinkedTeachersCount | UserRelationships + RelationshipTypes.Code = TeacherStudent + gekoppelde leerlingen uit GuardianStudent | Telling van actieve docentrelaties over gekoppelde leerlingen | int | Nee | Alleen docentrelaties van leerlingen die aan deze ouder/voogd gekoppeld zijn mogen worden meegeteld. |
| SCH-OVG-01-01-F08 | Kinderenoverzicht | Zonder docentkoppeling | ChildrenWithoutTeacherContextCount | Afgeleid uit UserRelationships, TeacherStudentLevelAccess en TeacherLevels | Telling van gekoppelde leerlingen zonder actieve docentrelatie of beschikbare docentcontext | int | Nee | Een leerling zonder actieve docentcontext telt mee als signaal voor ontbrekende onderwijscontext. |
| SCH-OVG-01-01-F10 | Resultatenoverzicht | Afgerond deze week | CompletedRunsThisWeekCount | ExerciseRuns | Telling van afgeronde, niet-test runs van gekoppelde leerlingen met CompletedAtUtc binnen de huidige week | int | Nee | Alleen IsCompleted = true en gekoppelde leerlingen binnen ouder-/voogdrelatie tellen mee. |
| SCH-OVG-01-01-F11 | Resultatenoverzicht | Afgerond deze maand | CompletedRunsThisMonthCount | ExerciseRuns | Telling van afgeronde, niet-test runs van gekoppelde leerlingen met CompletedAtUtc binnen de huidige maand | int | Nee | Periodeafbakening moet consistent en server-side of centraal in het readmodel bepaald zijn. |
| SCH-OVG-01-01-F12 | Resultatenoverzicht | Gemiddeld goed | AverageCorrectPercentage | ExerciseRuns.CorrectCount, ExerciseRuns.TotalQuestions | Berekend percentage juiste antwoorden over de gekozen recente resultaatperiode | percentage | Nee | Delen door nul moet worden voorkomen; zonder relevante runs wordt een lege of nulstatus getoond volgens UI-regel. |
| SCH-OVG-01-01-F13 | Resultatenoverzicht | Gemarkeerd als ‘Geen idee’ | DunnoMarkedCount | ExerciseRuns.DunnoCount | Som van Geen idee-markeringen over de gekozen recente resultaatperiode | int | Nee | Alleen resultaten van gekoppelde leerlingen mogen worden meegenomen. |
| SCH-OVG-01-01-S04 | Resultatenoverzicht | Resultatenoverzicht | GuardianResultsSummaryCard | Samengesteld readmodel over UserRelationships, ExerciseRuns, Users en contextuele autorisatie | Read-only resultaataggregatie voor ouder-/voogd-frontpage | composite | Nee | Fouten in één aggregatie mogen niet leiden tot ongeautoriseerde data of misleidende nulwaarden. |
2.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-01-01-01 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Na inloggen of contextwisseling een ouder-/voogd-frontpage tonen wanneer de gebruiker de actieve rolcontext Guardian gebruikt |
REQ-SCH-OVG-01-01-02 | SRS-GUA-001 AC-GUA-001 | De ouder-/voogd-frontpage een contextspecifiek introblok tonen dat uitlegt dat de pagina een samenvatting geeft van gekoppelde kinderen, oefenactiviteit, gekoppelde docenten en recente resultaten |
REQ-SCH-OVG-01-01-03 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Uitsluitend gegevens tonen van leerlingen waarmee de ingelogde gebruiker een actieve ouder-/voogdrelatie heeft |
REQ-SCH-OVG-01-01-04 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Server-side controleren dat de ouder/voogd de gekoppelde leerlinggegevens mag bekijken voordat aggregaties of resultaatwaarden worden opgehaald |
REQ-SCH-OVG-01-01-05 | SRS-GUA-001 AC-GUA-001 | Een read-only Kinderenoverzicht tonen met minimaal gekoppelde kinderen, kinderen met huidig niveau, gekoppelde docenten en kinderen zonder docentkoppeling |
REQ-SCH-OVG-01-01-06 | SRS-RDM-003 SRS-RDM-006 SRS-RDM-002 SRS-RDM-001 SRS-GUA-005 AC-RDM-003 AC-RDM-006 AC-RDM-002 AC-RDM-001 AC-GUA-005 | Een read-only Resultatenoverzicht tonen met minimaal afgeronde oefeningen deze week, afgeronde oefeningen deze maand, gemiddeld goed en aantal Geen idee-markeringen |
REQ-SCH-OVG-01-01-07 | SRS-GUA-005 AC-GUA-005 | De frontpage mag de ouder/voogd geen mogelijkheid geven om namens een leerling een oefening te starten, te genereren of leerlinggegevens te wijzigen |
REQ-SCH-OVG-01-01-08 | SRS-GUA-001 AC-GUA-001 | De zichtbare tel- en resultaatwaarden dynamisch worden berekend en geen als vaste productiewaarden uit de mockup worden overgenomen |
REQ-SCH-OVG-01-01-09 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Bij ontbreken van gekoppelde kinderen, niveaus, docentcontext of afgeronde runs het systeem een correcte nul- of lege status tonen zonder ongeautoriseerde data op te halen |
REQ-SCH-OVG-01-01-10 | SRS-GUA-001 AC-GUA-001 | Technische fouten bij het ophalen van aggregaties geen als geldige nulwaarden worden gepresenteerd wanneer dat een misleidende interpretatie geeft |
REQ-SCH-OVG-01-01-11 | SRS-GUA-001 AC-GUA-001 | Contextgebonden frontpagecontent voor ouder/voogd via het contentblokmodel beheerbaar kunnen zijn, terwijl layout, blokvolgorde en aggregatielogica codegedreven blijven |
REQ-SCH-OVG-01-01-12 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Voor gecombineerde rollen de ouder-/voogd-frontpage-inhoud als rolcontextblok kunnen worden opgenomen volgens de geldende prioriteits- en samenstellingsregels, zonder dat er voor iedere rolcombinatie een volledig los frontpageontwerp nodig is |
2.7 Technische koppeling
Voor technische uitwerking zijn vooral relevant:
- 04 Identiteit, authenticatie en rolcontext voor actieve ouder-/voogdcontext en combinatierollen.
- 05 Autorisatie, policies en server-side contextcontrole voor server-side controle op gekoppelde kinderen en zichtbare aggregaties.
- 10 Oefenruns, voortgang, resultaten, statistieken en PDF-brondata voor afgeronde runs, resultaten, statistieken en PDF-brondata die onder de resultatenkaart vallen.
- 12 Relatiebeheer, uitnodigingen en gedeelde oefeningen voor ouder-/voogdrelaties en gekoppelde-kinderencontext.
- 15 Realtime live meekijken met SignalR voor signalen die vanuit ouder-/voogdcontext naar online of live meekijken leiden.
- 16 PDF-export met QuestPDF voor exporteerbare resultaten die vanuit geschiedenis- of detailcontexten kunnen worden aangeboden.
- 17 Readmodels, tellers, badges, caching en materialisatie voor
GuardianChildReadModel,GuardianResultSummaryReadModelen frontpage-tellers. - 24 Frontend, Blazor, routing, state en componentopbouw voor frontpagerouting, kaartcomponenten, loading states en foutweergave.
- 25 Privacy, retentie, anonimisering en gegevensbescherming voor minimale weergave van kind- en resultaatgegevens.