Skip to main content

UC-BEH-SYSMSG-005 — Templategeschiedenis bekijken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-SYSMSG-005
NaamTemplategeschiedenis bekijken
DomeinBeheerder / Systeemberichtenbeheer
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, autorisatiecomponent, database, historyservice
RolcontextActieve beheerdercontext; overige combinatierollen geven geen extra beheerrechten binnen deze usecase
Betrokken schermenSite Instellingen > Systeemberichten, templateoverzicht, templatedetail, template-editor, templategeschiedenis
Gerelateerde usecasesUC-BEH-SYSMSG-001, UC-BEH-SYSMSG-002, UC-BEH-SYSMSG-003, generieke berichtenusecases
Primaire entiteitenSystemMessageTemplates, SystemMessageTemplateHistory
Secundaire entiteiten / eventsSystemMessageType, ButtonTheme, Users, SystemMessages
Gerelateerde popupsNiet van toepassing
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

De beheerder bekijkt de wijzigingsgeschiedenis van een systeemberichttemplate met actor, tijdstip, soort wijziging en oude en nieuwe veldwaarden.

De geschiedenis is veldniveau-history: één gewijzigde veldwaarde levert één historyregel op. Meerdere veldwijzigingen in dezelfde save-actie mogen dezelfde actor en hetzelfde wijzigingsmoment delen en kunnen door de UI gegroepeerd worden.

Systeemberichtenbeheer beheert bestaande systeemberichtsjablonen. Runtime-berichten in mailboxen blijven aparte SystemMessages-records; templatebeheer wijzigt alleen de broninhoud voor toekomstige systeemcommunicatie.

De runtime-foundation voor deze templates kan al door Feature 11 Batch 4 worden gebruikt. Deze beheerusecase bouwt geen nieuwe technische referenties, geen templateversie-FK op runtimeberichten en geen RowVersion-verplichting.

De usecase gebruikt als functionele basis: SystemMessageTemplates voor bestaande codegedreven sjablonen. Dit betekent dat de beheerinterface geen vrije technische constructies introduceert, maar alleen werkt binnen de bestaande sleutelsets, records en codevaste ankers.

De usecase is bedoeld als definitieve functionele beschrijving voor het verdere FO-, TO- en SRS-traject. Daarom wordt expliciet vastgelegd welke gegevens wel worden gelezen of gewijzigd, welke gegevens bewust niet worden gewijzigd en welke validaties altijd server-side moeten plaatsvinden.

Uitgangspunten

  • De beheerdercontext is altijd server-side leidend.
  • De beheerinterface maakt onderscheid tussen beheerbare inhoud en technische ankers.
  • History is onderdeel van het functionele resultaat wanneer een beheerder een wijziging opslaat.
  • Zoeken, filteren, contextselectie en detailopenen zijn read-only totdat expliciet wordt opgeslagen.
  • Onbekende of gemanipuleerde identifiers worden veilig geblokkeerd.
  • De gebruikersinterface toont geen technische stacktraces of interne databasefouten.
  • Domeinoverschrijdende bijwerkingen zijn uitgesloten tenzij een usecase die expliciet benoemt.
  • De uitwerking volgt de centrale popup-, DRY- en ontwerpbronafspraken.

3. Scope

Deze usecase beschrijft:

  • De beheerder bekijkt de wijzigingsgeschiedenis van een systeemberichttemplate met actor, tijdstip, soort wijziging en oude en nieuwe veldwaarden.
  • Server-side controleren dat de gebruiker beheerder is.
  • Werken binnen de afbakening van Beheerder / Systeemberichtenbeheer.
  • Gebruik van SystemMessageTemplates voor bestaande codegedreven sjablonen.
  • Scheiding tussen beheerbare velden en codegedreven of read-only velden.
  • Veilige fout-, lege-staat- en blokkadeafhandeling.
  • History of auditregistratie wanneer de usecase een wijziging uitvoert.
  • Readmodelverversing na selectie, validatie of opslaan.
  • Voorkomen dat deze beheeractie onbedoeld andere domeinen wijzigt.

Deze usecase beschrijft niet:

  • Nieuwe systeemberichttemplates aanmaken via de GUI.
  • Technische referentienaam of codegestuurde actie wijzigen.
  • Bestaande verzonden SystemMessages met terugwerkende kracht aanpassen of koppelen aan een verplichte templateversie.
  • Systeemberichten uitschakelen via een actief/in-gebruik schakelaar.
  • Vrije of onbeperkte placeholderdefinities invoeren.
  • Wijzigen van accounts, rollen of sessies buiten de autorisatiecontrole.
  • Maken of wijzigen van oefenruns, resultaten, relaties, meldingen of privéberichten.
  • Aanpassen van onderliggende code, migraties of seeddefinities via de beheerinterface.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is ingelogd en heeft een actief intern OefenHub-account.
