Skip to main content

UC-GEN-NOT-003 — Eenmalige systeemnotificatie verwerken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-GEN-NOT-003
NaamEenmalige systeemnotificatie verwerken
DomeinSysteemnotificaties
Primaire actorBezoeker of ingelogde gebruiker
Secundaire actor(en)Systeem, frontendschil, systeemnotificatieservice, cookie-/browsercomponent, doelgroep-/rolcontextservice
RolcontextPubliek, ingelogd zonder rol, Leerling, Ouder/voogd, Docent of Beheerder, afhankelijk van de doelgroep van de systeemnotificatie
Betrokken schermenFrontpage / applicatieschil; alle contexten waarin systeemnotificaties boven de reeds geladen pagina kunnen worden getoond
Gerelateerde usecasesUC-GEN-NOT-001 — Systeemnotificatie tonen; UC-GEN-NOT-002 — Systeemnotificatie sluiten
Primaire entiteitenSystemNotifications, browserwaarde/cookie voor OncePerBrowser
Secundaire entiteiten / eventsdoelgroepcontext, rolcontext, frontpagecontext, SystemNotificationOncePerBrowserEvaluated, SystemNotificationOncePerBrowserSkipped, SystemNotificationOncePerBrowserEligible
Gerelateerde popupsGeen popupregisterverwijzing; systeemnotificaties zijn geen popupregister-popups
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust have

2. Omschrijving

De applicatie beoordeelt of een systeemnotificatie met weergaveregel OncePerBrowser in de actuele browser nog getoond mag worden. Deze beoordeling vindt plaats tijdens de initiële notificatiecontrole na het laden van de frontpage en tijdens de vervolgcontrole nadat een eerder getoonde systeemnotificatie is gesloten.

OncePerBrowser betekent dat de notificatie in dezelfde browser slechts één keer wordt getoond. De toepassing hiervan gebeurt clientside via een cookie of vergelijkbare browserwaarde waarin minimaal wordt vastgelegd dat de betreffende systeemnotificatie-id in deze browser al is afgehandeld. Er wordt hiervoor geen server-side gebruikersgebonden gezienregistratie bijgehouden.

De browserwaarde is ondersteunend voor weergavegedrag en is geen tweede bron van waarheid voor de notificatie zelf. De persistente bron blijft SystemNotifications met inhoud, doelgroep, startmoment, eindmoment en DisplayRule. Wanneer een notificatiebeheerder dezelfde bestaande notificatie later inhoudelijk wijzigt, doorbreekt dat de bestaande browserregistratie niet automatisch. Als de beheerder gewijzigde of belangrijkere informatie opnieuw zichtbaar wil maken aan browsers die de eerdere notificatie al hebben gezien, moet daarvoor een nieuwe systeemnotificatie worden gepubliceerd.

Deze usecase beschrijft de beoordeling en toepassing van de eenmaligheidsregel. Het daadwerkelijk tonen van een geschikte notificatie valt onder UC-GEN-NOT-001. Het sluiten van een zichtbare notificatie en het schrijven van de browsermarker valt onder UC-GEN-NOT-002.

3. Scope

Deze usecase beschrijft:

  • het herkennen van systeemnotificaties met DisplayRule = OncePerBrowser;
  • het uitlezen van de browserwaarde/cookie waarin eerder getoonde eenmalige notificaties worden gemarkeerd;
  • het bepalen of een eenmalige notificatie in deze browser nog getoond mag worden;
  • het overslaan van een eenmalige notificatie wanneer de notificatie-id al als afgehandeld gemarkeerd is;
  • het veilig omgaan met ontbrekende, lege, corrupte of niet-toegankelijke browseropslag;
  • het borgen dat de browserwaarde geen persoonsgegevens, rollen, tokens, secrets of autorisatiegegevens bevat;
  • het borgen dat wijzigingen aan dezelfde bestaande systeemnotificatie de bestaande browsermarker niet automatisch ongeldig maken;
  • het onderscheiden van OncePerBrowser ten opzichte van Always;
  • het bepalen dat browsermarkers geen server-side gebruikersgebonden logging vervangen of creëren;
  • requirement-afleiding voor de eenmaligheidsregel.

