UC-BEH-FEAT-008 — Systeemnotificatie-weergaveregel toepassen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-FEAT-008 |
| Naam | Systeemnotificatie-weergaveregel toepassen |
| Domein | Beheerder / Features en systeemnotificaties |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, database, autorisatiecomponent, beheerlogcomponent |
| Rolcontext | Actieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Site Instellingen > Features > tab Systeemnotificaties |
| Gerelateerde usecases | UC-BEH-FEAT-003, UC-BEH-FEAT-004, UC-BEH-FEAT-005, UC-GEN-NOT-001, UC-GEN-NOT-003 |
| Primaire entiteiten | SiteNotifications, SiteNotificationHistory, Users |
| Secundaire entiteiten / events | SiteNotificationChanged |
| Gerelateerde popups | POP-BEH-NOT-DISPLAYRULE-INFO, POP-BEH-NOT-SAVED, POP-BEH-NOT-SAVE-FAILED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft de functionele betekenis van de weergaveregel van een systeemnotificatie binnen beheer. De beheerder kiest tussen DisplayRule Always en OncePerBrowser. De gekozen regel bepaalt hoe de generieke gebruikersweergave de notificatie beoordeelt na het laden van de frontpage.
De mutatie blijft beperkt tot SiteNotifications en de bijbehorende notificatiehistorie. De gebruikersgerichte verwerking blijft bronhoudend in de generieke systeemnotificatie-usecases.
Alle datum- en statusafleidingen gebruiken UTC als technische bron en lokale tijd uitsluitend voor presentatie.
Uitgangspunten
- Systeemnotificaties zijn geen mailbox-systeemberichten.
- Systeemnotificaties zijn geen popupregister-popups.
- Er bestaat geen server-side per-gebruiker-seentabel.
- De beheerdercontext wordt bij iedere mutatie opnieuw server-side gecontroleerd.
3. Scope
Deze usecase beschrijft:
- Kiezen van
DisplayRulebij het aanmaken van een systeemnotificatie. - Wijzigen van
DisplayRulebij een bestaande systeemnotificatie. - Valideren dat alleen
AlwaysenOncePerBrowserzijn toegestaan. - Vastleggen van de gekozen weergaveregel op
SiteNotifications. - Auditbaar vastleggen van wijzigingen in
SiteNotificationHistory. - Functioneel uitleggen dat
OncePerBrowserclientside via een browserwaarde op notificatie-id wordt afgedwongen.
Deze usecase beschrijft niet:
- Eindgebruikersweergave van de notificatie.
- Aanmaken van mailbox-systeemberichten.
- Aanmaken of wijzigen van popupdefinities.
- Vrij beheren van enumwaarden.
- Server-side gebruikersseenstatus opslaan.
3.1 Afbakening met aangrenzende usecases
| Onderdeel | Afbakening |
|---|---|
| UC-BEH-FEAT-004 | Past de gekozen displayregel toe bij aanmaak van een nieuwe notificatie. |
| UC-BEH-FEAT-005 | Past een wijziging van displayregel toe bij een bestaande notificatie. |
| UC-GEN-NOT-001 | Gebruikt de opgeslagen displayregel bij het bepalen of een notificatie getoond wordt. |
| UC-GEN-NOT-003 | Verwerkt OncePerBrowser aan gebruikerszijde via browserwaarde. |
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd in OefenHub. |
| PRE-002 | De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft. |
| PRE-003 | De Site Instellingen-route is beschikbaar via de beheerdernavigatie. |
| PRE-004 | Clientstate, querystringwaarden of zichtbare UI-elementen bepalen niet zelfstandig de autorisatie. |
| PRE-005 | De beheerder werkt binnen de aanmaak- of wijzigflow van een systeemnotificatie. |
| PRE-006 | De toegestane DisplayRule-sleutelset is server-side beschikbaar. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De gekozen displayregel is opgeslagen wanneer de aanmaak- of wijzigmutatie geldig is. |
| POST-002 | Bij wijziging van een bestaande notificatie bevat SiteNotificationHistory de oude en nieuwe displayregel. |
| POST-003 | De generieke notificatiecomponent kan de opgeslagen displayregel toepassen bij gebruikersweergave. |
| POST-004 | Er is geen server-side seenstatus aangemaakt. |
| POST-005 | Er is geen mailboxbericht of popupdefinitie aangemaakt. |
6. Trigger
De usecase start wanneer de beheerder bij het aanmaken of wijzigen van een systeemnotificatie de weergaveregel kiest of aanpast.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | Systeemnotificaties-tab | Kiest Always of OncePerBrowser. | De frontend toont toelichting op de betekenis van de gekozen regel. | Gesloten sleutelset. |
| 2 | Frontend | Detailpaneel | Stuurt de gekozen displayregel mee met aanmaak of wijziging. | De backend ontvangt de waarde als onderdeel van de notificatiemutatie. | DisplayRule. |
| 3 | Backend | Autorisatiecomponent | Controleert beheerdercontext opnieuw. | Bij ontbreken van rechten wordt de mutatie geweigerd. | Server-side autorisatie. |
| 4 | Backend | Validatie | Controleert dat de displayregel een toegestane waarde heeft. | Ongeldige waarden worden geweigerd. | Always, OncePerBrowser. |
| 5 | Backend | Database-transactie | Slaat de gekozen displayregel op bij SiteNotifications. | De wijziging wordt atomair verwerkt. | Aanmaak- of wijzigtransactie. |
| 6 | Backend | Historie | Schrijft waar relevant oude en nieuwe displayregel naar SiteNotificationHistory. | De keuze is achteraf reconstrueerbaar. | Audit. |
| 7 | Frontend | Overzicht | Toont de actuele displayregel. | De beheerder ziet de opgeslagen keuze. | Readmodel. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | Notificatie bestaat niet meer. | De backend blokkeert de actie en ververst het overzicht. | Foutpopup. | Geen. |
| ALT-002 | 3 | Beheerdercontext is vervallen. | De backend weigert de mutatie. | Foutpopup. | Geen. |
| ALT-003 | 4 | Veldvalidatie faalt. | De wijziging wordt niet opgeslagen en de beheerder krijgt veldgerichte terugkoppeling. | Foutpopup. | Geen. |
| ALT-004 | 5 | Opslaan of history schrijven faalt. | De transactie wordt teruggedraaid. | Foutpopup. | Geen gedeeltelijke mutatie. |
| ALT-005 | 4 | Beheerder verwacht opnieuw tonen na inhoudelijke wijziging. | De beheerinterface moet functioneel duidelijk maken dat een nieuwe notificatie nodig is wanneer bestaande browsermarkers opnieuw tonen blokkeren. | POP-BEH-NOT-DISPLAYRULE-INFO. | Geen extra mutatie. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-001 | Een wijziging aan een notificatie doorbreekt een bestaande OncePerBrowser-browsermarker niet automatisch. |
| BR-002 | Een notificatie blijft een eigen beheerdomein en veroorzaakt geen SystemMessage. |
| BR-003 | EndAtUtc null betekent geen geplande einddatum. |
| BR-004 | Afgeleide statussen worden niet als permanente statuskolom behandeld. |
| BR-005 | Oude en nieuwe veldwaarden worden auditbaar vastgelegd. |
| BR-006 | DisplayRule Always wordt niet permanent als gezien geregistreerd. |
| BR-007 | DisplayRule OncePerBrowser gebruikt een browsermarker op notificatie-id en geen server-side seentabel. |
| BR-008 | Wijziging van een bestaande notificatie doorbreekt een bestaande browsermarker niet automatisch. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-001 | Title blijft maximaal 50 tekens. |
| VAL-002 | BodyText blijft maximaal 1000 tekens. |
| VAL-003 | AudienceType, NotificationType en DisplayRule blijven gesloten sleutelsets. |
| VAL-004 | EndAtUtc mag niet vóór StartAtUtc liggen. |
| VAL-005 | Datum/tijd wordt technisch in UTC opgeslagen. |
| VAL-006 | De geselecteerde notificatie moet bestaan en wijzigbaar zijn vanuit de betreffende tab. |
11. Datamutaties en events
| ID | Mutatie / event | Toelichting |
|---|---|---|
| MUT-001 | SiteNotifications insert/update | De gekozen DisplayRule wordt opgeslagen als onderdeel van aanmaak of wijziging. |
| MUT-002 | SiteNotificationHistory insert | Bij wijziging van een bestaande notificatie worden oude en nieuwe waarde plus actor en tijdstip vastgelegd. |
| MUT-003 | SiteNotificationChanged event | Bij wijziging van een bestaande notificatie kan de beheerhistorie of het readmodel worden ververst. |
12. Geen datamutaties
| ID | Geen mutatie | Reden |
|---|---|---|
| NO-001 | SystemMessages | Er ontstaat geen mailbox-systeembericht. |
| NO-002 | PopupDetails | Er wordt geen popupdefinitie aangemaakt of gewijzigd. |
| NO-003 | Gebruikersseenstatus | Er wordt geen server-side seenrecord aangemaakt. |
| NO-004 | Browsermarkers | Beheer wijzigt bestaande browsermarkers van gebruikers niet. |
| NO-005 | Andere notificaties | Andere records blijven ongewijzigd. |
13. State diagram
Niet van toepassing. DisplayRule is geen zelfstandig statusmodel. De waarde wordt als eigenschap van SiteNotifications opgeslagen en door de generieke systeemnotificatieflows toegepast bij gebruikersweergave.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
Deze usecase verwijst uitsluitend naar PopupKey. Popupteksten, knopteksten, inputlabels en themakeuzes blijven bronhoudend in het popupregister en popup-themes.
| PopupKey | Gebruik |
|---|---|
| POP-BEH-NOT-DISPLAYRULE-INFO | Zie popupregister voor tekst en knoppen. |
| POP-BEH-NOT-SAVED | Zie popupregister voor tekst en knoppen. |
| POP-BEH-NOT-SAVE-FAILED | Zie popupregister voor tekst en knoppen. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Document | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft Always en OncePerBrowser als beheerbare weergaveregels voor systeemnotificaties. |
| Technisch Ontwerp | Technisch Ontwerp: communicatie en systeemnotificaties, readmodels en badges en frontendstate beschrijven de technische uitwerking. Vraagt enumvalidatie, opslag op SiteNotifications en toepassing door de generieke notificatiecomponent. |
| Software Requirements Specification | Levert eisen voor browsergebaseerde eenmalige weergave, geen server-side seen-tabel en audit bij wijziging. |
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 |
|---|---|---|
UC-BEH-FEAT-008-REQ-001 | SRS-ADM-001 SRS-POP-005 AC-ADM-001 AC-POP-005 | Uitsluitend DisplayRule-waarden Always en OncePerBrowser accepteren |
UC-BEH-FEAT-008-REQ-002 | SRS-AUTH-001 SRS-ADM-001 SRS-POP-005 AC-AUTH-001 AC-ADM-001 AC-POP-005 | Beheer duidelijk maken dat OncePerBrowser clientside werkt en niet gebruikersgebonden server-side |
UC-BEH-FEAT-008-REQ-003 | SRS-ADM-001 SRS-NFR-AUD-001 AC-ADM-001 AC-NFR-AUD-001 | Een wijziging van displayregel auditbaar vastleggen |
UC-BEH-FEAT-008-REQ-004 | SRS-AUTH-001 SRS-ADM-001 AC-AUTH-001 AC-ADM-001 | Geen server-side seenstatus per gebruiker aanmaken |
UC-BEH-FEAT-008-REQ-005 | SRS-ADM-001 SRS-POP-002 AC-ADM-001 AC-POP-002 | Bestaande browsermarkers niet automatisch doorbreken wanneer een bestaande notificatie wordt gewijzigd |
UC-BEH-FEAT-008-REQ-006 | SRS-ADM-001 SRS-POP-002 AC-ADM-001 AC-POP-002 | De generieke notificatiecomponent de opgeslagen displayregel laten toepassen bij gebruikersweergave |