UC-GEN-TIC-005 — Eigen melding sluiten
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-TIC-005 |
| Naam | Eigen melding sluiten |
| Domein | Meldingen |
| Primaire actor | Ingelogde gebruiker |
| Secundaire actor(en) | Systeem, meldingenservice, beheerder als behandelaar buiten deze usecase |
| Rolcontext | Iedere ingelogde gebruiker die binnen de normale gebruikersweergave een eigen, niet-functioneel gesloten melding mag openen en zelf mag sluiten |
| Betrokken schermen | SCH-GEN-06-01 — Meldingen; SCH-GEN-06-02 — Melding details |
| Gerelateerde usecases | UC-GEN-TIC-002 — Mijn meldingen bekijken; UC-GEN-TIC-003 — Melding details bekijken; UC-GEN-TIC-004 — Reageren op melding; UC-GEN-TIC-006 — Oplossing accepteren; UC-GEN-TIC-007 — Melding heropenen door gebruiker; UC-GEN-MSG-003 — Bericht openen |
| Primaire entiteiten | Tickets, TicketClosures, TicketDiscussionMessages, TicketHistory |
| Secundaire entiteiten / events | Users, TicketStatuses, TicketResolutionTypes, TicketActionIndicatorRecalculated, TicketClosedByUser, TicketCloseFailed |
| Gerelateerde popups | POP-GEN-TIC-CLOSE-OWN-CONFIRM, POP-GEN-TIC-CLOSE-NOT-ALLOWED, POP-GEN-TIC-CLOSE-FAILED, POP-GEN-TIC-NOT-AVAILABLE |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must have |
2. Omschrijving
De gebruiker sluit een eigen melding vanuit de gebruikersgerichte detailpagina. Deze actie is bedoeld voor situaties waarin de gebruiker de melding niet meer door beheer wil laten behandelen, bijvoorbeeld omdat het probleem niet meer speelt of omdat de melding per ongeluk is aangemaakt.
Het sluiten van de eigen melding is een formele ticketmutatie. De gebruiker moet een reden van sluiten invullen. Het systeem registreert de sluiting in TicketClosures met resolutietype ClosedByUser en gebruikerslabel Gesloten door gebruiker. De reden wordt functioneel zichtbaar gehouden als extern discussiebericht bij de melding. Daarnaast wordt een compacte auditregel in TicketHistory vastgelegd.
Deze usecase is geen oplossing-acceptatie. Wanneer beheer al een oplossing heeft geplaatst en de gebruiker die oplossing wil accepteren, hoort dat bij UC-GEN-TIC-006. Deze usecase beschrijft uitsluitend het zelf sluiten van een eigen melding zolang de melding nog niet functioneel gesloten is.
3. Scope
Deze usecase beschrijft:
- het openen van de eigen meldingdetailpagina;
- het tonen van de actie Melding sluiten zolang de melding nog niet functioneel gesloten is;
- het openen van een bevestigingspopup met verplicht tekstveld voor de reden van sluiten;
- het opnieuw server-side controleren van sessie, featurestatus, objecttoegang en actuele tickettoestand;
- het valideren van de verplichte reden;
- het registreren van de formele sluiting in
TicketClosures; - het gebruiken van resolutietype
ClosedByUsermet gebruikerslabel Gesloten door gebruiker; - het vastleggen van de reden als extern zichtbaar discussiebericht;
- het vastleggen van een compacte auditregel in
TicketHistory; - het wijzigen van de ticketstatus naar
Closed; - het opnieuw afleiden van gebruikersstatus en actie-indicaties;
- het verplaatsen van de melding naar de gebruikersgerichte gesloten weergave;
- foutpaden wanneer de melding inmiddels gesloten, niet beschikbaar of niet toegankelijk is.
Deze usecase beschrijft niet:
- het indienen van een nieuwe melding;
- het bekijken van het meldingenoverzicht;
- het algemeen openen van de meldingdetailpagina;
- het regulier reageren op een melding;
- het accepteren van een door beheer aangeboden oplossing;
- het heropenen van een melding binnen een heropentermijn;
- het plaatsen van interne of externe beheerberichten;
- het oplossen of sluiten door een beheerder;
- het handmatig heropenen door een beheerder;
- het doorzetten naar docent;
- het verwijderen of anonimiseren van ticketdata;
- het aanmaken van privéberichten;
- het wijzigen van ticketcategorieën, technische snapshots of beheerderkoppelingen;
- seeddata of beheer van popupteksten.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd. |
| PRE-002 | De meldingenfunctionaliteit is sitebreed beschikbaar. |
| PRE-003 | De gebruiker heeft toegang tot de normale gebruikersweergave van eigen meldingen. |
| PRE-004 | De melding bestaat als Tickets-record. |
| PRE-005 | Tickets.CreatedByUserId van de melding is gelijk aan de ingelogde gebruiker. |
| PRE-006 | De melding is niet functioneel gesloten. |
| PRE-007 | De actie Melding sluiten is beschikbaar op de gebruikersgerichte detailpagina. |
| PRE-008 | Het resolutietype met technische code ClosedByUser bestaat als vaste waardelijstwaarde. |
| PRE-009 | De applicatie kan een TicketClosures-record, een extern TicketDiscussionMessages-record en een TicketHistory-record transactioneel opslaan. |
| PRE-010 | De popupdefinitie voor het sluiten van de eigen melding is beschikbaar via het popupregister. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De melding is formeel gesloten via een nieuw TicketClosures-record. |
| POST-002 | De sluiting gebruikt het resolutietype ClosedByUser / Gesloten door gebruiker. |
| POST-003 | ClosedByUserId verwijst naar de ingelogde gebruiker die de sluitactie uitvoerde. |
| POST-004 | De reden van sluiten is als extern zichtbaar discussiebericht vastgelegd. |
| POST-005 | Er is minimaal één compacte TicketHistory-regel vastgelegd. |
| POST-006 | De ticketstatus is Closed. |
| POST-007 | De gebruikersgerichte status van de melding wordt Gesloten. |
| POST-008 | De melding is niet langer zichtbaar in de gebruikersgerichte tab Open. |
| POST-009 | De melding is niet langer zichtbaar in de gebruikersgerichte tab Wacht op mij. |
| POST-010 | De melding blijft raadpleegbaar via de gebruikersgerichte tab Gesloten. |
| POST-011 | De actie Melding sluiten is na sluiting niet meer beschikbaar. |
| POST-012 | Reguliere reacties zijn na sluiting niet meer beschikbaar. |
| POST-013 | De actie-indicatie voor Wacht op mij wordt opnieuw afgeleid. |
| POST-014 | Interne beheerinformatie blijft onzichtbaar voor de gebruiker. |
| POST-015 | Er wordt geen nieuwe tabel gebruikt voor sluiten door gebruiker. |
| POST-016 | Er wordt geen privébericht aangemaakt. |
| POST-017 | Bij annuleren of validatiefout wordt geen ticketmutatie uitgevoerd. |
| POST-018 | Bij een transactionele fout blijven ticketstatus, sluitregistratie, discussie en history consistent. |
6. Trigger
De gebruiker opent een eigen, niet-functioneel gesloten melding en kiest op het tabblad Melding de actie Melding sluiten.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | SCH-GEN-06-01 — Meldingen | Opent een eigen melding via Bekijk details. | Het systeem opent de detailpagina. | Detailopening valt onder UC-GEN-TIC-003. |
| 2 | Systeem | Backend / autorisatie | Controleert sessie, featurestatus en objecttoegang. | Alleen eigen meldingen worden geopend. | Tickets.CreatedByUserId = huidige gebruiker. |
| 3 | Systeem | SCH-GEN-06-02 — Melding details | Toont de meldingdetailpagina. | De gebruiker ziet de tabbladen Melding, Oplossing en Discussie. | Interne beheerinformatie blijft verborgen. |
| 4 | Systeem | SCH-GEN-06-02 — Tabblad Melding | Bepaalt of de actie Melding sluiten beschikbaar is. | De actie wordt getoond zolang de melding niet functioneel gesloten is. | Gesloten meldingen zijn alleen-lezen voor deze actie. |
| 5 | Gebruiker | Tabblad Melding | Kiest Melding sluiten. | Het systeem opent de sluitpopup. | PopupKey POP-GEN-TIC-CLOSE-OWN-CONFIRM. |
| 6 | Systeem | Popup | Toont bevestiging en verplicht tekstveld. | De gebruiker kan annuleren of een reden invullen en bevestigen. | Popupinhoud staat centraal in het popupregister. |
| 7 | Gebruiker | Popup | Vult de reden van sluiten in. | De reden blijft beschikbaar in de popup tot annuleren of bevestigen. | Leeg of alleen witruimte is ongeldig. |
| 8 | Gebruiker | Popup | Bevestigt de sluiting. | Het systeem start server-side validatie. | Frontendvalidatie mag bestaan, maar server-side validatie is leidend. |
| 9 | Systeem | Backend / validatie | Controleert sessie, featurestatus, ticketbestaan en objecttoegang opnieuw. | Het systeem verwerkt alleen wanneer de gebruiker nog steeds eigenaar van de melding is. | Race conditions worden server-side afgevangen. |
| 10 | Systeem | Backend / validatie | Controleert de actuele functionele tickettoestand. | Het systeem verwerkt alleen wanneer de melding nog niet functioneel gesloten is. | Opgelost/Gesloten blokkeert deze sluitactie. |
| 11 | Systeem | Backend / validatie | Valideert de reden van sluiten. | Het systeem accepteert alleen een niet-lege reden. | De reden wordt veilig verwerkt voor opslag en weergave. |
| 12 | Systeem | Backend / transactionele opslag | Maakt de formele sluitregistratie aan. | Er ontstaat een TicketClosures-record. | ResolutionType = ClosedByUser; ClosedByUserId = huidige gebruiker. |
| 13 | Systeem | Backend / transactionele opslag | Legt de reden extern zichtbaar vast. | Er ontstaat een TicketDiscussionMessages-record met externe zichtbaarheid. | De reden blijft functioneel terugleesbaar voor gebruiker en beheer. |
| 14 | Systeem | Backend / statuslogica | Zet de ticketstatus naar Closed. | De melding is niet meer open of actiebehoevend voor de gebruiker. | Afsluitstatus en processtatus blijven verschillende concepten. |
| 15 | Systeem | Backend / ticketmetadata | Werkt laatste activiteit bij. | De detail- en overzichtsweergave kunnen de nieuwe activiteit tonen. | Datum- en tijdwaarden worden in UTC opgeslagen. |
| 16 | Systeem | Backend / history | Legt een compacte historyregel vast. | TicketHistory bevat de formele sluitactie. | Vrije reden wordt niet volledig in history gedupliceerd. |
| 17 | Systeem | Backend / transactie | Rondt de transactie af. | Sluitregistratie, extern discussie-item, status en history zijn consistent opgeslagen. | Bij falen wordt de volledige transactie teruggedraaid. |
| 18 | Systeem | UI / readmodel | Ververst de detailpagina. | De melding toont gebruikersstatus Gesloten en sluitacties verdwijnen. | De melding blijft raadpleegbaar. |
| 19 | Systeem | UI / overzichtsafleiding | Bepaalt tabindeling en actie-indicaties opnieuw. | De melding verdwijnt uit Open en Wacht op mij en blijft zichtbaar onder Gesloten. | Wacht op mij wordt afgeleid uit actuele ticketstatus. |
| 20 | Gebruiker | SCH-GEN-06-02 — Melding details | Bekijkt de gesloten melding of keert terug naar het overzicht. | Het systeem toont alleen nog toegestane vervolgacties voor een gesloten melding. | Regulier reageren en opnieuw sluiten zijn niet beschikbaar. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 / 9 | De gebruiker is niet ingelogd of de sessie is verlopen. | Het systeem volgt de generieke loginflow. | Generieke loginflow. | Geen. |
| ALT-002 | 2 / 9 | De meldingenfunctionaliteit is uitgeschakeld. | Het systeem blokkeert de actie of route volgens generieke feature-afhandeling. | Generieke melding. | Geen. |
| ALT-003 | 2 / 9 | De melding bestaat niet meer of kan niet geladen worden. | Het systeem toont een veilige niet-beschikbaarmelding. | POP-GEN-TIC-NOT-AVAILABLE. | Geen. |
| ALT-004 | 2 / 9 | De melding hoort niet bij de ingelogde gebruiker. | Het systeem weigert server-side toegang zonder details over het bestaan van het record te lekken. | Generieke toegangsmelding of POP-GEN-TIC-NOT-AVAILABLE. | Geen. |
| ALT-005 | 4 / 10 | De melding is inmiddels functioneel gesloten. | Het systeem verbergt of blokkeert de sluitactie en ververst de detailweergave. | POP-GEN-TIC-CLOSE-NOT-ALLOWED. | Geen. |
| ALT-006 | 4 | De melding is gebruikersgericht Opgelost binnen de heropentermijn. | Het systeem toont geen actie Melding sluiten; de gebruiker kan de oplossing accepteren of heropenen via de daarvoor bedoelde flow. | Geen popup vanuit deze usecase. | Geen. |
| ALT-007 | 6 | De gebruiker sluit de popup zonder te bevestigen. | Het systeem keert terug naar de detailpagina. | Geen. | Geen. |
| ALT-008 | 7 / 11 | De reden is leeg of bevat alleen witruimte. | Het systeem toont validatie bij het verplichte veld en verwerkt de sluiting niet. | Inline validatie binnen de popup. | Geen. |
| ALT-009 | 11 | De reden bevat onveilige of niet-toegestane inhoud. | Het systeem sanitizet of blokkeert de inhoud volgens de veilige tekstverwerkingsregels. | Inline validatie wanneer blokkeren nodig is. | Geen bij blokkeren; gesanitizete opslag wanneer toegestaan. |
| ALT-010 | 12-17 | De databaseactie of transactie faalt. | Het systeem draait de transactie terug en toont een veilige foutmelding. | POP-GEN-TIC-CLOSE-FAILED. | Geen gedeeltelijke domeinmutatie. |
| ALT-011 | 13 | Het externe discussie-item kan niet worden opgeslagen. | Het systeem beschouwt de sluittransactie als mislukt, omdat de reden zichtbaar terugleesbaar moet blijven. | POP-GEN-TIC-CLOSE-FAILED. | Geen gedeeltelijke domeinmutatie. |
| ALT-012 | 14 | De melding stond op WaitingForUser. | Het systeem sluit de melding en verwijdert de actiebehoefte voor de gebruiker. | Geen extra popup. | Tickets.Status = Closed; actie-indicatie wordt opnieuw afgeleid. |
| ALT-013 | 14 | De melding stond op New of InProgress. | Het systeem sluit de melding zonder dat eerst beheer een oplossing hoeft te plaatsen. | Geen extra popup. | Tickets.Status = Closed. |
| ALT-014 | 18 | De sluiting is opgeslagen maar de UI-refresh mislukt. | Het systeem toont een veilige laadfout of biedt herladen aan. | Veilige melding zonder technische details. | De opgeslagen sluiting blijft bestaan. |
| ALT-015 | 19 | De gebruiker is leerling en zit in een actieve oefenrun. | Meldingenindicaties worden tijdens de actieve run tijdelijk verborgen, maar de onderliggende sluiting blijft geldig. | Geen popup. | Geen extra mutatie. |
| ALT-016 | 20 | De gebruiker probeert opnieuw te reageren op de gesloten melding. | Het systeem blokkeert reguliere reactieplaatsing. | Valt onder UC-GEN-TIC-004 met POP-GEN-TIC-REPLY-NOT-ALLOWED. | Geen vanuit deze usecase. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-GEN-TIC-005-001 | Een gebruiker mag alleen de eigen melding sluiten. |
| BR-UC-GEN-TIC-005-002 | Objecttoegang tot de melding wordt server-side gecontroleerd op basis van Tickets.CreatedByUserId. |
| BR-UC-GEN-TIC-005-003 | De actie Melding sluiten is alleen beschikbaar zolang de melding niet functioneel gesloten is. |
| BR-UC-GEN-TIC-005-004 | Het sluiten van de eigen melding vereist altijd een reden. |
| BR-UC-GEN-TIC-005-005 | De reden mag niet leeg zijn en mag niet alleen uit witruimte bestaan. |
| BR-UC-GEN-TIC-005-006 | De reden moet veilig worden opgeslagen en weergegeven zonder actieve HTML of JavaScript uit te voeren. |
| BR-UC-GEN-TIC-005-007 | Sluiten door gebruiker gebruikt geen aparte tabel. |
| BR-UC-GEN-TIC-005-008 | Sluiten door gebruiker wordt formeel vastgelegd in TicketClosures. |
| BR-UC-GEN-TIC-005-009 | Sluiten door gebruiker gebruikt resolutietype ClosedByUser met gebruikerslabel Gesloten door gebruiker. |
| BR-UC-GEN-TIC-005-010 | ClosedByUserId mag bij deze flow verwijzen naar de melder/gebruiker zelf. |
| BR-UC-GEN-TIC-005-011 | De reden van sluiten wordt functioneel zichtbaar gehouden als extern discussiebericht. |
| BR-UC-GEN-TIC-005-012 | De formele sluitactie wordt compact vastgelegd in TicketHistory. |
| BR-UC-GEN-TIC-005-013 | Vrije tekst uit de reden wordt niet volledig in TicketHistory gedupliceerd. |
| BR-UC-GEN-TIC-005-014 | Na sluiten door gebruiker krijgt de melding processtatus Closed. |
| BR-UC-GEN-TIC-005-015 | Na sluiten door gebruiker is de gebruikersgerichte status Gesloten. |
| BR-UC-GEN-TIC-005-016 | Sluiten door gebruiker is geen oplossing-acceptatie. |
| BR-UC-GEN-TIC-005-017 | Sluiten door gebruiker start geen gebruikersgerichte heropentermijn voor oplossing. |
| BR-UC-GEN-TIC-005-018 | Een gesloten melding blijft voor de gebruiker raadpleegbaar via de tab Gesloten. |
| BR-UC-GEN-TIC-005-019 | Reguliere reacties en opnieuw sluiten zijn na deze sluiting niet meer beschikbaar. |
| BR-UC-GEN-TIC-005-020 | De actie-indicatie voor Wacht op mij wordt na sluiting opnieuw afgeleid en niet als losse teller opgeslagen. |
| BR-UC-GEN-TIC-005-021 | Het sluiten van een melding maakt geen privébericht aan. |
| BR-UC-GEN-TIC-005-022 | Bij transactionele fouten mag geen gedeeltelijke sluit-, discussie-, status- of historymutatie achterblijven. |
Centrale business rules die hierbij horen:
| BusinessRule-ID | Toepassing |
|---|---|
BR-GEN-SEC-001 | Alle afgeschermde acties vereisen server-side rol-, relatie- of objectcontrole. |
BR-GEN-TIC-007 | Een eindgebruiker ziet en bewerkt uitsluitend eigen meldingen. |
BR-GEN-TIC-017 | Reguliere reacties op functioneel gesloten meldingen zijn niet toegestaan. |
BR-GEN-TIC-018 | Een gebruiker mag een eigen open melding zelf sluiten met verplichte reden. |
BR-GEN-TIC-019 | Sluiten door gebruiker hergebruikt TicketClosures met resolutietype ClosedByUser. |
BR-GEN-TIC-020 | De reden van sluiten door gebruiker wordt extern zichtbaar vastgelegd en niet als aparte sluitingstabel gemodelleerd. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Gebruiker | Moet ingelogd zijn en toegang hebben tot de normale applicatiecontext. |
| Featurestatus | De meldingenfunctionaliteit moet sitebreed beschikbaar zijn. |
| Ticketobject | Moet bestaan en toegankelijk zijn voor de ingelogde gebruiker. |
| Objectautorisatie | Tickets.CreatedByUserId moet gelijk zijn aan de huidige gebruiker. |
| Ticketstatus | Sluiten is alleen toegestaan wanneer de melding niet functioneel gesloten is. |
| Functionele geslotenheid | Wordt afgeleid uit status, sluitregistratie, heropentermijn en acceptatie-/sluitlogica. |
| Reden van sluiten | Verplicht bij bevestigen. |
| Reden van sluiten | Mag niet leeg zijn en mag niet alleen uit witruimte bestaan. |
| Reden van sluiten | Moet veilig worden opgeslagen en weergegeven; actieve HTML, JavaScript of vergelijkbare actieve inhoud wordt niet uitgevoerd. |
| Resolutietype | Moet verwijzen naar de vaste waarde ClosedByUser. |
ClosedByUserId | Moet verwijzen naar de ingelogde gebruiker die de actie uitvoert. |
| Sluitmoment | Wordt in UTC opgeslagen. |
| Extern discussie-item | Moet gekoppeld zijn aan hetzelfde ticket en extern zichtbaar zijn. |
| Historyregistratie | Moet verwijzen naar actor, ticket en uitgevoerde sluitactie; vrije reden wordt niet volledig in history gedupliceerd. |
| Transactionele consistentie | TicketClosures, TicketDiscussionMessages, Tickets.Status en TicketHistory worden als samenhangende mutatie verwerkt. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 12 | Create | TicketClosures | Nieuw sluitrecord met TicketId, ResolutionType = ClosedByUser, ClosedByUserId, ClosedAtUtc en de relevante formele sluitmetadata. |
| 13 | Create | TicketDiscussionMessages | Nieuw extern zichtbaar discussiebericht met de reden van sluiten. |
| 14 | Update | Tickets | Status wordt Closed. |
| 15 | Update | Tickets | Laatste activiteit wordt bijgewerkt. |
| 16 | Create | TicketHistory | Compacte auditregel voor het sluiten door de gebruiker. |
| 17 | Event | TicketClosedByUser | Domeinevent dat de gebruiker de eigen melding heeft gesloten. |
| 19 | Event / afleiding | TicketActionIndicatorRecalculated | Actie-indicatie voor Wacht op mij wordt opnieuw afgeleid. |
| ALT-010 | Event | TicketCloseFailed | Technische of transactionele fout bij het sluiten van de melding. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
PrivateMessageThreads | Het sluiten van een melding is geen privéberichtflow. |
PrivateMessages | Er wordt geen privébericht aangemaakt. |
SystemMessages | De gebruiker hoeft geen systeembericht te ontvangen over de eigen sluitactie. |
TicketReopenRequests | Deze flow heropent niets. |
TicketForwardedToTeacher | Doorzetten naar docent valt buiten deze usecase. |
TicketTechnicalSnapshots | De technische snapshot hoort bij aanmaken of specifieke technische processen, niet bij sluiten. |
TicketAssignments | Sluiten door de gebruiker wijzigt gekoppelde beheerders niet als aparte actie binnen deze usecase. |
TicketResolutionTypes | De vaste waarde ClosedByUser wordt gebruikt; de waardelijst zelf wordt niet gewijzigd. |
| Interne beheerberichten | De gebruiker kan geen intern beheerbericht plaatsen. |
| Popupdefinities | Popupinhoud wordt centraal beheerd en niet door deze usecase aangemaakt. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Normale flow — eigen melding sluiten
16.2 Exceptionele flow — niet meer toegestaan bij bevestigen
17. Popupverwijzingen
| PopupKey | Moment | Variant | Doel |
|---|---|---|---|
POP-GEN-TIC-CLOSE-OWN-CONFIRM | Bij kiezen van Melding sluiten op een eigen, open melding. | InputTextarea | Bevestigen van de sluitactie en vastleggen van de verplichte reden. |
POP-GEN-TIC-CLOSE-NOT-ALLOWED | Wanneer de melding inmiddels functioneel gesloten is of de actie in de actuele toestand niet meer geldig is. | InfoOnly | Uitleggen dat de melding niet via deze flow gesloten kan worden. |
POP-GEN-TIC-CLOSE-FAILED | Wanneer de sluitactie technisch of transactioneel mislukt. | InfoOnly | Veilige foutmelding tonen zonder gedeeltelijke mutatie achter te laten. |
POP-GEN-TIC-NOT-AVAILABLE | Wanneer de melding niet bestaat, niet toegankelijk is of niet veilig geladen kan worden. | InfoOnly | Generieke niet-beschikbaarmelding voor meldingdetailflows. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft dat de actie Melding sluiten op het tabblad Melding beschikbaar is zolang de eigen melding niet functioneel gesloten is. |
| Functioneel Ontwerp | Beschrijft dat de sluitpopup een verplicht tekstveld Reden van sluiten bevat. |
| Functioneel Ontwerp | Beschrijft dat sluiten door gebruiker leidt tot gebruikersstatus Gesloten en dat de melding daarna onder het tabblad Gesloten raadpleegbaar blijft. |
| Functioneel Ontwerp | Beschrijft dat deze flow verschilt van oplossing accepteren en van heropenen binnen de heropentermijn. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft CloseOwnTicketCommand uit als transactionele mutatie over TicketClosures, TicketDiscussionMessages, Tickets en TicketHistory. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft dat resolutietype ClosedByUser als vaste waardelijstwaarde aanwezig moet zijn. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft dat de reden als extern discussie-item wordt opgeslagen en niet in een aparte sluitingstabel. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijf server-side objectcontrole op Tickets.CreatedByUserId. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijf transactionele rollback bij gedeeltelijke fout in sluitregistratie, discussie-item, statusupdate of history. |
| Software Requirements Specification | Beschrijft requirements voor verplichte reden, objectautorisatie, formele sluitregistratie, externe zichtbaarheid van de reden, historyregistratie en gesloten weergave. |
| Database-informatie | Controleer dat TicketClosures sluiten door gebruiker ondersteunt via ClosedByUserId en ResolutionTypeId = ClosedByUser. |
| Database-informatie | Controleer dat TicketDiscussionMessages geschikt is voor het extern zichtbaar vastleggen van de sluitreden. |
| Popupbeheer | Beschrijft of de benodigde popupkeys toe of bevestig bestaande keys in het centrale popupregister. |
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-005-001 | SRS-TIC-002 AC-TIC-002 | Een ingelogde gebruiker toestaan een eigen melding te sluiten zolang deze melding niet functioneel gesloten is |
REQ-UC-GEN-TIC-005-002 | SRS-AUTH-001 SRS-TIC-007 AC-AUTH-001 AC-TIC-007 | Server-side controleren dat de te sluiten melding door de ingelogde gebruiker is aangemaakt |
REQ-UC-GEN-TIC-005-003 | SRS-TIC-007 AC-TIC-007 | De actie Melding sluiten alleen tonen of toestaan wanneer de actuele tickettoestand dit toestaat |
REQ-UC-GEN-TIC-005-004 | SRS-TIC-007 SRS-POP-001 AC-TIC-007 AC-POP-001 | Vóór het sluiten een bevestigingspopup tonen met een verplicht tekstveld voor de reden van sluiten |
REQ-UC-GEN-TIC-005-005 | SRS-AUTH-001 SRS-TIC-007 AC-AUTH-001 AC-TIC-007 | Sluiten blokkeren wanneer de reden leeg is of alleen uit witruimte bestaat |
REQ-UC-GEN-TIC-005-006 | SRS-TIC-002 SRS-NFR-SEC-001 AC-TIC-002 AC-NFR-SEC-001 | De reden veilig verwerken en mag actieve HTML, JavaScript of vergelijkbare actieve inhoud niet uitvoeren |
REQ-UC-GEN-TIC-005-007 | SRS-TIC-007 SRS-NFR-AUD-001 AC-TIC-007 AC-NFR-AUD-001 | Sluiten door gebruiker vastleggen in TicketClosures en geen aparte sluitingstabel introduceren |
REQ-UC-GEN-TIC-005-008 | SRS-TIC-007 AC-TIC-007 | Bij sluiten door gebruiker het resolutietype ClosedByUser / Gesloten door gebruiker gebruiken |
REQ-UC-GEN-TIC-005-009 | SRS-TIC-002 SRS-NFR-AUD-001 AC-TIC-002 AC-NFR-AUD-001 | Vastleggen welke gebruiker de eigen melding heeft gesloten |
REQ-UC-GEN-TIC-005-010 | SRS-TIC-006 SRS-NFR-AUD-001 AC-TIC-006 AC-NFR-AUD-001 | De reden van sluiten extern zichtbaar vastleggen binnen de ticketdiscussie |
REQ-UC-GEN-TIC-005-011 | SRS-TIC-007 SRS-NFR-AUD-001 AC-TIC-007 AC-NFR-AUD-001 | Minimaal één compacte historyregel vastleggen voor de sluitactie |
REQ-UC-GEN-TIC-005-012 | SRS-TIC-007 AC-TIC-007 | De ticketstatus na succesvolle sluiting op Closed zetten |
REQ-UC-GEN-TIC-005-013 | SRS-TIC-007 AC-TIC-007 | De melding na sluiting gebruikersgericht als Gesloten weergeven |
REQ-UC-GEN-TIC-005-014 | SRS-TIC-002 AC-TIC-002 | De gesloten melding raadpleegbaar houden in de gebruikersgerichte gesloten weergave |
REQ-UC-GEN-TIC-005-015 | SRS-AUTH-001 SRS-TIC-005 AC-AUTH-001 AC-TIC-005 | Reguliere reacties en opnieuw sluiten blokkeren nadat de melding door de gebruiker is gesloten |
REQ-UC-GEN-TIC-005-016 | SRS-RDM-001 SRS-RDM-007 SRS-TIC-007 AC-RDM-001 AC-RDM-007 AC-TIC-007 | De actie-indicatie voor Wacht op mij opnieuw afleiden na het sluiten van de melding |
REQ-UC-GEN-TIC-005-017 | SRS-MSG-001 SRS-TIC-001 AC-MSG-001 AC-TIC-001 | Bij sluiten door gebruiker geen privébericht aanmaken |
REQ-UC-GEN-TIC-005-018 | SRS-TIC-007 SRS-POP-001 AC-TIC-007 AC-POP-001 | Annuleren van de sluitpopup afhandelen zonder domeinmutatie |
REQ-UC-GEN-TIC-005-019 | SRS-AUTH-001 SRS-TIC-002 AC-AUTH-001 AC-TIC-002 | Race conditions afvangen door de actuele ticketstatus opnieuw server-side te controleren bij bevestigen |
REQ-UC-GEN-TIC-005-020 | SRS-TIC-006 SRS-NFR-AUD-001 AC-TIC-006 AC-NFR-AUD-001 | Transactioneel borgen dat sluitregistratie, extern discussie-item, statusupdate en history gezamenlijk slagen of gezamenlijk worden teruggedraaid |
REQ-UC-GEN-TIC-005-021 | SRS-TIC-007 SRS-NFR-SEC-001 SRS-NFR-AVL-001 AC-TIC-007 AC-NFR-SEC-001 AC-NFR-AVL-001 | Een veilige foutmelding tonen wanneer de sluitactie technisch of transactioneel mislukt |
REQ-UC-GEN-TIC-005-022 | SRS-ACC-003 SRS-ACC-005 SRS-TIC-002 SRS-NFR-SEC-001 SRS-NFR-ACC-001 AC-ACC-003 AC-ACC-005 AC-TIC-002 AC-NFR-SEC-001 AC-NFR-ACC-001 | Een veilige niet-beschikbaarmelding tonen wanneer de melding niet bestaat, niet toegankelijk is of niet veilig geladen kan worden |