UC-DOC-FP-005 — Gecombineerde docent-ouder-frontpage tonen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-FP-005 |
| Naam | Gecombineerde docent-ouder-frontpage tonen |
| Domein | Docent / Frontpage en context |
| Primaire actor | Gebruiker met rol Docent en Ouder/voogd |
| Secundaire actor(en) | OefenHub frontend, OefenHub backend, routeguard, contextresolver, database, frontpage-readmodel |
| Rolcontext | Ingelogde gebruiker met actieve rollen Docent en Ouder/voogd, zonder rol Leerling. |
| Betrokken schermen | Gecombineerde frontpage, docentfrontpageblokken, ouder-/voogdfrontpageblokken, profielmenu. |
| Gerelateerde usecases | UC-DOC-FP-001 — Docent-frontpage bekijken; UC-DOC-FP-002 — Docentcontext bepalen; UC-DOC-FP-003 — Leerlingenoverzichtsamenvatting tonen; UC-DOC-FP-004 — Niveaus- en inhoudsamenvatting tonen; ouder-/voogdfrontpage-usecases |
| Primaire entiteiten | Users, UserRoles, Roles, UserSettings, UserRelationships, TeacherLevels, ExerciseRuns |
| Secundaire entiteiten / events | gecombineerd frontpage-readmodel, rolprioriteitsregels, gescheiden docent- en ouder-/voogdcontext |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe OefenHub de frontpage samenstelt voor een gebruiker die zowel docent als ouder/voogd is. De gebruiker krijgt geen twee losse startpagina’s, maar één gecombineerde frontpage met één gezamenlijk introblok.
Binnen die gecombineerde frontpage worden eerst de docentblokken getoond en daarna de ouder-/voogdblokken. De volgorde is functioneel vast en wordt niet door de gebruiker omgedraaid of vrij geconfigureerd.
De usecase dupliceert geen ouder-/voogdfunctionaliteit. Zij beschrijft alleen de samenstelling, scheiding en prioriteit van de gecombineerde frontpage. Detailroutes voor kinderen, resultaten, leerlingen, oefenaanbod en live meekijken blijven bij hun eigen domeinflows.
3. Scope
Deze usecase omvat wel:
- bepalen dat de gebruiker zowel Docent als Ouder/voogd is
- samenstellen van één gezamenlijke frontpage met één introblok
- plaatsen van docentblokken vóór ouder-/voogdblokken
- scheiden van docentcontext en ouder-/voogdcontext in de getoonde gegevens
- voorkomen dat acties of tellers uit beide contexten door elkaar lopen
- doorverwijzen naar de reguliere contextspecifieke routes
Deze usecase omvat niet:
- wijzigen van niveaukerngegevens, categorieën of oefeningen
- toekennen of intrekken van niveau-autorisaties
- openen van volledige leerlinggeschiedenis of resultaatdetails
- starten van live meekijken of het tonen van live voortgang
- beheer van relaties of uitnodigingen tussen docent en leerling
- beheer van ouder-/voogdfunctionaliteit buiten de gecombineerde frontpageweergave
- uitwerken van systeemnotificaties; die lopen via de generieke notificatie-usecases
DRY-afbakening: deze usecase beschrijft alleen de docent-frontpage- of contextlaag. De bronwaarheid voor leerlingenbeheer, oefenaanbodbeheer, live meekijken, relaties, profielinstellingen en systeemnotificaties blijft bij de daarvoor bedoelde usecases en ontwerpbronnen.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd. |
| PRE-002 | De gebruiker heeft actieve rollen Docent en Ouder/voogd. |
| PRE-003 | De gebruiker heeft geen rol Leerling. |
| PRE-004 | De backend kan beide rolcontexten server-side bepalen. |
| PRE-005 | De vaste prioriteitsregels voor gecombineerde frontpages zijn beschikbaar. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De gebruiker ziet één gecombineerde frontpage met één gezamenlijk introblok. |
| POST-002 | Docentblokken worden vóór ouder-/voogdblokken getoond. |
| POST-003 | Gegevens uit docentcontext en ouder-/voogdcontext blijven functioneel gescheiden. |
| POST-004 | Er is geen aparte frontpagevariant per rolcombinatie als persistente bron aangemaakt. |
| POST-005 | Vervolgacties verlopen via de reguliere routes van de betreffende rolcontext. |
6. Trigger
De usecase start wanneer een gebruiker met zowel Docent als Ouder/voogd na login of navigatie een frontpageweergave nodig heeft.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | OefenHub frontend | Routeguard | Vraagt de frontpagecontext op. | Backend ontvangt sessiecontext. | Clientstate is niet leidend. |
| 2 | OefenHub backend | Rolcontext | Laadt actieve rollen. | Docent en Ouder/voogd worden herkend. | Leerling mag niet gecombineerd zijn. |
| 3 | OefenHub backend | Prioriteitsregels | Past vaste frontpagevolgorde toe. | Docentblokken komen vóór ouder-/voogdblokken. | Bij aanwezigheid van Beheerder gelden bredere prioriteitsregels. |
| 4 | OefenHub backend | Frontpage readmodel | Stelt gezamenlijk introblok samen. | Er wordt geen tweede introblok per rol getoond. | Runtime-samenstelling, geen aparte combinatiebron. |
| 5 | OefenHub backend | Docent readmodel | Stelt docentblokken samen. | Leerlingenoverzicht en niveaus & inhoud worden in docentcontext gevuld. | UC-DOC-FP-003 en UC-DOC-FP-004. |
| 6 | OefenHub backend | Ouder-/voogd readmodel | Stelt ouder-/voogdblokken samen. | Kinderen- en resultatencontext blijven ouder-/voogdspecifiek. | Geen docentcontextmenging. |
| 7 | OefenHub frontend | Gecombineerde frontpage | Rendert de pagina in vaste volgorde. | Gebruiker ziet eerst docentblokken, daarna ouder-/voogdblokken. | Geen datamutatie. |
| 8 | Gebruiker | Gecombineerde frontpage | Kiest eventueel een vervolgroute. | Systeem opent route in de juiste rolcontext. | Vervolgusecase buiten deze usecase. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Gebruiker heeft ook Beheerderrol | Bredere prioriteit geldt: beheerderblokken vóór docentblokken vóór ouder-/voogdblokken. | Niet van toepassing | Geen |
| ALT-002 | 2 | Gebruiker heeft onverwacht ook Leerlingrol | Systeem behandelt dit als inconsistente rolcontext volgens account-/autorisatieregels. | Routeguard/toegangafhandeling | Geen |
| ALT-003 | 5 | Docentcontext heeft geen leerlingen of niveaus | Docentblokken tonen veilige lege staat, ouder-/voogdblokken blijven beschikbaar. | Componentmelding / lege staat | Geen |
| ALT-004 | 6 | Ouder-/voogdcontext heeft geen gekoppelde kinderen | Ouder-/voogdblokken tonen veilige lege staat, docentblokken blijven beschikbaar. | Componentmelding / lege staat | Geen |
| ALT-005 | 8 | Vervolgroute hoort bij verkeerde rolcontext | Routeguard blokkeert of corrigeert naar de juiste context. | Routeguard/toegangafhandeling | Geen |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | De docent-frontpage is een overzichts- en oriëntatiepagina en geen beheer- of mutatiepagina. |
| BR-002 | Contextafhankelijke acties waarvoor eerst een leerling, niveau, categorie of oefening gekozen moet worden, starten niet als losse generieke frontpageactie. |
| BR-003 | Alle getoonde aantallen en samenvattingen worden server-side afgeleid uit bestaande brondata. |
| BR-004 | Clientstate, routeparameters of oude browsercontext mogen niet bepalen welke docentcontext actief is. |
| BR-005 | Systeemnotificaties blokkeren het laden van de frontpage niet en worden pas na normale weergave gecontroleerd. |
| BR-006 | De frontpage introduceert geen aparte frontpagecache als bron van waarheid. |
| BR-007 | Een gebruiker met de rol Leerling kan niet tegelijk docent zijn binnen dezelfde accountcontext. |
| BR-008 | Docent- en ouder-/voogdcontext mogen wel gecombineerd voorkomen en worden volgens vaste prioriteit samengesteld. |
| BR-009 | De specifieke flow UC-DOC-FP-005 mag alleen gegevens tonen of bepalen die binnen de actuele docent- of gecombineerde rolcontext vallen. |
| BR-010 | Lege staten mogen functioneel informatief zijn, maar mogen geen automatische domeinmutaties starten. |
| BR-011 | Vervolgacties vanaf de frontpage moeten opnieuw server-side worden gevalideerd op de doelroute. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Sessiegebruiker | Moet server-side bekend, ingelogd en actief zijn. |
| Rolcontext | Moet worden afgeleid uit actieve UserRoles en Roles. |
| Docentcontext | Mag alleen actief zijn wanneer de gebruiker de actieve rol Docent bezit. |
| Clientstate | Mag alleen ondersteunend zijn en nooit als autorisatiebron gelden. |
| Samenvattingswaarden | Moeten een eenduidige definitie hebben van bronrecords, statusvoorwaarden en contextfilters. |
| Frontpageweergave | Mag geen gegevens tonen buiten de actuele docent- of gecombineerde rolcontext. |
| Docentfrontpageblok | Moet alleen informatie tonen die als compacte samenvatting is toegestaan. |
| Vervolgroute | Moet opnieuw via routeguard en autorisatielaag worden gecontroleerd. |
| Lege staat | Moet duidelijk zijn en mag geen gegevens uit andere contexten tonen. |
11. Datamutaties en events
Deze usecase stelt een gecombineerde frontpage runtime samen. Er wordt geen aparte frontpagevariant per rolcombinatie opgeslagen en er worden geen docent- of ouder-/voogdrecords gewijzigd.
| Onderdeel | Gedrag |
|---|---|
| Rolcombinatie | Wordt server-side gelezen uit actieve rollen van dezelfde gebruiker. |
| Prioriteitsvolgorde | Wordt runtime toegepast: bij Docent + Ouder/voogd eerst docentblokken, daarna ouder-/voogdblokken; met Beheerder eerst beheerderblokken. |
| Gezamenlijk introblok | Wordt als presentatieonderdeel samengesteld en niet als aparte combinatie-entiteit opgeslagen. |
| Gescheiden contexten | Docentdata en ouder-/voogddata blijven afzonderlijk gefilterd en autoriseerbaar. |
| Domeinevents | Niet van toepassing; gecombineerde frontpageopbouw is readmodel- en presentatielogica. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
Users | De frontpage- of contextflow wijzigt geen accountgegevens. |
UserRoles | Rollen worden gelezen maar niet toegekend of ingetrokken. |
Roles | Roldefinities worden gelezen maar niet gewijzigd. |
UserRelationships | Relaties worden hoogstens gelezen voor context of samenvatting. |
TeacherLevels | Niveaus worden gelezen of geteld, maar niet aangemaakt of gewijzigd. |
TeacherLevelCategories | Categorie-koppelingen worden gelezen of geteld, maar niet aangepast. |
Exercises | Oefeningen worden gelezen of geteld, maar niet geconfigureerd. |
TeacherStudentAuthorizations | Autorisaties worden gelezen of geteld, maar niet aangepast. |
SystemMessages | Deze usecase maakt geen systeemberichten aan. |
SystemNotifications | Systeemnotificaties worden niet door deze usecase gemuteerd. |
13. State diagram
Niet van toepassing als statusdiagram. De gecombineerde frontpage wijzigt geen persistente rol-, context- of frontpagestatus.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Frontpage- of contextweergave
16.2 Vervolgroute vanaf frontpage
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Gehele usecase | Deze frontpage- en contextafhandeling gebruikt routeguardgedrag, componentmeldingen, lege staten en bestaande generieke flows; er is geen domeinspecifieke popupregister-popup. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft de gecombineerde docent-ouder-frontpage als runtime-samenstelling met één gezamenlijk introblok en vaste blokvolgorde. |
| Technisch Ontwerp | Technisch Ontwerp: technische rolflows, readmodels en tellers en frontendcompositie beschrijven de technische uitwerking. Beschrijft dat gecombineerde frontpages geen persistente combinatievarianten zijn en dat docent- en ouder-/voogdreadmodels gescheiden blijven. |
| Software Requirements Specification | Beschrijft requirements voor vaste prioriteit, gescheiden contextfilters, geen leerlingrolcombinatie en hernieuwde routeguardcontrole per vervolgroute. |
| Database-informatie | Beschrijft dat actieve rollen en bestaande brondata voldoende zijn voor runtime-samenstelling zonder aparte combinatietabel. |
| Ontwerpbronnen/registers | Verwerk business rules, autorisatiematrix en usecase-matrices; command- en eventregisters hoeven voor deze read-only flow niet te worden uitgebreid. |
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-FP-005-001 | SRS-AUTH-003 SRS-TCH-001 SRS-GUA-001 AC-AUTH-003 AC-TCH-001 AC-GUA-001 | Voor gebruikers met Docent en Ouder/voogd één gecombineerde frontpage tonen |
REQ-UC-DOC-FP-005-002 | SRS-AUTH-003 SRS-TCH-001 AC-AUTH-003 AC-TCH-001 | In de gecombineerde frontpage één gezamenlijk introblok tonen |
REQ-UC-DOC-FP-005-003 | SRS-TCH-001 SRS-GUA-001 AC-TCH-001 AC-GUA-001 | Docentblokken vóór ouder-/voogdblokken tonen |
REQ-UC-DOC-FP-005-004 | SRS-TCH-001 SRS-GUA-001 AC-TCH-001 AC-GUA-001 | Gegevens uit docentcontext en ouder-/voogdcontext functioneel gescheiden houden |
REQ-UC-DOC-FP-005-005 | SRS-TCH-001 AC-TCH-001 | Geen afzonderlijke persistente frontpagevariant per rolcombinatie vereisen |
REQ-UC-DOC-FP-005-006 | SRS-AUTH-001 SRS-TCH-001 AC-AUTH-001 AC-TCH-001 | Vervolgacties via de juiste rolcontext en routeguard laten verlopen |