UC-GEN-TIC-011 — Extern bericht plaatsen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-TIC-011 |
| Naam | Extern bericht plaatsen |
| Domein | Meldingen |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Melder, systeem, meldingenservice, berichtensysteem, database |
| Rolcontext | Ingelogde gebruiker met actieve beheerdercontext en geldige behandelcontext voor de melding |
| Betrokken schermen | SCH-BEH-02-01 — Meldingenoverzicht beheerder; SCH-GEN-06-02 — Melding details; SCH-GEN-04 — Open bericht |
| Gerelateerde usecases | UC-GEN-TIC-003 — Melding details bekijken; UC-GEN-TIC-004 — Reageren op melding; UC-GEN-TIC-008 — Beheerdersoverzicht meldingen bekijken; UC-GEN-TIC-009 — Melding openen als beheerder; UC-GEN-TIC-010 — Beheerder koppelen of ontkoppelen; UC-GEN-TIC-012 — Intern bericht plaatsen; UC-GEN-TIC-013 — Melding oplossen of sluiten |
| Primaire entiteiten | Tickets, TicketDiscussionMessages, SystemMessages, TicketHistory |
| Secundaire entiteiten / events | TicketAssignments, Users, TicketExternalMessageAdded, TicketStatusChanged, SystemMessageCreated, TicketActionIndicatorRecalculated, TicketExternalMessageFailed |
| Gerelateerde popups | POP-GEN-TIC-EXTERNAL-NOT-ALLOWED, POP-GEN-TIC-EXTERNAL-FAILED, POP-GEN-TIC-NOT-AVAILABLE |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must have |
2. Omschrijving
Een beheerder plaatst vanuit de beheerderdetailweergave van een melding een extern zichtbaar bericht aan de melder. Het bericht wordt opgeslagen als TicketDiscussionMessages met Visibility = External en is daarna zichtbaar voor de melder op het tabblad Discussie van de meldingdetailpagina.
De beheerder kiest bij het plaatsen van het externe bericht expliciet dat het bericht extern zichtbaar is. Externe berichten mogen geen interne beheerinformatie, technische analyse of namen van individuele beheerders aan de melder tonen. In de gebruikersweergave wordt een extern beheerbericht daarom generiek als Beheerder weergegeven.
Wanneer het externe bericht bedoeld is om aanvullende informatie van de melder te vragen, markeert de beheerder dat de melding op reactie van de gebruiker wacht. In dat geval zet het systeem de melding naar status Wachten op reactie (WaitingForUser). De gebruiker ontvangt een systeembericht met een klikbare verwijzing naar dezelfde melding. Deze verwijzing opent de meldingdetailpagina en, wanneer de status Wachten op reactie actief is, direct het tabblad Discussie.
Wanneer het externe bericht alleen een voortgangsupdate of uitleg is zonder gevraagde reactie, blijft de actuele behandelstatus ongewijzigd. Ook dan ontvangt de melder een systeembericht zodat de externe communicatie vindbaar is vanuit het berichtensysteem.
Deze usecase beschrijft uitsluitend externe beheerdercommunicatie binnen een bestaande melding. Interne beheerdersdiscussie, gebruikersreacties, oplossing plaatsen, sluiten, heropenen en doorzetten naar docent vallen buiten deze usecase.
3. Scope
Deze usecase beschrijft:
- het openen van de externe berichtactie vanuit de beheerderdetailweergave;
- het expliciet kiezen of bevestigen dat het bericht extern zichtbaar is;
- het invoeren en valideren van het externe bericht;
- het optioneel markeren dat een reactie van de gebruiker nodig is;
- het server-side controleren van sessie, featurestatus, actieve beheerdercontext, tickettoegang, ticketstatus en behandelcontext;
- het opslaan van een extern
TicketDiscussionMessages-record; - het generiek tonen van de afzender als Beheerder in de gebruikersweergave;
- het aanmaken van een
SystemMessages-record voor de melder metEntityType = TicketenEntityId = TicketId; - het wijzigen van de ticketstatus naar
WaitingForUserwanneer expliciet een reactie van de gebruiker nodig is; - het vastleggen van compacte auditinformatie in
TicketHistory; - het opnieuw afleiden van gebruikersgerichte actie-indicaties zoals Wacht op mij;
- foutpaden wanneer de melding niet beschikbaar is, de actie niet toegestaan is, de berichttekst ongeldig is of de transactie faalt.
Deze usecase beschrijft niet:
- het aanmaken van een nieuwe melding;
- het algemene openen van de beheerderdetailweergave;
- het koppelen of ontkoppelen van beheerders;
- interne beheerdersberichten;
- reguliere gebruikersreacties;
- het accepteren van een oplossing;
- het oplossen of sluiten van een melding;
- het heropenen van een melding;
- het doorzetten naar docent;
- vrije privéberichten buiten de meldingscontext;
- beheer van systeemberichtsjablonen, popupteksten of seeddata.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De beheerder is ingelogd. |
| PRE-002 | De beheerder heeft een actieve beheerdercontext. |
| PRE-003 | De meldingenfunctionaliteit is sitebreed beschikbaar. |
| PRE-004 | De beheerderdetailweergave van een melding is geopend of er is een geldige ticketreferentie beschikbaar. |
| PRE-005 | De melding bestaat als Tickets-record. |
| PRE-006 | De melding is niet functioneel gesloten. |
| PRE-007 | De melding bevindt zich in een actieve behandelcontext. Een melding met status Nieuw moet eerst via UC-GEN-TIC-010 aan minimaal één beheerder gekoppeld worden voordat externe communicatie wordt geplaatst. |
| PRE-008 | De beheerder mag de melding in beheercontext lezen en behandelen. |
| PRE-009 | De beheerder kan een externe berichttekst invoeren. |
| PRE-010 | De beheerder kiest expliciet of met het bericht een reactie van de gebruiker gevraagd wordt. |
| PRE-011 | De applicatie kan discussiebericht, eventuele statusupdate, systeembericht, history en afgeleide actie-indicatie transactioneel verwerken. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Er is een TicketDiscussionMessages-record aangemaakt met Visibility = External. |
| POST-002 | Het externe bericht is zichtbaar voor de melder op het tabblad Discussie van de meldingdetailpagina. |
| POST-003 | Het externe bericht is zichtbaar voor beheerders in de beheerderdetailweergave. |
| POST-004 | De gebruikersweergave toont de afzender generiek als Beheerder. |
| POST-005 | De naam van de individuele beheerder wordt niet zichtbaar aan de melder. |
| POST-006 | Er is een SystemMessages-record aangemaakt voor de melder met verwijzing naar de melding. |
| POST-007 | Het systeembericht gebruikt EntityType = Ticket en EntityId = TicketId. |
| POST-008 | Wanneer reactie van de gebruiker is gevraagd, heeft de melding status WaitingForUser. |
| POST-009 | Wanneer geen reactie van de gebruiker is gevraagd, blijft de bestaande behandelstatus ongewijzigd. |
| POST-010 | Wanneer status WaitingForUser actief is, wordt de actie-indicatie Wacht op mij opnieuw afgeleid voor de melder. |
| POST-011 | Er is minimaal één compacte TicketHistory-regel vastgelegd voor het externe bericht. |
| POST-012 | Wanneer de status is gewijzigd, is ook deze statuswijziging auditbaar. |
| POST-013 | Interne beheerdersinformatie wordt niet in de externe gebruikersweergave opgenomen. |
| POST-014 | Er wordt geen privéberichtthread aangemaakt door deze usecase. |
| POST-015 | Er wordt geen TicketClosure aangemaakt. |
| POST-016 | Er wordt geen TicketReopenRequest aangemaakt. |
| POST-017 | Bij een niet-toegestane of mislukte mutatie blijft de bestaande ticket-, discussie-, systeembericht- en historietoestand ongewijzigd. |
| POST-018 | Bij een transactionele fout ontstaat geen half verwerkt extern bericht zonder bijbehorende notificatie- en auditcontext. |
6. Trigger
De beheerder opent de beheerderdetailweergave van een melding en kiest in de sectie Discussie voor het plaatsen van een extern bericht aan de melder.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Beheerder | SCH-BEH-02-01 — Detailpaneel / Discussie | Bekijkt de discussiecontext van de melding. | Het systeem toont interne en externe berichten volgens beheerderrechten. | Beheerderdetail openen valt onder UC-GEN-TIC-009. |
| 2 | Beheerder | Discussieactie | Kiest voor een nieuw extern bericht. | Het systeem toont het invoerveld voor een extern bericht of activeert de externe berichtmodus. | Externe zichtbaarheid moet expliciet zijn. |
| 3 | Beheerder | Extern berichtformulier | Voert de berichttekst in. | Het systeem houdt de invoer lokaal beschikbaar totdat de beheerder verzendt. | Berichttekst wordt nog niet opgeslagen. |
| 4 | Beheerder | Extern berichtformulier | Geeft aan of een reactie van de gebruiker nodig is. | Het systeem bewaart de keuze als onderdeel van de verzendactie. | Bij reactie nodig volgt status WaitingForUser. |
| 5 | Beheerder | Extern berichtformulier | Kiest Verstuur of een gelijkwaardige actie. | Het systeem start server-side verwerking. | Alleen de server bepaalt definitief of verzenden is toegestaan. |
| 6 | Systeem | Autorisatielaag | Controleert sessie, featurestatus en actieve beheerdercontext. | De verwerking gaat alleen verder bij geldige beheerautorisatie. | Frontend-zichtbaarheid is geen beveiligingslaag. |
| 7 | Systeem | Meldingenservice | Controleert de actuele melding. | De verwerking gaat alleen verder wanneer de melding bestaat, behandelbaar is en niet functioneel gesloten is. | Tickets.Status en afgeleide sluitcontext zijn leidend. |
| 8 | Systeem | Meldingenservice | Controleert de actieve behandelcontext. | De actie gaat alleen verder wanneer de melding minimaal één actieve beheerderkoppeling heeft. | Een melding met status Nieuw moet eerst via UC-GEN-TIC-010 worden gekoppeld. |
| 9 | Systeem | Validatielaag | Valideert de berichttekst. | Lege, te lange of onveilige invoer wordt geweigerd met inline validatie. | Sanitizing en encoding zijn verplicht. |
| 10 | Systeem | Database / transactie | Slaat het externe discussiebericht op. | Er ontstaat een TicketDiscussionMessages-record met Visibility = External. | Afzender is de beheerder, maar gebruikersweergave toont Beheerder. |
| 11 | Systeem | Statusservice | Verwerkt de keuze of reactie nodig is. | Bij reactie nodig wijzigt de status naar WaitingForUser; anders blijft status ongewijzigd. | Statuswijziging is alleen nodig bij gevraagde gebruikersreactie. |
| 12 | Systeem | Berichtensysteem | Maakt een systeembericht voor de melder. | De melder ontvangt een systeembericht met klikbare verwijzing naar de melding. | SystemMessages.EntityType = Ticket; EntityId = TicketId. |
| 13 | Systeem | Audit / history | Legt de externe communicatie vast. | Er ontstaat een compacte TicketHistory-regel. | Volledige vrije tekst staat in TicketDiscussionMessages, niet in history. |
| 14 | Systeem | Readmodels / actie-indicatie | Herberekent laatste activiteit, gebruikersstatus en eventuele actie-indicatie. | De melding verschijnt bij de gebruiker onder Wacht op mij wanneer WaitingForUser actief is. | De indicatie is afgeleid en wordt niet als losse tellerwaarheid opgeslagen. |
| 15 | Systeem | Beheerderdetailweergave | Ververst de discussie en statusinformatie. | De beheerder ziet het geplaatste externe bericht en de actuele status. | Geen privébericht aangemaakt. |
| 16 | Melder | Systeembericht / meldingdetail | Opent later het systeembericht of de meldingdetailpagina. | Het systeem toont de melding en bij WaitingForUser direct de context van het tabblad Discussie. | Het reageren zelf valt onder UC-GEN-TIC-004. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 6 | De sessie is verlopen of ontbreekt. | Het systeem start de generieke loginflow. | Generieke loginflow. | Geen. |
| ALT-002 | 6 | De gebruiker heeft geen actieve beheerdercontext. | Het systeem weigert de beheeractie. | Generieke toegang-geweigerd-afhandeling. | Geen. |
| ALT-003 | 7 | De melding bestaat niet of is niet beschikbaar. | Het systeem toont geen ticketdetails en verwerkt geen mutatie. | POP-GEN-TIC-NOT-AVAILABLE. | Geen. |
| ALT-004 | 7 | De melding is functioneel gesloten. | Het systeem blokkeert externe communicatie via deze usecase. | POP-GEN-TIC-EXTERNAL-NOT-ALLOWED. | Geen. |
| ALT-005 | 8 | De melding heeft status Nieuw en er is geen actieve beheerderkoppeling. | Het systeem weigert de externe communicatie en verwijst functioneel naar eerst koppelen. | POP-GEN-TIC-EXTERNAL-NOT-ALLOWED. | Geen. |
| ALT-006 | 9 | De berichttekst is leeg of bestaat alleen uit whitespace. | Het systeem toont inline validatie en verwerkt de actie niet. | Inline validatie in het formulier. | Geen. |
| ALT-007 | 9 | De berichttekst overschrijdt de toegestane maximale lengte. | Het systeem toont inline validatie en verwerkt de actie niet. | Inline validatie in het formulier. | Geen. |
| ALT-008 | 9 | De berichttekst bevat niet-toegestane of onveilige inhoud. | Het systeem sanitizet of weigert de invoer volgens de centrale rich-textregels. | Inline validatie of veilige melding. | Geen bij weigeren; gesanitized opslag bij toegestane correctie. |
| ALT-009 | 10 | Het externe discussiebericht kan niet worden opgeslagen. | Het systeem rolt de transactie terug. | POP-GEN-TIC-EXTERNAL-FAILED. | Geen blijvende mutatie. |
| ALT-010 | 11 | De statuswijziging naar WaitingForUser kan niet worden verwerkt. | Het systeem rolt de volledige transactie terug. | POP-GEN-TIC-EXTERNAL-FAILED. | Geen blijvende mutatie. |
| ALT-011 | 12 | Het systeembericht kan niet worden aangemaakt. | Het systeem rolt de volledige transactie terug, zodat geen extern bericht zonder notificatie ontstaat. | POP-GEN-TIC-EXTERNAL-FAILED. | Geen blijvende mutatie. |
| ALT-012 | 13 | Historyregistratie kan niet worden aangemaakt. | Het systeem rolt de volledige transactie terug, omdat audit verplicht is. | POP-GEN-TIC-EXTERNAL-FAILED. | Geen blijvende mutatie. |
| ALT-013 | 14 | De actie-indicatie kan niet direct worden ververst, maar de transactie is geslaagd. | Het systeem bewaart de brondata en laat de indicatie bij de volgende read opnieuw afleiden. | Geen domeinspecifieke popup nodig. | Extern bericht, systeembericht en history blijven staan. |
| ALT-014 | 16 | De melder klikt later op het systeembericht maar heeft geen toegang meer tot de melding. | Het systeem weigert toegang tot de meldingdetailcontext. | POP-GEN-TIC-NOT-AVAILABLE of generieke toegang-geweigerd-afhandeling afhankelijk van routecontext. | Geen. |
| ALT-015 | 6-13 | Race condition door gelijktijdige sluiting, heropening of statuswijziging. | Het systeem gebruikt de actuele server-side tickettoestand en verwerkt alleen een geldige mutatie. | POP-GEN-TIC-EXTERNAL-NOT-ALLOWED of POP-GEN-TIC-EXTERNAL-FAILED. | Alleen een consistente mutatie blijft bestaan. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Alleen gebruikers met actieve beheerdercontext mogen externe berichten bij meldingen plaatsen. |
| BR-002 | Een extern bericht bij een melding is zichtbaar voor de melder en voor beheerders. |
| BR-003 | Interne beheerinformatie mag niet in een extern bericht aan de melder worden gelekt. |
| BR-004 | De gebruikersweergave toont externe beheerberichten generiek als afkomstig van Beheerder. |
| BR-005 | De naam van de individuele beheerder is alleen zichtbaar binnen de beheercontext. |
| BR-006 | Externe berichten worden opgeslagen als TicketDiscussionMessages met Visibility = External. |
| BR-007 | Een extern bericht mag alleen worden geplaatst bij een niet-functioneel gesloten melding. |
| BR-008 | Externe communicatie vereist een actieve behandelcontext; een melding met status Nieuw moet eerst aan minimaal één beheerder worden gekoppeld. |
| BR-009 | Wanneer de beheerder aanvullende informatie van de gebruiker vraagt, krijgt de melding status WaitingForUser. |
| BR-010 | Wanneer het externe bericht geen gebruikersreactie vraagt, wijzigt de bestaande ticketstatus niet automatisch. |
| BR-011 | Elk extern beheerbericht aan de melder veroorzaakt een systeembericht met EntityType = Ticket en EntityId = TicketId. |
| BR-012 | Het systeembericht bevat geen losse database-URL; routering gebeurt via EntityType en EntityId. |
| BR-013 | Elk extern beheerbericht moet auditbaar zijn via TicketHistory. |
| BR-014 | Volledige vrije berichttekst hoort in TicketDiscussionMessages; TicketHistory blijft compact. |
| BR-015 | De actie-indicatie Wacht op mij wordt afgeleid uit Tickets.CreatedByUserId = huidige gebruiker en Tickets.Status = WaitingForUser. |
| BR-016 | Deze usecase maakt geen privébericht aan en vervangt geen vrije chatfunctie met beheerders. |
| BR-017 | Externe berichten worden niet gebruikt om een melding formeel op te lossen of te sluiten; daarvoor bestaat de sluit-/oplosflow. |
| BR-018 | Invoer van externe berichten moet server-side worden gevalideerd, gesanitized en veilig gerenderd. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
TicketId / ticketreferentie | Verplicht, geldig formaat en bestaand Tickets-record. |
| Actieve gebruiker | Moet ingelogd zijn en actieve beheerdercontext hebben. |
| Featurestatus | Meldingenfunctionaliteit moet beschikbaar zijn. |
Tickets.Status | Moet een bekende status zijn en mag niet functioneel gesloten zijn. |
| Actieve behandelcontext | Er moet minimaal één actieve beheerderkoppeling bestaan voordat externe communicatie wordt geplaatst. |
| Berichttekst | Verplicht, niet leeg, niet alleen whitespace en begrensd volgens de geldende maximale tekstlengte. |
| Berichtinhoud / rich text | Alleen toegestane veilige opmaak is toegestaan; invoer wordt server-side gesanitized en veilig geëncodeerd. |
| Externe zichtbaarheid | Moet resulteren in Visibility = External. |
| Reactie nodig | Moet expliciet als boolean of gelijkwaardige keuze worden verwerkt. |
| Systeemberichtverwijzing | Moet EntityType = Ticket en EntityId = TicketId gebruiken. |
| Actor bij mutatie | Moet worden vastgelegd voor discussie, history en herleidbaarheid. |
| Tijdstippen | Worden server-side in UTC vastgelegd. |
| Gebruikersweergave afzender | Moet generiek als Beheerder worden weergegeven, niet als individuele beheerdernaam. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 10 | Create | TicketDiscussionMessages | Extern discussiebericht wordt opgeslagen met Visibility = External. |
| 10 | Event | TicketExternalMessageAdded | Domeinevent of afgeleide eventregistratie voor geplaatst extern bericht. |
| 11 | Update | Tickets | Status wijzigt naar WaitingForUser wanneer reactie van gebruiker nodig is. |
| 11 | Event | TicketStatusChanged | Alleen wanneer de ticketstatus daadwerkelijk wijzigt. |
| 12 | Create | SystemMessages | Systeembericht voor de melder wordt aangemaakt met EntityType = Ticket en EntityId = TicketId. |
| 12 | Event | SystemMessageCreated | Domeinevent of afgeleide eventregistratie voor het systeembericht. |
| 13 | Create | TicketHistory | Compacte auditregel voor extern beheerbericht wordt vastgelegd. |
| 14 | Readmodel / afleiding | Gebruikersstatus en actie-indicatie | Wacht op mij wordt opnieuw afgeleid wanneer status WaitingForUser actief is. |
| 14 | Event | TicketActionIndicatorRecalculated | Alleen wanneer zulke afgeleide events expliciet geregistreerd worden. |
| ALT-009 t/m ALT-012 / ALT-015 | Event | TicketExternalMessageFailed | Alleen wanneer fout- of technische events worden geregistreerd. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
TicketAssignments | Externe communicatie wijzigt niet welke beheerders gekoppeld zijn. |
TicketClosures | Een extern bericht lost of sluit de melding niet formeel op. |
TicketReopenRequests | Een extern bericht heropent geen gesloten melding. |
TicketForwardedToTeacher | Een extern bericht zet de melding niet door naar docent. |
PrivateMessageThreads / PrivateMessages | Externe ticketcommunicatie is geen privéberichtthread. |
TicketTechnicalSnapshots | Technische meldcontext blijft de oorspronkelijke snapshot van aanmaakmoment. |
Interne TicketDiscussionMessages | Deze usecase maakt geen intern beheerbericht aan. |
| Gebruikersprofiel van de melder | Externe communicatie wijzigt geen profiel- of voorkeurgegevens. |
13. State diagram — extern bericht en meldingstatus
14. Decision flow — extern bericht plaatsen
15. Data lifecycle diagram — extern bericht en systeembericht
16. Sequence diagrammen
16.1 Extern bericht zonder gevraagde reactie
16.2 Extern bericht met gevraagde reactie
16.3 Transactionele fout bij extern bericht
17. Popupverwijzingen
| PopupKey | Moment | Variant | Doel |
|---|---|---|---|
POP-GEN-TIC-NOT-AVAILABLE | Wanneer de melding niet bestaat, niet beschikbaar is of niet geopend mag worden. | InfoOnly | Voorkomen dat beheerder handelt op een ontbrekende of ontoegankelijke melding. |
POP-GEN-TIC-EXTERNAL-NOT-ALLOWED | Wanneer extern bericht plaatsen niet is toegestaan, bijvoorbeeld bij gesloten melding of ontbreken van actieve behandelcontext. | InfoOnly | Uitleggen dat de externe berichtactie niet kan worden uitgevoerd. |
POP-GEN-TIC-EXTERNAL-FAILED | Wanneer opslaan van extern bericht, statusupdate, systeembericht of history transactioneel mislukt. | InfoOnly | Veilige foutmelding tonen zonder technische details. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft externe beheerdercommunicatie als onderdeel van de beheerderdetailweergave, inclusief expliciete keuze extern, generieke afzenderweergave Beheerder, status WaitingForUser bij gevraagde reactie en systeembericht naar de melder. |
| Functioneel Ontwerp | Beschrijft dat externe berichten zichtbaar zijn in de gebruikersdetailweergave op het tabblad Discussie, terwijl interne beheerberichten verborgen blijven. |
| Functioneel Ontwerp | Beschrijft dat een melding met status Nieuw eerst aan minimaal één beheerder gekoppeld moet zijn voordat externe communicatie wordt geplaatst. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft de transactionele verwerking uit voor TicketDiscussionMessages, eventuele Tickets.Status-update, SystemMessages, TicketHistory en afgeleide readmodels. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijf dat SystemMessages voor meldingen routeren via EntityType = Ticket en EntityId = TicketId, niet via losse URL's. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijf server-side validatie, sanitizing en veilige rendering van externe berichttekst. |
| Software Requirements Specification | Beschrijft requirements voor externe berichten, statuswijziging bij gevraagde reactie, systeembericht aan melder, auditregistratie, autorisatie en transactionele consistentie. |
| Database-informatie | Controleer dat TicketDiscussionMessages, SystemMessages, TicketHistory en Tickets.Status de benodigde velden en verwijzingen bevatten voor deze flow. |
| Popupregister | Neem POP-GEN-TIC-EXTERNAL-NOT-ALLOWED en POP-GEN-TIC-EXTERNAL-FAILED op; hergebruik POP-GEN-TIC-NOT-AVAILABLE. |
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-GEN-TIC-011-001 | SRS-MSG-001 SRS-TIC-003 SRS-ADM-001 AC-MSG-001 AC-TIC-003 AC-ADM-001 | Alleen gebruikers met actieve beheerdercontext toestaan om externe berichten bij meldingen te plaatsen |
REQ-UC-GEN-TIC-011-002 | SRS-AUTH-001 SRS-TIC-003 SRS-ADM-002 SRS-ADM-001 AC-AUTH-001 AC-TIC-003 AC-ADM-002 AC-ADM-001 | Vóór verwerking server-side controleren of de melding bestaat en door de beheerder behandeld mag worden |
REQ-UC-GEN-TIC-011-003 | SRS-MSG-001 SRS-TIC-002 AC-MSG-001 AC-TIC-002 | Voorkomen dat externe berichten worden geplaatst bij functioneel gesloten meldingen |
REQ-UC-GEN-TIC-011-004 | SRS-TIC-003 AC-TIC-003 | Externe communicatie alleen toestaan wanneer de melding een actieve behandelcontext heeft |
REQ-UC-GEN-TIC-011-005 | SRS-TIC-003 SRS-ADM-001 AC-TIC-003 AC-ADM-001 | Een melding met status Nieuw eerst via beheerderkoppeling in behandelcontext brengen voordat externe communicatie wordt geplaatst |
REQ-UC-GEN-TIC-011-006 | SRS-MSG-001 SRS-TIC-003 SRS-ADM-001 AC-MSG-001 AC-TIC-003 AC-ADM-001 | De beheerder expliciet laten kiezen of het bericht extern zichtbaar is |
REQ-UC-GEN-TIC-011-007 | SRS-TIC-003 SRS-ADM-001 AC-TIC-003 AC-ADM-001 | De beheerder expliciet laten aangeven of een reactie van de gebruiker nodig is |
REQ-UC-GEN-TIC-011-008 | SRS-MSG-001 SRS-TIC-002 AC-MSG-001 AC-TIC-002 | Externe berichttekst verplicht stellen |
REQ-UC-GEN-TIC-011-009 | SRS-AUTH-001 SRS-MSG-001 SRS-TIC-002 SRS-NFR-SEC-001 AC-AUTH-001 AC-MSG-001 AC-TIC-002 AC-NFR-SEC-001 | Externe berichttekst server-side valideren, sanitizen en veilig renderen |
REQ-UC-GEN-TIC-011-010 | SRS-MSG-001 SRS-TIC-002 AC-MSG-001 AC-TIC-002 | Een extern bericht opslaan als TicketDiscussionMessages met Visibility = External |
REQ-UC-GEN-TIC-011-011 | SRS-MSG-001 SRS-TIC-003 SRS-ADM-001 AC-MSG-001 AC-TIC-003 AC-ADM-001 | Externe beheerberichten in de gebruikersweergave generiek tonen als afkomstig van Beheerder |
REQ-UC-GEN-TIC-011-012 | SRS-TIC-003 SRS-ADM-001 AC-TIC-003 AC-ADM-001 | De naam van de individuele beheerder niet tonen aan de melder bij externe beheercommunicatie |
REQ-UC-GEN-TIC-011-013 | SRS-MSG-001 SRS-TIC-001 SRS-ADM-001 AC-MSG-001 AC-TIC-001 AC-ADM-001 | Bij elk extern beheerbericht een systeembericht voor de melder aanmaken |
REQ-UC-GEN-TIC-011-014 | SRS-MSG-001 SRS-TIC-002 AC-MSG-001 AC-TIC-002 | Het systeembericht moet verwijzen met EntityType = Ticket en EntityId = TicketId |
REQ-UC-GEN-TIC-011-015 | SRS-MSG-001 SRS-TIC-005 AC-MSG-001 AC-TIC-005 | De ticketstatus naar WaitingForUser zetten wanneer met het externe bericht een reactie van de gebruiker wordt gevraagd |
REQ-UC-GEN-TIC-011-016 | SRS-MSG-001 SRS-TIC-005 AC-MSG-001 AC-TIC-005 | De bestaande ticketstatus behouden wanneer het externe bericht geen reactie van de gebruiker vraagt |
REQ-UC-GEN-TIC-011-017 | SRS-RDM-001 SRS-TIC-002 AC-RDM-001 AC-TIC-002 | De gebruikersgerichte actie-indicatie Wacht op mij opnieuw kunnen afleiden na status WaitingForUser |
REQ-UC-GEN-TIC-011-018 | SRS-MSG-001 SRS-TIC-002 SRS-ADM-001 SRS-NFR-AUD-001 AC-MSG-001 AC-TIC-002 AC-ADM-001 AC-NFR-AUD-001 | Elk extern beheerbericht auditbaar vastleggen in TicketHistory |
REQ-UC-GEN-TIC-011-019 | SRS-MSG-001 SRS-TIC-002 SRS-NFR-AUD-001 AC-MSG-001 AC-TIC-002 AC-NFR-AUD-001 | Volledige vrije berichttekst buiten TicketHistory houden en in TicketDiscussionMessages opslaan |
REQ-UC-GEN-TIC-011-020 | SRS-MSG-001 SRS-TIC-006 SRS-ADM-001 SRS-NFR-AUD-001 AC-MSG-001 AC-TIC-006 AC-ADM-001 AC-NFR-AUD-001 | Externe beheercommunicatie transactioneel verwerken met discussiebericht, eventuele statusupdate, systeembericht en history |
REQ-UC-GEN-TIC-011-021 | SRS-MSG-001 SRS-TIC-002 SRS-SHR-001 SRS-NFR-AVL-001 AC-MSG-001 AC-TIC-002 AC-SHR-001 AC-NFR-AVL-001 | Bij mislukte transactionele verwerking geen gedeeltelijk extern bericht zichtbaar maken |
REQ-UC-GEN-TIC-011-022 | SRS-TIC-002 AC-TIC-002 | Bij niet-beschikbare melding POP-GEN-TIC-NOT-AVAILABLE gebruiken |
REQ-UC-GEN-TIC-011-023 | SRS-TIC-002 AC-TIC-002 | Bij niet-toegestane externe communicatie POP-GEN-TIC-EXTERNAL-NOT-ALLOWED gebruiken |
REQ-UC-GEN-TIC-011-024 | SRS-TIC-002 AC-TIC-002 | Bij technische of transactionele fout POP-GEN-TIC-EXTERNAL-FAILED gebruiken |
REQ-UC-GEN-TIC-011-025 | SRS-MSG-001 SRS-TIC-001 AC-MSG-001 AC-TIC-001 | Bij externe ticketcommunicatie geen PrivateMessageThreads of PrivateMessages aanmaken |
REQ-UC-GEN-TIC-011-026 | SRS-RDM-001 SRS-RDM-007 SRS-MSG-007 SRS-TIC-006 AC-RDM-001 AC-RDM-007 AC-MSG-007 AC-TIC-006 | Het openen van het systeembericht door de melder moet de meldingdetailpagina kunnen openen en bij WaitingForUser de discussiecontext tonen |
REQ-UC-GEN-TIC-011-027 | SRS-MSG-001 SRS-TIC-006 SRS-ADM-001 AC-MSG-001 AC-TIC-006 AC-ADM-001 | Voorkomen dat interne beheerinformatie via externe berichten of gebruikersweergave zichtbaar wordt voor de melder |