Deze usecase beschrijft niet:

  • het tonen van de systeemnotificatie zelf;
  • het sluiten van een systeemnotificatie;
  • het schrijven van de browsermarker na sluiten;
  • het beheren, aanmaken, wijzigen, plannen, beëindigen of opnieuw publiceren van systeemnotificaties;
  • systeemberichten in het berichtenoverzicht;
  • popups uit het popupregister;
  • frontpagecontentbeheer;
  • gebruikersvoorkeuren;
  • toegankelijkheidsinstellingen;
  • server-side registratie per gebruiker dat een notificatie gezien is.

4. Pre-condities

IDVoorwaarde
PRE-001De frontpage of applicatiecontext is geladen of bezig met een notificatiecontrole boven de reeds geladen pagina.
PRE-002De systeemnotificatieservice heeft één of meer kandidaatnotificaties gevonden die op basis van tijdvenster en doelgroep beoordeeld moeten worden.
PRE-003Van iedere kandidaatnotificatie is minimaal SystemNotifications.Id, DisplayRule, StartAtUtc, optioneel EndAtUtc, doelgroep en aanmaakmoment beschikbaar.
PRE-004De applicatie kent minimaal de DisplayRule-waarden Always en OncePerBrowser.
PRE-005De frontend kan proberen de browserwaarde voor eenmalig tonen veilig uit te lezen.
PRE-006Wanneer de actor ingelogd is, is de actuele doelgroep-/rolcontext betrouwbaar bepaald voordat rolgebonden notificaties worden beoordeeld.
PRE-007Wanneer de actor niet ingelogd is, worden uitsluitend publieke of anderszins voor niet-ingelogde bezoekers toegestane notificaties beoordeeld.
PRE-008Browseropslag is ondersteunend en mag technisch ontbreken, geweigerd of ongeldig zijn zonder dat de frontpage faalt.

5. Post-condities

IDResultaat
POST-001Voor iedere beoordeelde OncePerBrowser-kandidaat is bepaald of deze in de actuele browser getoond mag worden of moet worden overgeslagen.
POST-002Een OncePerBrowser-notificatie waarvan de id al in de browserwaarde staat, wordt niet opnieuw als toonbare kandidaat aangeboden.
POST-003Een OncePerBrowser-notificatie zonder bestaande browsermarker kan als toonbare kandidaat doorgaan naar UC-GEN-NOT-001, mits ook de overige tijdvenster- en doelgroepregels kloppen.
POST-004Een notificatie met DisplayRule = Always wordt niet door deze eenmaligheidsregel geblokkeerd.
POST-005Er is geen server-side gebruikersgebonden gezienregistratie aangemaakt of gewijzigd.
POST-006Er is geen wijziging gedaan aan SystemNotifications.
POST-007Ontbrekende of ongeldige browseropslag heeft niet geleid tot een kale technische foutmelding voor de gebruiker.
POST-008De frontpage blijft bruikbaar, ongeacht de uitkomst van de browsermarkercontrole.

6. Trigger

Deze usecase start wanneer de systeemnotificatieservice tijdens een notificatiecontrole een kandidaatnotificatie met DisplayRule = OncePerBrowser beoordeelt. Dat kan gebeuren:

  • direct nadat de frontpage of applicatiecontext is geladen;
  • direct nadat een eerder getoonde systeemnotificatie is gesloten en de applicatie controleert of er een volgende notificatie getoond moet worden;
  • wanneer de frontendschil opnieuw een notificatiecontrole uitvoert na navigatie naar een context waarin systeemnotificaties mogen verschijnen.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1SysteemFrontpage / applicatieschilStart een systeemnotificatiecontrole.De notificatieservice verzamelt kandidaatnotificaties die qua tijdvenster en doelgroep potentieel relevant zijn.SystemNotifications; StartAtUtc; EndAtUtc; doelgroep.
