8. Site instellingen - Systeemberichten
8.1 Schermafbeelding

8.2 Scherm meta data
| Veld | Waarde |
|---|---|
| Scherm-ID | SCH-BEH-07-01 |
| Schermnaam | Site instellingen — Systeemberichten |
| Doelgroep / onderdeel | Beheerder / Site instellingen |
| Bronbestand | oefenhub_beheerder_07_sys_03_systeemberichten_V1_4.html |
| Mockupversie | V1.4 |
| Screenshotbestand | oefenhub_beheerder_07_sys_03_systeemberichten_v1_4.png |
| Processtap / context | Beheerder opent binnen Site instellingen de beheerpagina voor bestaande systeemberichtsjablonen. De pagina combineert links zoeken, filteren en selecteren met rechts detailbewerking, actieknopconfiguratie en geschiedenis van het geselecteerde sjabloon. |
| Documentatiestatus | Uitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende database-informatie. |
| Opmerkingen | Header, beheerdernavigatie, berichteningang, profielmenu en footer vallen buiten scope van dit schermdocument. Alle zichtbare referenties, aantallen, onderwerpteksten, berichtteksten, geschiedenisregels, namen en datums in de mockup zijn voorbeelddata. |
| Route / URL-patroon | Functioneel routepatroon: beheer/site-instellingen/systeemberichten. De technische route wordt door de applicatieroutering bepaald. |
| Autorisatie / vereiste rol-context | Actieve beheerdercontext. Toegang en opslag moeten server-side worden beperkt tot gebruikers met beheerrechten voor Site instellingen. |
| Primair domeinobject / hoofdentiteit | SystemMessageTemplates met bijbehorende SystemMessageTemplateHistory. |
| Gerelateerde schermen / navigatie | 05_site-instellingen, 07_site-instellingen-popups, 09_site-instellingen-handige-links-paginas, 10_site-instellingen-features, generiek berichtenoverzicht en domeinen die systeemberichten aanmaken, zoals relaties, meldingen en oefendelen. |
| Data-karakter | Beheer- en mutatiepagina voor bestaande, codegedreven systeemberichtsjablonen. De pagina wijzigt sjablooninhoud en beperkte metadata, maar maakt geen runtime-systeemberichten aan en beheert geen individuele mailboxitems. |
8.3 Functionele beschrijving
8.3.1 Doel van het scherm
Het scherm Site instellingen — Systeemberichten is de beheerpagina voor bestaande systeemberichtsjablonen binnen OefenHub. Een systeemberichtsjabloon bepaalt de herbruikbare tekstuele basis voor systeemcommunicatie die door applicatieprocessen kan worden gebruikt, bijvoorbeeld bij rolselectie, relatie-uitnodigingen, gedeelde oefeningen, meldingen of beheermeldingen.
De pagina is bedoeld voor inhoudelijk beheer van bestaande templates. De beheerder kan sjablonen zoeken, filteren, selecteren, inhoudelijk aanpassen en de wijzigingsgeschiedenis bekijken. De pagina is niet bedoeld voor het aanmaken, verwijderen, activeren, deactiveren of vrij routeren van systeemberichtsjablonen.
De runtime-berichten die uiteindelijk bij gebruikers in de mailbox verschijnen, worden niet rechtstreeks op deze pagina beheerd. Een save-actie op deze pagina past het sjabloon aan voor toekomstig gebruik door de applicatielogica. Bestaande runtime-berichten blijven zelfstandige SystemMessages-records met eigen ontvanger, titel, body, leesstatus en domeinverwijzing.
8.3.2 Afbakening ten opzichte van popups en runtime-systeemberichten
Systeemberichtsjablonen lijken qua beheerpatroon op systeem-popups, omdat beide via een overzicht links en een detailpaneel rechts worden beheerd. Functioneel is het domein smaller:
- er is geen sluitkruis, overlaymodus of linker-/rechterknopconfiguratie;
- er is geen actief-/inactiefschakelaar in de GUI;
- er is geen rolgebonden zichtbaarheid op templateniveau;
- aanmaken en verwijderen blijven code- en migratiegedreven;
- de technische referentienaam en technische actie-identificatie blijven read-only.
Systeemberichten verschillen ook van runtime-systeemberichten in de mailbox. SystemMessageTemplates bevat beheerbare sjablonen; SystemMessages bevat daadwerkelijke berichten voor concrete ontvangers. Klikbare opvolging in runtime-systeemberichten wordt niet als vrije URL in de template opgeslagen, maar door applicatielogica bepaald op basis van de relevante domeinverwijzing en rechtencontrole.
8.3.3 Hoofdopbouw van de pagina
De hoofdinhoud bestaat uit:
- een breadcrumb binnen de beheercontext;
- een introblok Systeemberichten beheren met korte uitleg en een dynamische teller Bericht records;
- een zoekveld om te zoeken op referentienaam, onderwerp of tekst;
- een domeinfilter met de keuze Alle domeinen en functionele domeinen zoals Account & rollen, Koppelingen, Oefeningen, Meldingen, Beheer en Algemeen;
- een selecteerbare lijst met systeemberichtsjablonen;
- een detailpaneel voor het geselecteerde sjabloon;
- een subsectie Actieknop wanneer het geselecteerde sjabloon een codegestuurde actie ondersteunt;
- de expliciete actie Wijzigingen opslaan;
- een geschiedenisblok met eerdere inhoudelijke wijzigingen.
Bij openen van de pagina wordt de lijst opgebouwd uit bestaande SystemMessageTemplates. De standaardselectie kan het eerste record volgens de actieve sortering zijn, of het record dat via route-/querycontext is meegegeven. De mockup toont TICKET_REOPEN_REQUESTED als actief record, maar dit is voorbeelddata.
8.3.4 Zoek-, filter- en selectiegedrag
Het zoekveld filtert binnen de bestaande templates op minimaal:
ReferenceName;Subject;BodyText.
Het domeinfilter beperkt de lijst tot één functioneel domein of toont alle domeinen. De filterkeuze wijzigt geen templatewaarde; alleen de linker lijst en eventueel de beschikbare selectie veranderen.
De lijst wordt standaard voorspelbaar gesorteerd op referentienaam, tenzij de applicatie een andere vastgelegde sortering hanteert. Wanneer een beheerder een andere sjabloonkaartenregel selecteert, wordt het detailpaneel opnieuw geladen met de waarden van dat geselecteerde template. Als er onopgeslagen wijzigingen zijn, moet de applicatie voorkomen dat deze stilzwijgend verloren gaan, bijvoorbeeld door een bevestiging, blokkade of expliciete waarschuwing.
8.3.5 Detailbewerking
In het detailpaneel zijn de volgende gegevens zichtbaar:
- Referentienaam: stabiele technische sleutel, read-only;
- Domein: functionele domeinclassificatie;
- Categorie / type: visuele of functionele classificatie van het bericht;
- Onderwerp: bewerkbare onderwerpregel;
- Tekst: bewerkbare berichttekst;
- Knoptekst: optionele zichtbare tekst voor een actieknop;
- Actie: technische actie-identificatie, read-only;
- Geschiedenis: read-only wijzigingsgeschiedenis van het geselecteerde sjabloon.
De referentienaam en actie zijn technische contractwaarden tussen template, applicatiecode en migraties. Zij mogen niet via de GUI wijzigbaar zijn. De beheerder past alleen inhoudelijke en beperkte classificerende waarden aan.
8.3.6 Actieknop en domeinverwijzing
Een systeemberichttemplate kan een optionele actieknop ondersteunen. De knoptekst is beheerbaar zolang het onderliggende template een codegestuurde actie heeft. De actie zelf is read-only en wordt vanuit code of migratie bepaald. De mockup toont bijvoorbeeld de actie openTicketOverview, maar deze waarde is voorbeelddata van het geselecteerde record.
De GUI mag geen vrije URL, route of willekeurige actie laten opslaan. De technische vervolgactie wordt uitsluitend bepaald door applicatiecode en de toegestane domeinlogica. Bij runtime-systeemberichten wordt doorklikgedrag daarnaast server-side gecontroleerd op ontvanger, domeinobject en actuele rechten.
Wanneer een geselecteerd template geen actie ondersteunt, moet de actieknopsectie worden verborgen of als niet-toepasbaar worden weergegeven. In dat geval mag knoptekst leeg zijn en mag opslaan geen impliciete nieuwe actie creëren.
8.3.7 Templatevariabele- en renderingregels
Systeemberichttemplates mogen alleen templatevariabelen bevatten die door de applicatie voor het betreffende template expliciet worden ondersteund. De definitieve templatevariabele-set is codegedreven en templategebonden. Een beheerder mag geen willekeurige variabele, script, HTML of routeringslogica toevoegen.
Bij opslag moet de applicatie controleren dat gebruikte templatevariabelen toegestaan zijn voor het geselecteerde template. Bij renderen van een runtime-systeembericht moeten templatevariabelen server-side worden vervangen met veilige waarden en moet de uiteindelijke inhoud veilig worden geëncodeerd of gesanitized voordat deze in de mailbox of detailweergave zichtbaar wordt.
8.3.8 Opslaan, audit en geschiedenis
Wijzigingen worden niet direct per toetsaanslag persistent gemaakt. De beheerder slaat wijzigingen op via Wijzigingen opslaan. Bij opslaan:
- valideert de server de beheerderautorisatie;
- valideert de server de templatewaarden;
- controleert de server of de template nog bestaat;
- controleert de server of de versie niet tussentijds gewijzigd is;
- schrijft de server de gewijzigde velden naar
SystemMessageTemplates; - werkt de server
UpdatedAtUtcenUpdatedByUserIdbij; - schrijft de server per gewijzigd veld een regel in
SystemMessageTemplateHistory.
Wanneer één save-actie meerdere velden wijzigt, ontstaan meerdere historyregels met hetzelfde wijzigingsmoment en dezelfde uitvoerende beheerder. De geschiedenisweergave mag deze regels compact groeperen zolang het gewijzigde veld en de oude en nieuwe waarde herleidbaar blijven.
8.3.9 Leegstaten, foutstaten en disabled states
De pagina moet de volgende toestanden ondersteunen:
- geen templates beschikbaar: de lijst toont een lege staat en het detailpaneel toont geen bewerkbaar formulier;
- actieve zoekterm of domeinfilter levert geen resultaat: de lijst toont een filter-lege staat met mogelijkheid om zoekterm of filter te wissen;
- geen geselecteerd record: detailvelden en opslaanknop zijn disabled;
- geen wijziging aangebracht: Wijzigingen opslaan is disabled of geeft aan dat er niets gewijzigd is;
- validatiefout: het betreffende veld toont een foutmelding en de save-actie wordt niet verwerkt;
- template tussentijds gewijzigd: de gebruiker krijgt een melding dat de gegevens opnieuw geladen moeten worden voordat opslaan betrouwbaar kan plaatsvinden;
- fout bij laden of opslaan: de pagina toont een herstelbare foutmelding zonder ingevoerde wijzigingen stilzwijgend te verliezen;
- template zonder actie: actieveld blijft leeg/read-only en knoptekst is leeg of disabled.
8.3.10 Autorisatie en beveiliging
Frontend-zichtbaarheid is geen beveiliging. Alle lees- en mutatieacties moeten server-side controleren dat de gebruiker een actieve beheerdercontext heeft en Site instellingen mag beheren.
Daarnaast moeten invoer en output veilig worden behandeld:
- HTML, JavaScript en actieve inhoud mogen niet als uitvoerbare content uit templatevelden worden gerenderd;
- templatevariabelen worden alleen vervangen wanneer zij voor het template expliciet zijn toegestaan;
- technische identifiers zoals interne template-id's worden niet als primair GUI-element getoond;
- foutmeldingen mogen geen interne stacktraces, querydetails of geheime configuratie tonen;
- historyrecords worden niet via de GUI aangepast of verwijderd.
8.4 UI-elementen en velddefinities
| Element-ID | Type | GUI-verwijzing | Omschrijving | Zichtbaar label | Opmerking | Technische naam |
|---|---|---|---|---|---|---|
| SCH-BEH-07-01-S01 | S | Breadcrumb | Contextnavigatie binnen beheerder en Site instellingen. | Home › Site instellingen › Systeemberichten beheren | Header en hoofdmenu vallen buiten scope; de breadcrumb hoort bij de pagina-inhoud. | SystemMessageTemplatesBreadcrumb |
| SCH-BEH-07-01-S02 | S | Introblok | Introductiekaart met paginatitel, uitleg en samenvattende recordteller. | Systeemberichten beheren | De uitleg is schermspecifiek; mockupwaarden zijn voorbeelddata. | SystemMessageTemplatesIntroSection |
| SCH-BEH-07-01-F01 | F | Introblok > Bericht records | Read-only aantal bestaande systeemberichtsjablonen. | Bericht records | De waarde 38 uit de mockup is voorbeelddata. | SystemMessageTemplateRecordCountValue |
| SCH-BEH-07-01-S03 | S | Zoek- en filterbalk | Container voor zoeken en domeinfilter. | — | Beïnvloedt alleen de linker lijst en niet direct het geselecteerde record. | SystemMessageTemplateFilterSection |
| SCH-BEH-07-01-F02 | F | Zoekveld | Zoekterm voor filteren op referentienaam, onderwerp of tekst. | Zoek op referentienaam, onderwerp of tekst... | Gebruikersinvoer; niet persistent als templatewaarde. | SystemMessageTemplateSearchInput |
| SCH-BEH-07-01-FILTER01 | FILTER | Domeinfilter | Filter op functioneel domein van systeemberichtsjablonen. | Alle domeinen | Keuzes zijn code-/enumgestuurd. | SystemMessageTemplateDomainFilter |
| SCH-BEH-07-01-S04 | S | Systeemberichtenoverzicht | Linkerpaneel met selecteerbare templatekaarten. | Systeemberichtenoverzicht | Toont bestaande templates in kaartvorm. | SystemMessageTemplateOverviewSection |
| SCH-BEH-07-01-T01 | T | Sjabloonkaartenlijst | Selecteerbare lijst met referentienaam, onderwerp, tekstfragment en domein/typebadge. | Systeemberichtenoverzicht | Selectie bepaalt het detailpaneel rechts. | SystemMessageTemplateCardList |
| SCH-BEH-07-01-A01 | A | Sjabloonkaartenlijst > kaart | Selecteert een sjabloon en laadt het detailpaneel. | — | De hele kaart fungeert als selectieactie. | SelectSystemMessageTemplateAction |
| SCH-BEH-07-01-S05 | S | Systeemberichtdetails | Rechterpaneel met read-only en bewerkbare templatevelden. | Systeemberichtdetails | Detailpaneel wordt gevuld op basis van geselecteerde kaart. | SystemMessageTemplateDetailsSection |
| SCH-BEH-07-01-F03 | F | Referentienaam | Read-only technische referentienaam van het geselecteerde template. | Referentienaam | Niet wijzigbaar via de GUI. | ReferenceNameDisplay |
| SCH-BEH-07-01-F04 | F | Domein | Selectieveld voor functionele domeinclassificatie. | Domein | Beheerbaar binnen centrale domeinset. | DomainSelect |
| SCH-BEH-07-01-F05 | F | Categorie / type | Selectieveld voor systeemberichttype. | Categorie / type | Keuzes zijn minimaal Info, Success, Warning, Error en Critical. | MessageTypeSelect |
| SCH-BEH-07-01-F06 | F | Onderwerp | Tekstinvoer voor onderwerpregel van het template. | Onderwerp | Maximaal 50 tekens. | SubjectInput |
| SCH-BEH-07-01-F07 | F | Tekst | Meerregelig tekstveld voor berichttekst van het template. | Tekst | Maximaal 1000 tekens; alleen toegestane templatevariabelen. | BodyTextTextarea |
| SCH-BEH-07-01-S06 | S | Actieknop | Configuratieblok voor optionele codegestuurde actieknop. | Actieknop | Alleen functioneel wanneer het template een actie ondersteunt. | ActionButtonSection |
| SCH-BEH-07-01-F08 | F | Actieknop > Knoptekst | Tekstinvoer voor zichtbaar label van de actieknop. | Knoptekst | Optioneel; maximaal 20 tekens. | ActionButtonTextInput |
| SCH-BEH-07-01-F09 | F | Actieknop > Actie | Read-only technische actie-identificatie. | Actie | Wordt vanuit code/migraties bepaald en is niet via de GUI wijzigbaar. | ActionNameDisplay |
| SCH-BEH-07-01-B01 | B | Detailpaneel > save row | Slaat gewijzigde templatevelden op. | Wijzigingen opslaan | Disabled of niet-effectief wanneer er geen wijzigingen zijn of validatie faalt. | SaveSystemMessageTemplateButton |
| SCH-BEH-07-01-S07 | S | Geschiedenis | Historieblok voor het geselecteerde sjabloon. | Geschiedenis | Read-only weergave. | SystemMessageTemplateHistorySection |
| SCH-BEH-07-01-T02 | T | Geschiedenislijst | Lijst met eerdere wijzigingen aan het geselecteerde template. | Geschiedenis | Toont minimaal wijzigingssamenvatting, veld, uitvoerder en tijdstip. | SystemMessageTemplateHistoryList |
| SCH-BEH-07-01-M01 | M | Fout- en leegstaten | Meldingen voor geen resultaat, laadfout, validatiefout, opslaan mislukt of concurrencyconflict. | Dynamisch | Wordt alleen getoond wanneer de betreffende toestand optreedt. | SystemMessageTemplateStateMessage |
8.5 Waardelagen
| Element-ID | GUI-verwijzing | Zichtbaar label | Technische naam | Databron | Waardebron | Datatype | Bewerkbaar | Validatie / regel |
|---|---|---|---|---|---|---|---|---|
| SCH-BEH-07-01-S01 | Breadcrumb | Home › Site instellingen › Systeemberichten beheren | SystemMessageTemplatesBreadcrumb | Applicatieroutering / beheercontext | Actieve route en schermcontext | navigation | Nee | Breadcrumb wijzigt geen data en toont geen generieke headernavigatie. |
| SCH-BEH-07-01-S02 | Introblok | Systeemberichten beheren | SystemMessageTemplatesIntroSection | Codegedreven schermtekst | Vast schermlabel en vaste toelichting voor beheerpagina | section / text | Nee | Introblok is schermuitleg; templatebeheer zelf gebeurt in de detailvelden. |
| SCH-BEH-07-01-F01 | Bericht records | Bericht records | SystemMessageTemplateRecordCountValue | SystemMessageTemplates | Telling van bestaande systeemberichtsjablonen binnen beheercontext | int | Nee | Read-only waarde; mockupwaarde mag niet hardcoded worden. |
| SCH-BEH-07-01-F02 | Zoekveld | Zoek op referentienaam, onderwerp of tekst... | SystemMessageTemplateSearchInput | Niet direct databasegebonden; query over SystemMessageTemplates.ReferenceName, Subject, BodyText | User input / runtime state | string | Ja | Lege zoekterm betekent geen zoekbeperking; zoeken wijzigt geen templategegevens. |
| SCH-BEH-07-01-FILTER01 | Domeinfilter | Alle domeinen | SystemMessageTemplateDomainFilter | SystemMessageTemplates.Domain + centrale domeinset | Runtime filterwaarde | enum / filterwaarde | Ja | Keuze Alle domeinen toont alle templates; overige keuzes beperken de lijst tot één domein. |
| SCH-BEH-07-01-T01 | Sjabloonkaartenlijst | Systeemberichtenoverzicht | SystemMessageTemplateCardList | SystemMessageTemplates | Read model met ReferenceName, Domain, MessageType, Subject en BodyText-fragment | list / collection | Nee | Alleen bestaande templates tonen; aanmaken en verwijderen zijn geen GUI-acties. |
| SCH-BEH-07-01-A01 | Sjabloonkaartenlijst > kaart | — | SelectSystemMessageTemplateAction | Geselecteerd SystemMessageTemplates.Id via applicatiestate | Runtime selectie | action | Ja | Bij onopgeslagen wijzigingen moet verlies van invoer worden voorkomen. |
| SCH-BEH-07-01-F03 | Referentienaam | Referentienaam | ReferenceNameDisplay | SystemMessageTemplates.ReferenceName | Databasewaarde | string | Nee | Uniek en read-only; technische sleutel blijft code-/migratiegedreven. |
| SCH-BEH-07-01-F04 | Domein | Domein | DomainSelect | SystemMessageTemplates.Domain | Databasewaarde + centrale domeinset | enum / string | Ja | Waarde moet binnen de centraal ondersteunde domeinen vallen. |
| SCH-BEH-07-01-F05 | Categorie / type | Categorie / type | MessageTypeSelect | SystemMessageTemplates.MessageType | Databasewaarde + SystemMessageType enum | enum / string | Ja | Toegestane waarden zijn minimaal Info, Success, Warning, Error en Critical. |
| SCH-BEH-07-01-F06 | Onderwerp | Onderwerp | SubjectInput | SystemMessageTemplates.Subject | Databasewaarde | string | Ja | Verplicht; maximaal 50 tekens; actieve inhoud is niet toegestaan. |
| SCH-BEH-07-01-F07 | Tekst | Tekst | BodyTextTextarea | SystemMessageTemplates.BodyText | Databasewaarde | string / multiline | Ja | Verplicht; maximaal 1000 tekens; alleen template-toegestane templatevariabelen; uitvoer veilig renderen. |
| SCH-BEH-07-01-S06 | Actieknop | Actieknop | ActionButtonSection | SystemMessageTemplates.ActionName, ActionButtonText | Afgeleid uit geselecteerd template | section / composite | Nee als sectie | Sectie is alleen relevant wanneer het template een codegestuurde actie ondersteunt. |
| SCH-BEH-07-01-F08 | Knoptekst | Knoptekst | ActionButtonTextInput | SystemMessageTemplates.ActionButtonText | Databasewaarde | string / nullable | Ja | Optioneel; maximaal 20 tekens; alleen relevant bij aanwezige ActionName. |
| SCH-BEH-07-01-F09 | Actie | Actie | ActionNameDisplay | SystemMessageTemplates.ActionName | Databasewaarde / codegedreven sleutel | string / nullable | Nee | Read-only; geen vrije URL, route of functie-invoer via de GUI. |
| SCH-BEH-07-01-B01 | Wijzigingen opslaan | Wijzigingen opslaan | SaveSystemMessageTemplateButton | SystemMessageTemplates, SystemMessageTemplateHistory, Users | Server-side saveactie | action | Ja | Valideert autorisatie, invoer, templatevariabelen en concurrency; schrijft gewijzigde velden en history. |
| SCH-BEH-07-01-T02 | Geschiedenislijst | Geschiedenis | SystemMessageTemplateHistoryList | SystemMessageTemplateHistory + Users | Auditregels van geselecteerd template | list / collection | Nee | Toont per wijziging minimaal veld, oude waarde, nieuwe waarde, uitvoerder en tijdstip; history wordt niet via GUI aangepast. |
| SCH-BEH-07-01-M01 | Fout- en leegstaten | Dynamisch | SystemMessageTemplateStateMessage | Applicatiestate, validatieresultaat, serverresponse | Runtime state | message | Nee | Geen technische stacktraces tonen; foutmeldingen moeten begrijpelijk en herstelbaar zijn. |
8.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-BEH-07-01-01 | SRS-POP-004 SRS-MSG-007 AC-POP-004 AC-MSG-007 | De beheerder binnen Site instellingen een beheerpagina tonen voor bestaande systeemberichtsjablonen met een overzicht links en een detailpaneel rechts |
REQ-SCH-BEH-07-01-02 | SRS-AUTH-001 SRS-POP-004 AC-AUTH-001 AC-POP-004 | Toegang tot de systeemberichtenbeheerpagina server-side beperken tot gebruikers met een actieve beheerdercontext en beheerrechten voor Site instellingen |
REQ-SCH-BEH-07-01-03 | SRS-RDM-004 SRS-RDM-007 SRS-RDM-002 SRS-RDM-001 SRS-POP-004 SRS-MSG-007 AC-RDM-004 AC-RDM-007 AC-RDM-002 AC-RDM-001 AC-POP-004 AC-MSG-007 | In het introblok een dynamisch aantal bestaande systeemberichtsjablonen tonen en mag de mockupwaarde niet hardcoded gebruiken |
REQ-SCH-BEH-07-01-04 | SRS-POP-004 SRS-MSG-007 AC-POP-004 AC-MSG-007 | Zoeken ondersteunen op minimaal referentienaam, onderwerp en berichttekst van bestaande systeemberichtsjablonen |
REQ-SCH-BEH-07-01-05 | SRS-POP-004 AC-POP-004 | Filteren op functioneel domein ondersteunen, inclusief een overkoepelende keuze Alle domeinen |
REQ-SCH-BEH-07-01-06 | SRS-POP-004 AC-POP-004 | De templateoverzichtslijst standaard voorspelbaar sorteren, minimaal op referentienaam of een functioneel gelijkwaardige vaste sortering |
REQ-SCH-BEH-07-01-07 | SRS-POP-004 AC-POP-004 | Per templatekaart minimaal referentienaam, onderwerp, tekstfragment en domein- of type-indicatie tonen |
REQ-SCH-BEH-07-01-08 | SRS-POP-004 AC-POP-004 | Bij selectie van een template het detailpaneel vullen met de waarden van dat geselecteerde template |
REQ-SCH-BEH-07-01-09 | SRS-POP-004 SRS-MSG-007 AC-POP-004 AC-MSG-007 | De referentienaam van een systeemberichttemplate read-only tonen en mag wijziging van deze technische sleutel via de GUI niet toestaan |
REQ-SCH-BEH-07-01-10 | SRS-POP-004 SRS-MSG-007 AC-POP-004 AC-MSG-007 | De technische actie-identificatie van een systeemberichttemplate read-only tonen en mag geen vrije URL, route of functienaam via de GUI laten opslaan |
REQ-SCH-BEH-07-01-11 | SRS-POP-004 AC-POP-004 | Minimaal de velden domein, categorie/type, onderwerp, berichttekst en optionele knoptekst beheerbaar maken voor bestaande templates |
REQ-SCH-BEH-07-01-12 | SRS-POP-004 SRS-MSG-007 AC-POP-004 AC-MSG-007 | Geen GUI-functionaliteit bieden voor het aanmaken, verwijderen, activeren, deactiveren of rolgebonden zichtbaar maken van systeemberichtsjablonen |
REQ-SCH-BEH-07-01-13 | SRS-AUTH-001 SRS-POP-004 AC-AUTH-001 AC-POP-004 | Voor systeemberichttemplates server-side afdwingen dat onderwerp maximaal 50 tekens bevat |
REQ-SCH-BEH-07-01-14 | SRS-AUTH-001 SRS-POP-004 AC-AUTH-001 AC-POP-004 | Voor systeemberichttemplates server-side afdwingen dat berichttekst maximaal 1000 tekens bevat |
REQ-SCH-BEH-07-01-15 | SRS-AUTH-001 SRS-POP-004 AC-AUTH-001 AC-POP-004 | Voor systeemberichttemplates server-side afdwingen dat optionele knoptekst maximaal 20 tekens bevat |
REQ-SCH-BEH-07-01-16 | SRS-POP-004 AC-POP-004 | Domein en categorie/type beperken tot centraal ondersteunde code-/enumwaarden |
REQ-SCH-BEH-07-01-17 | SRS-POP-004 SRS-MSG-007 AC-POP-004 AC-MSG-007 | Alleen templatevariabelen toestaan die voor het geselecteerde systeemberichttemplate expliciet door de applicatie worden ondersteund |
REQ-SCH-BEH-07-01-18 | SRS-POP-004 AC-POP-004 | Template-inhoud veilig opslaan en renderen, zodat HTML, JavaScript of andere actieve inhoud niet als uitvoerbare content bij gebruikers terechtkomt |
REQ-SCH-BEH-07-01-19 | SRS-POP-004 AC-POP-004 | Wijzigingen pas persistent maken na de expliciete actie Wijzigingen opslaan |
REQ-SCH-BEH-07-01-20 | SRS-POP-004 AC-POP-004 | Bij opslaan UpdatedAtUtc en UpdatedByUserId op het gewijzigde SystemMessageTemplates-record bijwerken |
REQ-SCH-BEH-07-01-21 | SRS-NFR-AUD-001 SRS-POP-004 AC-NFR-AUD-001 AC-POP-004 | Per gewijzigd veld een SystemMessageTemplateHistory-regel vastleggen met minimaal gewijzigd veld, oude waarde, nieuwe waarde, uitvoerende beheerder en tijdstip |
REQ-SCH-BEH-07-01-22 | SRS-NFR-AUD-001 SRS-POP-004 AC-NFR-AUD-001 AC-POP-004 | De geschiedenis van het geselecteerde systeemberichttemplate read-only tonen en mag historyrecords niet via de GUI laten wijzigen of verwijderen |
REQ-SCH-BEH-07-01-23 | SRS-POP-004 AC-POP-004 | Voorkomen dat onopgeslagen wijzigingen stilzwijgend verloren gaan wanneer de beheerder een ander template selecteert, de filtercontext wijzigt of de pagina verlaat |
REQ-SCH-BEH-07-01-24 | SRS-POP-004 AC-POP-004 | Concurrency controleren bij opslaan en de beheerder informeren wanneer het template sinds het laden door een andere actie is gewijzigd |
REQ-SCH-BEH-07-01-25 | SRS-POP-004 AC-POP-004 | Een lege staat tonen wanneer geen templates beschikbaar zijn of wanneer zoekterm en filter geen resultaten opleveren |
REQ-SCH-BEH-07-01-26 | SRS-POP-004 AC-POP-004 | Foutmeldingen bij laden, valideren en opslaan begrijpelijk tonen zonder interne technische details, stacktraces of gevoelige configuratie prijs te geven |
REQ-SCH-BEH-07-01-27 | SRS-POP-004 SRS-MSG-007 AC-POP-004 AC-MSG-007 | Bestaande runtime-systeemberichten in de mailbox niet retroactief wijzigen wanneer een template op deze beheerpagina wordt aangepast |
REQ-SCH-BEH-07-01-28 | SRS-POP-004 SRS-MSG-007 AC-POP-004 AC-MSG-007 | Bij runtime-gebruik van systeemberichttemplates de actuele rechten van de ontvanger op het gekoppelde domeinobject controleren voordat een vervolgactie beschikbaar wordt gemaakt |
8.7 Technische koppeling
Voor technische uitwerking van systeemberichtenbeheer zijn vooral relevant:
- 05 Autorisatie, policies en server-side contextcontrole voor beheerderautorisatie op sjablonen en publicatieacties.
- 13 Berichten, systeemberichten, notificaties en privéberichten voor systeemberichtsjablonen, variabelen, rendering en distributie.
- 17 Readmodels, tellers, badges, caching en materialisatie voor actieve en geplande systeemberichtoverzichten.
- 18 Background jobs, TickerQ en periodieke verwerking voor geplande verwerking of distributie van berichten wanneer dit niet direct interactief gebeurt.
- 19 Logging, audit, securitylogging en technische foutafhandeling voor auditbare sjabloonwijzigingen en technische foutregistratie.
- 24 Frontend, Blazor, routing, state en componentopbouw voor zoekfilters, detailbewerking, validatie en preview.