PRE-002De gebruiker bezit een actieve beheerderrol.
PRE-003De beheerder opent de relevante route via Site Instellingen of een onderliggende beheerpagina.
PRE-004De relevante records of contexten voor Beheerder / Systeemberichtenbeheer zijn aanwezig of kunnen als veilige lege staat worden getoond.
PRE-005De server-side autorisatiecomponent is beschikbaar.
PRE-006De database en historytabellen zijn beschikbaar voor read-only of muterende acties.
PRE-007De frontend gebruikt de actuele serverrespons en niet alleen eerder opgeslagen clientstate.
PRE-008Eventuele feature- of routebeschikbaarheid is door de applicatieconfiguratie toegestaan.

5. Post-condities

IDResultaat
POST-001De usecase "Templategeschiedenis bekijken" is uitgevoerd binnen de beheerdercontext.
POST-002De beheerder ziet een actuele, veilige weergave of een duidelijke blokkade.
POST-003Read-only acties hebben geen domeinmutatie uitgevoerd.
POST-006Er zijn geen template-, history- of runtimeberichtrecords gewijzigd.
POST-007Technische sleutels en codegedreven velden zijn ongewijzigd gebleven.
POST-008Andere domeinen zoals accounts, meldingen, relaties en oefenruns zijn niet gewijzigd.

6. Trigger

De usecase start wanneer de beheerder de actie Templategeschiedenis bekijken uitvoert binnen het beheeronderdeel Beheerder / Systeemberichtenbeheer.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderDetail- of geschiedenisdeelKiest Geschiedenis.Frontend vraagt history voor record, blok of context op.Historyscope.
2BackendAutorisatiecomponentControleert beheerderrol.Alleen beheerder mag beheerhistorie raadplegen.Server-side controle.
3BackendHistoryserviceLaadt relevante historyrecords.Resultaten worden aflopend op wijzigingsmoment gesorteerd.Historytabellen.
4BackendHistoryserviceLaadt veldniveauverschillen waar beschikbaar.Oude en nieuwe waarden worden veilig weergegeven.Van-naar weergave.
5BackendGebruikersserviceLaadt actorweergave.Geanonimiseerde of systeemactoren krijgen veilige naamweergave.Users.
6BackendFilterservicePast gekozen filters toe.Filteren wijzigt geen history.Read-only.
7BackendFrontendLevert historyreadmodel.Frontend toont tijdstip, actor, actie, veld, oude waarde en nieuwe waarde.Geen mutatie.
8FrontendGeschiedenisdeelToont compacte regels en details.Lange waarden worden veilig afgekapt of in detail getoond.XSS-veilig rendering.
9BeheerderGeschiedenisdeelSelecteert eventueel een historyregel.Detail toont complete veldwijzigingen.Geen rollbackactie.
10SysteemHistoryBlokkeert wijzigen of verwijderen van history.Historie is immutable.Geen mutatie.
11FrontendGeschiedenisdeelToont lege staat als geen historie bestaat.Lege staat is informatief.Geen datamutatie.
12BeheerderGeschiedenisdeelKeert terug naar detail.Record blijft ongewijzigd.Read-only einde.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012De gebruiker heeft geen actieve beheerderrol.Backend blokkeert de actie en toont geen beheerdata.Inline toegang geweigerd of veilige redirect.Geen.
ALT-0023Het interne account is gedeactiveerd of geanonimiseerd.De sessiecontext wordt ongeldig gemaakt voor beheeracties.Accountafhandeling.Geen.
ALT-0034Het gevraagde record of blok bestaat niet.Het systeem toont een veilige niet-beschikbaarafhandeling.Inline melding.Geen.
ALT-0044Het record is door een andere beheerder gewijzigd.Het systeem vraagt actuele waarden opnieuw op of blokkeert opslaan bij versieconflict.Inline conflictmelding.Geen tot bevestigde nieuwe opslag.
ALT-0055De invoer overschrijdt een validatiegrens.Opslaan wordt geweigerd en fout wordt bij het veld getoond.Inline validatie.Geen.
ALT-0065Een read-only veld is in de payload gewijzigd.Backend negeert of weigert de payload en registreert geen wijziging.Inline foutmelding.Geen.
ALT-0077Historyregistratie faalt terwijl de mutatie vereist auditbaar is.De gehele transactie wordt teruggedraaid.Veilige foutmelding.Geen blijvende mutatie.
ALT-0087De databaseactie faalt technisch.De wijziging wordt niet gedeeltelijk opgeslagen.Veilige foutmelding.Geen of rollback.
ALT-0098Zoek- of filterresultaat is leeg.Het overzicht toont een neutrale lege staat.Niet van toepassing.Geen.
ALT-0109De beheerder verlaat de pagina met niet-opgeslagen wijzigingen.De UI waarschuwt volgens generieke formulierregels wanneer zulke bescherming beschikbaar is.Generieke verlaten-waarschuwing indien geregistreerd.Geen.
ALT-0115Een onbekende placeholder wordt gebruikt.Opslaan wordt geblokkeerd totdat alleen toegestane placeholders overblijven.Inline validatie.Geen.
ALT-0126De template heeft een actieknop maar de code ondersteunt geen knoptekst.Knoptekstveld blijft verborgen of read only.Niet van toepassing.Geen.