2SysteemSysteemnotificatieserviceBeoordeelt de DisplayRule van de eerstvolgende kandidaat.Wanneer de kandidaat Always heeft, valt deze buiten de eenmaligheidscontrole. Wanneer de kandidaat OncePerBrowser heeft, gaat de beoordeling verder.DisplayRule.
3SysteemBrowsercomponentProbeert de browserwaarde voor eenmalig tonen uit te lezen.De browserwaarde wordt veilig gelezen of als niet beschikbaar behandeld.Cookie/browserwaarde met afgehandelde notificatie-id's.
4SysteemBrowsercomponentValideert de gelezen browserwaarde.Ongeldige of corrupte waarden worden niet als betrouwbare marker gebruikt en veilig genegeerd.Geen persoonsgegevens; geen autorisatiedata.
5SysteemBrowsercomponentControleert of de id van de kandidaatnotificatie al als afgehandeld gemarkeerd is.Bij een match wordt de kandidaat voor deze browser overgeslagen. Zonder match blijft de kandidaat toonbaar.SystemNotifications.Id.
6SysteemSysteemnotificatieserviceGeeft de uitkomst terug aan de toonselectie.De kandidaat krijgt status eligible of skipped binnen de runtimecontrole.Runtime-uitkomst; geen persistente status.
7SysteemSysteemnotificatieserviceSelecteert de eerstvolgende relevante kandidaat volgens de volgorderegel.Overgeslagen eenmalige notificaties doen niet mee; de oudste aangemaakte niet-overgeslagen relevante notificatie kan worden getoond.Volgorde op aanmaakmoment.
8SysteemFrontpage / applicatieschilLevert de toonbare kandidaat aan de notificatiecomponent.Wanneer een kandidaat overblijft, wordt UC-GEN-NOT-001 vervolgd om de notificatie te tonen.Geen datamutatie.
9SysteemFrontpage / applicatieschilRondt de beoordeling af wanneer geen kandidaat overblijft.Er wordt geen systeemnotificatie getoond; de frontpage blijft normaal bruikbaar.Geen datamutatie.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012Kandidaat heeft DisplayRule = Always.De kandidaat wordt niet door de OncePerBrowser-controle geblokkeerd en kan op basis van overige regels toonbaar blijven.Geen.Geen.
ALT-0022Kandidaat heeft een onbekende DisplayRule.De kandidaat wordt niet getoond; het systeem logt of registreert dit veilig voor beheer/diagnose.Geen technische foutdetails aan gebruiker.Geen.
ALT-0033Browseropslag is niet beschikbaar of wordt geweigerd.De eenmaligheidscontrole kan niet betrouwbaar worden uitgevoerd; de kandidaat mag worden behandeld alsof er geen bestaande marker is.Geen.Geen.
ALT-0044Browserwaarde is leeg.De kandidaatnotificatie is niet eerder gemarkeerd en kan toonbaar blijven.Geen.Geen.
ALT-0054Browserwaarde is corrupt of niet parsebaar.De waarde wordt genegeerd; de kandidaat mag worden behandeld alsof er geen betrouwbare marker is.Geen technische foutdetails aan gebruiker.Geen.
ALT-0065Kandidaat-id staat al in de browserwaarde.De kandidaat wordt voor deze browser overgeslagen.Geen.Geen.
ALT-0075Kandidaat-id staat niet in de browserwaarde.De kandidaat blijft toonbaar en kan door naar de normale toonselectie.Geen.Geen.
ALT-0085Browserwaarde bevat id's van notificaties die niet meer bestaan.Deze markers blijven onschadelijk; zij worden niet als server-side waarheid gebruikt. Opschonen is optioneel technisch gedrag en geen functionele mutatie.Geen.Geen functioneel vereiste mutatie.
ALT-0095De inhoud van dezelfde bestaande notificatie is gewijzigd sinds de marker is geschreven.De bestaande marker blijft geldig; de notificatie wordt niet opnieuw getoond alleen omdat de inhoud is gewijzigd.Geen.Geen.
ALT-0105De browserwaarde is door de gebruiker gewist.De applicatie kan niet meer vaststellen dat de notificatie eerder is getoond; de notificatie kan opnieuw toonbaar zijn wanneer alle overige regels kloppen.Geen.Geen.
ALT-0116De doelgroepcontext verandert tijdens de beoordeling.De kandidaat wordt opnieuw beoordeeld of veilig niet getoond wanneer de context niet betrouwbaar is.Geen.Geen.
ALT-0127Alle OncePerBrowser-kandidaten zijn al gemarkeerd.Er wordt geen eenmalige notificatie getoond; eventueel kan een andere Always-kandidaat nog geselecteerd worden.Geen.Geen.
ALT-0137Meerdere eenmalige kandidaten zijn nog niet gemarkeerd.De oudste aangemaakte relevante kandidaat wordt als eerste aangeboden voor tonen.Geen.Geen.
ALT-0148De kandidaat wordt getoond maar niet gesloten.Er wordt nog geen browsermarker geschreven; de marker hoort bij sluiten of expliciete afhandeling volgens UC-GEN-NOT-002.Geen.Geen binnen deze usecase.

9. Business rules

IDRegel
BR-UC-GEN-NOT-003-001OncePerBrowser wordt clientside afgedwongen via een cookie of vergelijkbare browserwaarde.
BR-UC-GEN-NOT-003-002De browserwaarde voor OncePerBrowser bevat minimaal de id van de systeemnotificatie die in deze browser al is afgehandeld.
BR-UC-GEN-NOT-003-003De browserwaarde mag geen persoonsgegevens, rollen, tokens, secrets, sessie-informatie of autorisatiegegevens bevatten.
BR-UC-GEN-NOT-003-004Voor OncePerBrowser wordt geen server-side gebruikersgebonden gezienregistratie bijgehouden.
BR-UC-GEN-NOT-003-005Een OncePerBrowser-notificatie waarvan de id al in de browserwaarde staat, wordt in dezelfde browser niet opnieuw getoond.
BR-UC-GEN-NOT-003-006Wijzigingen aan de inhoud van dezelfde bestaande notificatie maken een bestaande OncePerBrowser-browsermarker niet automatisch ongeldig.
BR-UC-GEN-NOT-003-007Wanneer beheer gewijzigde of belangrijkere informatie opnieuw zichtbaar wil maken ondanks bestaande browsermarkers, moet een nieuwe systeemnotificatie worden gepubliceerd.
BR-UC-GEN-NOT-003-008Het wissen van cookies of browseropslag door de gebruiker kan ertoe leiden dat een eenmalige notificatie opnieuw toonbaar wordt.
BR-UC-GEN-NOT-003-009Ontbrekende, geweigerde of corrupte browseropslag mag de frontpage niet blokkeren.
BR-UC-GEN-NOT-003-010Een ongeldige browsermarker mag nooit worden gebruikt om autorisatie, doelgroep of server-side status af te leiden.
BR-UC-GEN-NOT-003-011Always en OncePerBrowser zijn functioneel verschillende DisplayRule-waarden en mogen niet onderling worden geïnterpreteerd.
BR-UC-GEN-NOT-003-012Overlapping van meerdere systeemnotificaties blijft toegestaan; de OncePerBrowser-controle bepaalt alleen of individuele kandidaten in deze browser nog toonbaar zijn.
BR-UC-GEN-NOT-003-013De volgorde van toonbare notificaties blijft gebaseerd op de oudste aangemaakte relevante notificatie nadat niet-toonbare kandidaten zijn uitgesloten.
BR-UC-GEN-NOT-003-014Browsermarkers zijn ondersteunend voor gebruikerservaring en geen persistente brondata van het systeemnotificatiedomein.
BR-UC-GEN-NOT-003-015Het verwerken van een OncePerBrowser-marker maakt of wijzigt geen mailbox-systeembericht en geen popupregister-popup.

10. Datavalidatie