9. Business rules

IDRegel
BR-UC-BEH-SYSMSG-005-001De referentienaam van een systeemberichttemplate is stabiel en read only.
BR-UC-BEH-SYSMSG-005-002Nieuwe templates en technische referenties ontstaan via code en database-migraties.
BR-UC-BEH-SYSMSG-005-003Templatebeheer past geen bestaande verzonden SystemMessages aan.
BR-UC-BEH-SYSMSG-005-004Alleen toegestane placeholders mogen worden gebruikt en gevuld.
BR-UC-BEH-SYSMSG-005-005De actieknop is alleen zichtbaar wanneer de achterliggende code dit ondersteunt.
BR-UC-BEH-SYSMSG-005-006Wijzigingen worden historisch vastgelegd met actor, tijdstip, veld en oude en nieuwe waarde.
BR-UC-BEH-SYSMSG-005-007Historyrecords zijn read-only en mogen via deze usecase niet gewijzigd of verwijderd worden.
BR-UC-BEH-SYSMSG-005-008Historyweergave moet actor, tijdstip, soort actie en relevante veldwijzigingen tonen.
BR-UC-BEH-SYSMSG-005-009Geanonimiseerde of systeemactoren worden veilig en herkenbaar weergegeven zonder actuele persoonsgegevens te herstellen.

10. Datavalidatie

Veld / objectValidatie
BeheerdercontextDe gebruiker moet server-side een actieve beheerderrol hebben.
RecordtoegangHet record, blok of template moet binnen het gevraagde subdomein bestaan.
Read-only veldenTechnische sleutels, actie-identifiers en codegedreven velden mogen niet via de GUI worden gewijzigd.
ConcurrencyOpslaan moet de actuele recordversie controleren zodat overschrijven van nieuwere wijzigingen wordt voorkomen.
SubjectMaximaal 50 tekens.
TextMaximaal 1000 tekens.
ButtonTextMaximaal 20 tekens wanneer een codegestuurde actieknop beschikbaar is.
ReferenceNameMoet bestaan en is read only.
SystemMessageTypeMoet Info, Success, Warning, Error of Critical zijn.
PlaceholdersAlleen expliciet toegestane variabelen zijn toegestaan.
AuditactorUpdatedByUserId of ChangedByUserId moet naar de uitvoerende beheerder of systeemactor verwijzen.
TijdstipWijzigingsmomenten worden in UTC vastgelegd.
RenderingBeheerbare tekst moet veilig worden opgeslagen en gerenderd zonder actieve inhoud.
Lege waardenVerplichte zichtbare velden mogen niet leeg worden opgeslagen wanneer de runtime ze nodig heeft.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
Alle stappenDatabaseNiet van toepassingDeze usecase is read-only en wijzigt geen template-, history- of runtimeberichtrecords.

Transactionele uitgangspunten

  • Er wordt geen wijzigingscommand uitgevoerd.
  • Zoeken, filteren, selecteren en raadplegen leveren alleen een readmodel op.
  • Er wordt geen historyregel geschreven voor het openen of bekijken van gegevens.
  • Bij technische fouten wordt een veilige foutmelding getoond zonder interne details.

12. Geen datamutaties

EntiteitReden
Users, Roles en UserRolesWorden alleen gebruikt voor autorisatiecontrole; rollen of accounts worden niet gewijzigd.
Runtime gebruikersdataDeze beheerusecase wijzigt geen leerling-, docent- of ouder-/voogddata.
Tickets en meldingenMeldingenbeheer blijft in het generieke meldingendomein.
ExerciseRuns en resultatenOefenruns, geschiedenis en resultaten worden niet aangepast.
Relaties en uitnodigingenRelatiebeheer wordt niet vanuit deze beheerpagina uitgevoerd.
SystemMessagesReeds verzonden mailbox-systeemberichten worden niet met terugwerkende kracht aangepast.
Technische template-referentiesNieuwe referenties en actiecodes ontstaan alleen via code en migraties.

13. State diagram