Veld / objectValidatie
SystemNotifications.IdMoet stabiel en uniek genoeg zijn om als veilige browsermarker te gebruiken.
SystemNotifications.DisplayRuleMoet binnen de bekende set vallen, minimaal Always of OncePerBrowser.
Browserwaarde/cookieMag alleen veilige compacte identificerende waarden bevatten voor afgehandelde notificaties.
Browserwaarde/cookieMag geen persoonsgegevens, rolgegevens, tokens, secrets, sessie-informatie of autorisatiegegevens bevatten.
Browserwaarde/cookieMoet veilig parsebaar zijn; ongeldige inhoud wordt genegeerd.
KandidaatnotificatieMoet nog steeds voldoen aan tijdvenster en doelgroep voordat een ontbrekende marker tot tonen mag leiden.
DoelgroepcontextMoet betrouwbaar zijn vastgesteld voordat een rolgebonden kandidaat als toonbaar wordt beschouwd.
Verouderde markerMag niet als server-side bewijs worden gebruikt en hoeft functioneel geen bestaand database-record meer te hebben.
Gewijzigde notificatieDe id blijft leidend; inhoudelijke wijziging van dezelfde id doorbreekt de marker niet.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
1ReadSystemNotificationsKandidaatnotificaties worden gelezen of hergebruikt uit de notificatiecontrole.
2ReadSystemNotifications.DisplayRuleDe weergaveregel van de kandidaat wordt beoordeeld.
3ReadBrowserwaarde/cookie voor OncePerBrowserDe browsermarker wordt clientside gelezen, voor zover beschikbaar.
4ValidatieBrowserwaarde/cookieDe marker wordt gevalideerd en veilig geïnterpreteerd.
5Read/filterRuntime-kandidatenlijstDe kandidaat wordt als toonbaar of overgeslagen gemarkeerd binnen de runtimecontrole.
6EventSystemNotificationOncePerBrowserEvaluatedDe eenmaligheidsregel is beoordeeld voor een kandidaat.
6EventSystemNotificationOncePerBrowserSkippedDe kandidaat is overgeslagen omdat deze al in de browser gemarkeerd was.
6EventSystemNotificationOncePerBrowserEligibleDe kandidaat is niet eerder gemarkeerd en kan door naar toonselectie.
ALT-002 / ALT-005Event / loggingVeilige foutafhandelingOnbekende displayrule of corrupte marker wordt veilig gelogd of genegeerd.

12. Geen datamutaties

EntiteitReden
SystemNotificationsDe eenmaligheidscontrole wijzigt notificatiecontent, planning, doelgroep of displayrule niet.
SystemMessagesSysteemnotificaties zijn geen mailbox-systeemberichten.
PrivateMessages / PrivateMessageThreadsDe flow hoort niet bij privéberichten.
UsersEr wordt geen gebruikersrecord aangepast.
UserSettingsEenmaligheid is geen gebruikersvoorkeur of profielinstelling.
ContentBlocksFrontpagecontent wordt niet aangepast.
PopupDetailsSysteemnotificaties gebruiken geen popupregister als inhoudelijke bron.
Server-side seen-logVoor OncePerBrowser wordt bewust geen server-side gebruikersgebonden gezienregistratie aangemaakt.
Rollen / autorisatiesDe browsermarker bepaalt geen autorisaties en wijzigt geen rolcontext.

13. State diagram

Niet opgenomen als persistente state diagram, omdat OncePerBrowser geen persistente status van SystemNotifications wijzigt. De functionele toestand bestaat uit runtime-beoordeling in combinatie met een clientside browsermarker. De beheerstatus van systeemnotificaties blijft afgeleid uit startmoment, eindmoment en beheerconfiguratie.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

16.1 Eenmalige notificatie zonder bestaande browsermarker

16.2 Eenmalige notificatie met bestaande browsermarker

16.3 Browsermarker ontbreekt of is ongeldig

17. Popupverwijzingen

PopupKeyGebruik
Niet van toepassingSysteemnotificaties worden niet via het popupregister beheerd en gebruiken geen PopupDetails-popup.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpBeschrijft dat OncePerBrowser een gebruikerservaringsregel is voor systeemnotificaties en geen mailbox-, profiel- of popupgedrag.
Functioneel OntwerpBeschrijft dat een bestaande browsermarker geldig blijft wanneer de inhoud van dezelfde notificatie later wordt gewijzigd.
Functioneel OntwerpBeschrijft dat opnieuw tonen na inhoudelijke wijziging alleen wordt bereikt door een nieuwe systeemnotificatie te publiceren.
Technisch OntwerpTechnisch Ontwerp: frontend, Blazor, routing, state en componentopbouw beschrijft hoe de browsermarker technisch wordt opgeslagen, gelezen, gevalideerd en veilig genegeerd bij fouten.
Technisch OntwerpTechnisch Ontwerp: frontend, Blazor, routing, state en componentopbouw beschrijft dat de marker uitsluitend veilige notificatie-identificatie bevat en geen persoonsgegevens, rollen, tokens of autorisatiegegevens.
Technisch OntwerpTechnisch Ontwerp: berichten, systeemberichten, notificaties en privéthreads beschrijft dat er geen server-side gebruikersgebonden gezienregistratie voor OncePerBrowser wordt bijgehouden.
Technisch OntwerpTechnisch Ontwerp: frontend, Blazor, routing, state en componentopbouw beschrijft fallbackgedrag wanneer browseropslag niet beschikbaar is of door de gebruiker is gewist.
Software Requirements SpecificationBevat requirements voor het eenmalig tonen per browser, inclusief markercontrole, veilige opslaginhoud, wijzigingsgedrag en foutafhandeling.
Database-informatieBevestig dat hiervoor geen extra database-entiteit voor gebruikersgebonden notificatie-readstate nodig is.

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-afleidingDektUsecasecontext
REQ-UC-GEN-NOT-003-001SRS-POP-005
AC-POP-005
Systeemnotificaties met DisplayRule = OncePerBrowser per browser kunnen beoordelen op basis van een clientside marker
REQ-UC-GEN-NOT-003-002SRS-POP-005
AC-POP-005
Een OncePerBrowser-notificatie niet opnieuw tonen wanneer de betreffende notificatie-id in dezelfde browser al als afgehandeld is gemarkeerd
REQ-UC-GEN-NOT-003-003SRS-POP-005
AC-POP-005
Een OncePerBrowser-notificatie zonder bestaande browsermarker als toonbare kandidaat kunnen behandelen, mits tijdvenster en doelgroep ook geldig zijn
REQ-UC-GEN-NOT-003-004SRS-AUTH-001
SRS-POP-005
SRS-NFR-SEC-001
SRS-NFR-PRV-001
AC-AUTH-001
AC-POP-005
AC-NFR-SEC-001
AC-NFR-PRV-001
De browsermarker voor OncePerBrowser mag geen persoonsgegevens, rollen, tokens, secrets, sessie-informatie of autorisatiegegevens bevatten
REQ-UC-GEN-NOT-003-005SRS-AUTH-001
SRS-POP-005
AC-AUTH-001
AC-POP-005
Voor OncePerBrowser geen server-side gebruikersgebonden gezienregistratie bijhouden
REQ-UC-GEN-NOT-003-006SRS-AUTH-001
SRS-NFR-SEC-001
AC-AUTH-001
AC-NFR-SEC-001
Ontbrekende, geweigerde, lege of corrupte browseropslag veilig kunnen afhandelen zonder de frontpage te blokkeren
REQ-UC-GEN-NOT-003-007SRS-POP-005
AC-POP-005
Wijzigingen aan de inhoud van dezelfde bestaande systeemnotificatie mogen een bestaande OncePerBrowser-browsermarker niet automatisch ongeldig maken
REQ-UC-GEN-NOT-003-008SRS-ADM-001
SRS-POP-002
AC-ADM-001
AC-POP-002
Wanneer beheer een gewijzigde boodschap opnieuw zichtbaar wil maken aan browsers met een bestaande marker, moet dit via een nieuwe systeemnotificatie kunnen worden opgelost
REQ-UC-GEN-NOT-003-009SRS-POP-005
AC-POP-005
Always en OncePerBrowser als afzonderlijke weergaveregels behandelen
REQ-UC-GEN-NOT-003-010SRS-POP-001
AC-POP-001
De eenmaligheidscontrole mag geen wijzigingen aanbrengen in SystemNotifications, SystemMessages, Users, UserSettings of PopupDetails