Niet van toepassing. Deze usecase wijzigt geen persistente template- of runtimeberichtstatus. Autorisatie, selectie, validatie en historyweergave zijn read-only of controlelogica en vormen geen eigen statusmodel.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

Hoofdsequence

Vervolgsequence

17. Popupverwijzingen

Usecases verwijzen alleen naar PopupKey. Popupteksten, knopteksten, acties, inputvelden en themakeuzes worden centraal beheerd in het popupregister en de popup-themes.

PopupKeyMomentDoel
Niet van toepassingGeen bevestigings- of invoerpopup in de normale processtroom.Inline meldingen, lege staten of veilige redirects volstaan.

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

DoeldocumentAfleiding
Functioneel OntwerpBeschrijft welke beheeractie de beheerder kan uitvoeren, welke schermonderdelen zichtbaar zijn en welke grenzen gelden tussen beheerbare inhoud en codegedreven structuur.
Technisch OntwerpTechnisch Ontwerp: communicatie en systeemberichten, databaseontwerp en privacy en retentie beschrijven de technische uitwerking. Beschrijf server-side autorisatie, readmodelopbouw, transacties, historyregistratie en het gebruik van SystemMessageTemplates, SystemMessageTemplateHistory.
Software Requirements SpecificatieBeschrijft requirements voor toegangscontrole, validaties, foutafhandeling, immutable history en afbakening van beheerbare velden.
Database-informatieBeschrijft of velden, constraints, historytabellen en sleutelsets voor SystemMessageTemplates, SystemMessageTemplateHistory volledig aansluiten op deze usecase.
Ontwerpbronnen en registersBeschrijven autorisatiematrix en business rules bij waar nodig; deze read-only usecase vraagt geen zelfstandig command- of eventregisteritem.

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-BEH-SYSMSG-005-001SRS-ADM-002
SRS-ADM-001
AC-ADM-002
AC-ADM-001
De actie uitsluitend toestaan aan gebruikers met een actieve beheerderrol
REQ-UC-BEH-SYSMSG-005-002SRS-AUTH-001
SRS-AUTH-002
SRS-ADM-002
SRS-ADM-001
AC-AUTH-001
AC-AUTH-002
AC-ADM-002
AC-ADM-001
Alle beheerautorisatie server-side controleren en mag niet vertrouwen op clientstate of routeparameters
REQ-UC-BEH-SYSMSG-005-003SRS-AUTH-004
SRS-ACC-003
SRS-ACC-005
SRS-ADM-001
SRS-NFR-SEC-001
SRS-NFR-ACC-001
AC-AUTH-004
AC-ACC-003
AC-ACC-005
AC-ADM-001
AC-NFR-SEC-001
AC-NFR-ACC-001
Onbekende, ontbrekende of niet-toegankelijke records veilig afhandelen zonder technische details te tonen
REQ-UC-BEH-SYSMSG-005-004SRS-ADM-001
AC-ADM-001
Technische sleutels, actiecodes en codegedreven velden als read-only tonen
REQ-UC-BEH-SYSMSG-005-005SRS-RDM-001
SRS-ADM-001
AC-RDM-001
AC-ADM-001
Zoeken, filteren, selecteren en raadplegen behandelen als read-only acties zonder domeinmutatie
REQ-UC-BEH-SYSMSG-005-006SRS-ADM-001
SRS-POP-004
SRS-NFR-AUD-001
AC-ADM-001
AC-POP-004
AC-NFR-AUD-001
Bij deze usecase geen SystemMessageTemplates, SystemMessageTemplateHistory of reeds verzonden SystemMessages wijzigen
REQ-UC-BEH-SYSMSG-005-007SRS-MSG-001
SRS-ADM-001
SRS-POP-004
AC-MSG-001
AC-ADM-001
AC-POP-004
Bestaande systeemberichttemplates beheren zonder reeds verzonden mailbox-systeemberichten met terugwerkende kracht aan te passen
REQ-UC-BEH-SYSMSG-005-008SRS-ADM-001
AC-ADM-001
Lege staten, blokkades en niet-beschikbaar-situaties gebruikersgericht en zonder technische details weergeven
REQ-UC-BEH-SYSMSG-005-009SRS-ADM-001
SRS-NFR-SEC-001
AC-ADM-001
AC-NFR-SEC-001
Beheerbare tekst veilig renderen zonder actieve of onveilige inhoud
REQ-UC-BEH-SYSMSG-005-010SRS-MSG-001
SRS-ADM-001
SRS-POP-004
SRS-NFR-AUD-001
AC-MSG-001
AC-ADM-001
AC-POP-004
AC-NFR-AUD-001
De usecase "Templategeschiedenis bekijken" uitvoeren volgens de afbakening van het subdomein Beheerder / Systeemberichtenbeheer