UC-GEN-TIC-007 — Melding heropenen door gebruiker
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-TIC-007 |
| Naam | Melding heropenen door gebruiker |
| 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 opgeloste melding mag openen en binnen de heropentermijn mag heropenen |
| 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-013 — Melding oplossen of sluiten; UC-GEN-MSG-003 — Bericht openen |
| Primaire entiteiten | Tickets, TicketClosures, TicketReopenRequests, TicketDiscussionMessages, TicketHistory |
| Secundaire entiteiten / events | Users, TicketAssignments, TicketResolutionTypes, SystemMessages, TicketReopenedByUser, TicketStatusChanged, TicketActionIndicatorRecalculated, TicketReopenFailed |
| Gerelateerde popups | POP-GEN-TIC-REOPEN-USER, POP-GEN-TIC-REOPEN-NOT-ALLOWED, POP-GEN-TIC-REOPEN-FAILED, POP-GEN-TIC-NOT-AVAILABLE |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must have |
2. Omschrijving
De gebruiker heropent een eigen melding nadat beheer een oplossing heeft aangeboden en de melding gebruikersgericht als Opgelost zichtbaar is. Heropenen is alleen mogelijk zolang de heropentermijn van de actuele formele sluitregistratie nog loopt en de gebruiker de oplossing nog niet heeft geaccepteerd.
Bij heropenen moet de gebruiker verplicht toelichten waarom de melding volgens hem of haar nog niet opgelost is. Het systeem legt deze toelichting formeel vast in TicketReopenRequests, toont de toelichting als extern zichtbaar discussie-item en legt een compacte auditregel vast in TicketHistory. De eerdere sluitregistratie in TicketClosures blijft historisch beschikbaar, inclusief oplossing, afsluitstatus en oorspronkelijke heropen-deadline, maar is na heropenen niet langer de actuele behandeltoestand.
Na heropenen wordt de melding opnieuw behandelbaar door beheer. Wanneer er nog een actieve beheerderkoppeling op de melding bestaat, wordt de melding opnieuw In behandeling. Wanneer er geen actieve beheerderkoppeling bestaat, wordt de melding opnieuw Nieuw. De actie-indicatie voor Wacht op mij vervalt, omdat de gebruiker op dat moment geen reactie meer hoeft te geven.
Deze usecase is iets anders dan het accepteren van een oplossing. Acceptatie hoort bij UC-GEN-TIC-006. Handmatig heropenen door een beheerder hoort bij UC-GEN-TIC-014.
3. Scope
Deze usecase beschrijft:
- het openen van een eigen melding met gebruikersstatus Opgelost;
- het tonen van de oplossing, afsluitstatus en concrete heropen-deadline;
- het beschikbaar maken van de actie Melding heropenen binnen de heropentermijn;
- het tonen van een popup of modal met verplicht toelichtingsveld;
- het opnieuw server-side controleren van sessie, featurestatus, objecttoegang, actuele sluitregistratie, acceptatiestatus en heropenbaarheid;
- het verplicht valideren van de heropentoelichting;
- het vastleggen van een
TicketReopenRequests-record metRequestSource = User; - het koppelen van het heropenverzoek aan de eerdere actuele sluitregistratie via
PreviousClosureIdwanneer die sluitregistratie beschikbaar is; - het extern zichtbaar vastleggen van de heropentoelichting in de ticketdiscussie;
- het compact vastleggen van de heropenactie in
TicketHistory; - het opnieuw behandelbaar maken van de melding;
- het bepalen van de nieuwe behandelstatus op basis van actieve beheerderkoppelingen;
- het opnieuw afleiden van gebruikersstatus en actie-indicaties;
- foutpaden wanneer de melding niet meer beschikbaar, niet meer toegankelijk, niet meer heropenbaar of transactioneel niet verwerkbaar is.
Deze usecase beschrijft niet:
- het indienen van een nieuwe melding;
- het bekijken van het meldingenoverzicht als zelfstandige flow;
- het algemeen openen van de meldingdetailpagina;
- het plaatsen van een reguliere gebruikersreactie zonder heropenactie;
- het zelf sluiten van een melding;
- het accepteren van een oplossing;
- het automatisch verlopen van de heropentermijn;
- het oplossen of sluiten door beheer;
- het handmatig heropenen door beheer;
- het doorzetten naar docent;
- het ontkoppelen van beheerders bij handmatig heropenen door beheer;
- het wijzigen of verwijderen van de eerdere oplossing of sluitregistratie;
- het aanmaken van een nieuwe melding als de heropentermijn is verlopen;
- 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 | Er bestaat een actuele formele sluitregistratie in TicketClosures met oplossing of afsluitstatus vanuit beheer. |
| PRE-007 | De actuele sluitregistratie heeft een ReopenDeadlineUtc die nog in de toekomst ligt. |
| PRE-008 | De actuele sluitregistratie is nog niet door de gebruiker geaccepteerd. |
| PRE-009 | De melding wordt gebruikersgericht als Opgelost weergegeven. |
| PRE-010 | De actie Melding heropenen is beschikbaar op tabblad Oplossing. |
| PRE-011 | De applicatie kan heropenverzoek, extern discussie-item, historyregel, statusupdate en readmodelafleiding transactioneel verwerken. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Er is een TicketReopenRequests-record vastgelegd. |
| POST-002 | Het heropenverzoek bevat de verplichte toelichting van de gebruiker. |
| POST-003 | Het heropenverzoek bevat RequestSource = User. |
| POST-004 | Het heropenverzoek verwijst naar de ingelogde gebruiker als aanvrager. |
| POST-005 | Het heropenverzoek verwijst naar de eerdere actuele sluitregistratie via PreviousClosureId wanneer die beschikbaar is. |
| POST-006 | De eerdere TicketClosures-registratie blijft historisch beschikbaar en wordt niet verwijderd of inhoudelijk overschreven. |
| POST-007 | De eerdere oplossingstekst, afsluitstatus, sluitdatum en oorspronkelijke ReopenDeadlineUtc blijven raadpleegbaar voor historie en beheer. |
| POST-008 | De melding is opnieuw behandelbaar door beheer. |
| POST-009 | Wanneer er nog minimaal één actieve beheerderkoppeling bestaat, krijgt de melding opnieuw status In behandeling. |
| POST-010 | Wanneer er geen actieve beheerderkoppeling bestaat, krijgt de melding opnieuw status Nieuw. |
| POST-011 | De gebruikersgerichte status is niet langer Opgelost of Gesloten, maar valt weer onder open/behandelbare meldingen. |
| POST-012 | De melding verschijnt opnieuw in de gebruikersgerichte tab Open, tenzij de nieuwe behandelstatus later door beheer wordt gewijzigd naar Wachten op reactie. |
| POST-013 | De actie Melding heropenen is na verwerking niet meer beschikbaar voor dezelfde sluitregistratie. |
| POST-014 | De actie Oplossing accepteren is na heropenen niet meer beschikbaar voor dezelfde sluitregistratie. |
| POST-015 | De heropentoelichting is als extern zichtbaar discussie-item beschikbaar voor gebruiker en beheer. |
| POST-016 | Interne beheerinformatie blijft onzichtbaar voor de gebruiker. |
| POST-017 | Er is minimaal één compacte TicketHistory-regel vastgelegd. |
| POST-018 | De actie-indicatie voor Wacht op mij wordt opnieuw afgeleid en is na deze gebruikersactie niet actief, tenzij beheer later opnieuw om reactie vraagt. |
| POST-019 | Er wordt geen nieuwe TicketClosures-registratie aangemaakt. |
| POST-020 | Er wordt geen nieuwe Tickets-melding aangemaakt. |
| POST-021 | Er wordt geen privébericht aangemaakt. |
| POST-022 | Bij een niet-toegestane of mislukte heropenactie blijft de bestaande meldingtoestand ongewijzigd. |
| POST-023 | Bij een transactionele fout blijven heropenverzoek, discussie-item, history en statusupdate consistent. |
6. Trigger
De gebruiker opent een eigen melding met gebruikersstatus Opgelost, bekijkt tabblad Oplossing en kiest binnen de geldige heropentermijn de actie Melding heropenen.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | SCH-GEN-06-01 — Meldingen | Opent een melding met status Opgelost 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 de eigen melding wordt geladen. | Tickets.CreatedByUserId moet gelijk zijn aan de huidige gebruiker. |
| 3 | Systeem | SCH-GEN-06-02 — Melding details | Toont tabblad Oplossing met oplossing, afsluitstatus, meldingstatus en heropen-deadline. | De gebruiker ziet de actuele oplossing en de concrete heropenbaarheid. | Opgelost wordt afgeleid uit de actuele sluitregistratie. |
| 4 | Systeem | Backend / statusafleiding | Controleert of de actuele sluitregistratie nog heropenbaar is. | De actie Melding heropenen wordt beschikbaar gemaakt. | ReopenDeadlineUtc ligt in de toekomst en acceptatie ontbreekt. |
| 5 | Gebruiker | Tabblad Oplossing | Kiest Melding heropenen. | Het systeem opent de heropenpopup. | POP-GEN-TIC-REOPEN-USER. |
| 6 | Systeem | Popup / modal | Toont één verplicht tekstvlak voor de toelichting. | De gebruiker kan de reden van heropenen invoeren of annuleren. | Popuptekst en knopteksten staan in het popupregister. |
| 7 | Gebruiker | Popup / modal | Vult de toelichting in waarom de oplossing niet volstaat. | Het systeem houdt de invoer vast tot de gebruiker bevestigt. | Lege of alleen-whitespace invoer is niet geldig. |
| 8 | Gebruiker | Popup / modal | Bevestigt de heropenactie. | Het systeem start de server-side verwerking. | De client mag nog geen status als waarheid aannemen. |
| 9 | Systeem | Backend / autorisatie | Controleert opnieuw sessie, featurestatus en objecttoegang. | Verwerking gaat alleen verder bij geldige context. | Server-side controle is leidend. |
| 10 | Systeem | Backend / actuele toestand | Laadt de actuele melding, actuele sluitregistratie en acceptatiestatus. | Het systeem voorkomt verwerking op verouderde clientstate. | Race conditions worden server-side afgevangen. |
| 11 | Systeem | Backend / validatie | Controleert dat de melding nog gebruikersgericht Opgelost is. | Heropenen blijft alleen toegestaan voor een actuele oplossing binnen de termijn. | Geen heropenactie na acceptatie of verlopen termijn. |
| 12 | Systeem | Backend / validatie | Valideert de verplichte heropentoelichting. | Ongeldige invoer wordt geweigerd voordat mutaties plaatsvinden. | Toelichting moet inhoud bevatten en binnen de maximale lengte vallen. |
| 13 | Systeem | Backend / transactie | Start een transactionele mutatie. | Heropenverzoek, discussie-item, history en statusupdate worden samen verwerkt. | Geen gedeeltelijke opslag. |
| 14 | Systeem | Backend / heropenverzoek | Maakt een TicketReopenRequests-record aan. | Het heropenverzoek bevat ticket, actor, bron, toelichting, tijdstip en eerdere sluiting. | RequestSource = User; PreviousClosureId verwijst naar de actuele sluiting indien beschikbaar. |
| 15 | Systeem | Backend / discussie | Maakt een extern zichtbaar discussie-item aan met de heropentoelichting. | Gebruiker en beheer zien waarom de melding is heropend. | Visibility = External; de gebruiker is de inhoudelijke actor. |
| 16 | Systeem | Backend / statusservice | Bepaalt de nieuwe behandelstatus. | Bij actieve beheerderkoppeling wordt status In behandeling; zonder actieve beheerderkoppeling wordt status Nieuw. | Heropenen door gebruiker ontkoppelt beheerders niet. |
| 17 | Systeem | Backend / ticket | Werkt het ticket bij naar de nieuwe behandelstatus en wijzigingsmetadata. | De eerdere sluiting is niet langer de actuele behandeltoestand. | Eerdere TicketClosures blijft historisch bestaan. |
| 18 | Systeem | Backend / audit | Legt een compacte TicketHistory-regel vast. | De geschiedenis vermeldt dat de gebruiker de melding heeft heropend. | History bevat geen volledige heropentoelichting; die staat in heropenverzoek/discussie. |
| 19 | Systeem | Backend / events | Publiceert domeinevents voor heropenen, statuswijziging en herberekening van actie-indicaties. | Afgeleide overzichten en badges kunnen worden bijgewerkt. | TicketReopenedByUser, TicketStatusChanged, TicketActionIndicatorRecalculated. |
| 20 | Systeem | SCH-GEN-06-02 — Melding details | Ververst de detailweergave. | De melding staat opnieuw open/behandelbaar; acceptatie- en heropenactie verdwijnen. | Tabbladen blijven beschikbaar volgens de nieuwe status. |
| 21 | Systeem | SCH-GEN-06-01 — Meldingen | Verwerkt de nieuwe toestand in overzichtsdata. | De melding valt opnieuw onder Open, tenzij beheer later om reactie vraagt. | Wacht op mij wordt opnieuw afgeleid en is door deze actie niet actief. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1-3 | De melding bestaat niet meer of kan niet veilig geladen worden. | Het systeem toont een veilige niet-beschikbaarmelding. | POP-GEN-TIC-NOT-AVAILABLE | Geen. |
| ALT-002 | 2, 9 | De gebruiker is niet ingelogd of de sessie is verlopen. | De generieke loginflow wordt gestart. | Generieke loginflow, geen domeinpopup. | Geen. |
| ALT-003 | 2, 9 | De gebruiker is niet de melder van de gevraagde melding. | Het systeem weigert objecttoegang. | Generieke toegang-geweigerd-afhandeling of POP-GEN-TIC-NOT-AVAILABLE zonder technische details. | Geen. |
| ALT-004 | 3-4 | Er is geen actuele formele sluitregistratie met oplossing. | Het tabblad Oplossing toont de actuele behandelingstoestand zonder heropenactie. | Geen popup. | Geen. |
| ALT-005 | 4, 11 | De heropentermijn is verlopen. | Het systeem toont de melding als Gesloten en biedt geen heropenactie aan. | POP-GEN-TIC-REOPEN-NOT-ALLOWED wanneer de gebruiker net probeerde te heropenen. | Geen. |
| ALT-006 | 4, 11 | De gebruiker heeft de oplossing al geaccepteerd. | Het systeem toont de melding als Gesloten en blokkeert heropenen. | POP-GEN-TIC-REOPEN-NOT-ALLOWED | Geen. |
| ALT-007 | 6-8 | De gebruiker annuleert de heropenpopup. | De popup sluit en de melding blijft ongewijzigd. | Geen popup. | Geen. |
| ALT-008 | 12 | De toelichting is leeg of bevat alleen whitespace. | Het systeem weigert bevestigen of toont veldvalidatie. | Inline validatie of POP-GEN-TIC-REOPEN-NOT-ALLOWED, afhankelijk van implementatie. | Geen. |
| ALT-009 | 12 | De toelichting overschrijdt de maximale lengte. | Het systeem weigert bevestigen of toont veldvalidatie. | Inline validatie. | Geen. |
| ALT-010 | 10-11 | De melding is na het openen door beheer opnieuw gewijzigd. | Het systeem verwerkt op basis van de actuele serverstatus en blokkeert heropenen wanneer de toestand niet meer geldig is. | POP-GEN-TIC-REOPEN-NOT-ALLOWED | Geen. |
| ALT-011 | 13-18 | De heropenactie kan niet transactioneel worden opgeslagen. | Het systeem rolt de transactie terug en toont een veilige foutmelding. | POP-GEN-TIC-REOPEN-FAILED | Geen gedeeltelijke mutatie. |
| ALT-012 | 15 | Het externe discussie-item kan niet worden aangemaakt. | Het systeem rolt de volledige heropenactie terug, omdat de toelichting zichtbaar en herleidbaar moet blijven. | POP-GEN-TIC-REOPEN-FAILED | Geen gedeeltelijke mutatie. |
| ALT-013 | 16-17 | De statusupdate kan niet worden opgeslagen. | Het systeem rolt het heropenverzoek, discussie-item en history terug. | POP-GEN-TIC-REOPEN-FAILED | Geen gedeeltelijke mutatie. |
| ALT-014 | 20-21 | De UI-refresh mislukt na succesvolle servermutatie. | Bij opnieuw laden toont het systeem de serverwaarheid: de melding is opnieuw open/behandelbaar. | Veilige technische melding indien nodig. | Heropenactie blijft opgeslagen. |
| ALT-015 | 8-14 | De gebruiker klikt herhaald op bevestigen. | Het systeem verwerkt maximaal één heropenverzoek voor dezelfde actuele sluitregistratie. | Geen popup of POP-GEN-TIC-REOPEN-NOT-ALLOWED. | Maximaal één heropenmutatie. |
| ALT-016 | 5 | De gebruiker probeert te heropenen vanuit een verouderde link of bookmark. | Het systeem opent eerst de actuele meldingdetailweergave en toont de actie alleen als die nog geldig is. | POP-GEN-TIC-NOT-AVAILABLE of POP-GEN-TIC-REOPEN-NOT-ALLOWED indien niet geldig. | Geen, tenzij de gebruiker daarna geldig bevestigt. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-GEN-TIC-007-001 | Alleen de gebruiker die de melding heeft aangemaakt mag de eigen melding heropenen vanuit de gebruikersweergave. |
| BR-UC-GEN-TIC-007-002 | Heropenen door de gebruiker is alleen beschikbaar wanneer de melding gebruikersgericht Opgelost is. |
| BR-UC-GEN-TIC-007-003 | Opgelost is geen backendhoofdstatus maar een afgeleide gebruikersstatus op basis van de actuele sluitregistratie en heropen-deadline. |
| BR-UC-GEN-TIC-007-004 | Heropenen door de gebruiker is alleen toegestaan zolang ReopenDeadlineUtc van de actuele sluitregistratie nog in de toekomst ligt. |
| BR-UC-GEN-TIC-007-005 | Heropenen door de gebruiker is niet toegestaan wanneer de oplossing al door de gebruiker is geaccepteerd. |
| BR-UC-GEN-TIC-007-006 | Heropenen vereist altijd een inhoudelijke toelichting van de gebruiker. |
| BR-UC-GEN-TIC-007-007 | De heropentoelichting wordt formeel vastgelegd in TicketReopenRequests. |
| BR-UC-GEN-TIC-007-008 | Een heropenverzoek door de gebruiker gebruikt RequestSource = User. |
| BR-UC-GEN-TIC-007-009 | Het heropenverzoek verwijst naar de eerdere actuele sluitregistratie wanneer deze beschikbaar is. |
| BR-UC-GEN-TIC-007-010 | De eerdere sluitregistratie blijft historisch bestaan en wordt niet verwijderd of overschreven. |
| BR-UC-GEN-TIC-007-011 | De heropentoelichting wordt zichtbaar gemaakt als extern discussie-item, zodat gebruiker en beheer dezelfde inhoudelijke reden kunnen teruglezen. |
| BR-UC-GEN-TIC-007-012 | Een heropenactie leidt altijd tot minimaal één compacte TicketHistory-regel. |
| BR-UC-GEN-TIC-007-013 | Heropenen door de gebruiker ontkoppelt geen actief gekoppelde beheerders. |
| BR-UC-GEN-TIC-007-014 | Na heropenen wordt de melding opnieuw behandelbaar: In behandeling bij actieve beheerderkoppeling en Nieuw zonder actieve beheerderkoppeling. |
| BR-UC-GEN-TIC-007-015 | Na heropenen zijn Oplossing accepteren en Melding heropenen niet meer beschikbaar voor dezelfde eerdere sluitregistratie. |
| BR-UC-GEN-TIC-007-016 | Heropenen maakt geen nieuwe melding en geen nieuwe sluitregistratie aan. |
| BR-UC-GEN-TIC-007-017 | Server-side objectautorisatie en statuscontrole zijn leidend; frontend-zichtbaarheid is geen beveiligingslaag. |
| ID | Centrale regel |
|---|---|
BR-GEN-TIC-024 | Een gebruiker kan een eigen melding alleen heropenen zolang de melding gebruikersgericht Opgelost is, de heropentermijn nog loopt en de oplossing niet is geaccepteerd. |
BR-GEN-TIC-025 | Heropenen door de gebruiker vereist een verplichte toelichting en wordt formeel vastgelegd in TicketReopenRequests met RequestSource = User. |
BR-GEN-TIC-026 | Heropenen door de gebruiker maakt de eerdere sluiting historisch, maakt de melding opnieuw behandelbaar en ontkoppelt geen beheerders. |
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. |
| Actuele sluitregistratie | Er moet een actuele TicketClosures-registratie bestaan die de zichtbare oplossing of sluiting vertegenwoordigt. |
| Heropen-deadline | ReopenDeadlineUtc moet nog in de toekomst liggen op het moment van server-side verwerking. |
| Acceptatiestatus | De actuele sluitregistratie mag nog niet door de gebruiker zijn geaccepteerd. |
| Gebruikersstatus | De melding moet op het moment van verwerken gebruikersgericht Opgelost zijn. |
| Heropentoelichting | Verplicht, mag niet leeg zijn en mag niet uitsluitend uit whitespace bestaan. |
| Heropentoelichting lengte | Moet binnen de maximale tekstlengte voor heropenverzoeken vallen. |
RequestSource | Moet voor deze usecase User zijn. |
PreviousClosureId | Verwijst naar de actuele eerdere sluitregistratie wanneer die registratie beschikbaar is. |
| Extern discussie-item | Moet gekoppeld zijn aan hetzelfde ticket, Visibility = External hebben en de heropentoelichting representeren. |
| Status na heropenen | Wordt bepaald op basis van actieve beheerderkoppelingen: actieve koppeling resulteert in In behandeling, geen actieve koppeling resulteert in Nieuw. |
TicketHistory | Moet actor, melding, actie en tijdstip vastleggen. |
| Transactionele consistentie | Heropenverzoek, extern discussie-item, history, statusupdate en metadata-update worden als samenhangende mutatie verwerkt. |
| Race conditions | De actuele serverstatus wordt opnieuw gelezen op het moment van bevestigen. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 14 | Create | TicketReopenRequests | Nieuw heropenverzoek met ticket, actor, RequestSource = User, toelichting, tijdstip en eventuele PreviousClosureId. |
| 15 | Create | TicketDiscussionMessages | Extern zichtbaar discussie-item met de heropentoelichting. |
| 16 | Afleiding | TicketAssignments | Actieve beheerderkoppelingen worden gelezen om de nieuwe behandelstatus te bepalen. |
| 17 | Update | Tickets | Status wordt opnieuw behandelbaar: InProgress bij actieve beheerderkoppeling of New zonder actieve beheerderkoppeling; wijzigingsmetadata worden bijgewerkt. |
| 18 | Create | TicketHistory | Compacte auditregel voor heropenen door gebruiker. |
| 19 | Event | TicketReopenedByUser | Domeinevent dat het heropenen door de gebruiker representeert. |
| 19 | Event | TicketStatusChanged | Domeinevent voor de statusovergang van gesloten/opgelost naar opnieuw behandelbaar. |
| 19 | Event | TicketActionIndicatorRecalculated | Afgeleide actie-indicaties worden opnieuw bepaald. |
| 10-13 | Event | TicketReopenFailed | Foutpad voor niet-toegestane of mislukte heropenactie. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
Tickets.CreatedByUserId | De melder van de melding wijzigt niet. |
TicketClosures | De eerdere sluiting blijft historisch beschikbaar en wordt niet verwijderd of overschreven. |
TicketResolutionTypes | De eerdere afsluitstatus blijft historisch gekoppeld aan de eerdere sluiting. |
TicketAssignments | Heropenen door de gebruiker ontkoppelt geen actief gekoppelde beheerders. |
TicketTechnicalSnapshots | De technische snapshot van het oorspronkelijke meldmoment blijft ongewijzigd. |
SystemMessages | Deze usecase maakt geen nieuw systeembericht aan voor de gebruiker die zelf heropent. |
PrivateMessageThreads | Heropenen van een melding maakt geen privéberichtthread aan. |
PrivateMessages | Heropenen van een melding maakt geen privébericht aan. |
13. State diagram
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Heropenen binnen geldige heropentermijn
16.2 Heropenen niet toegestaan
17. Popupverwijzingen
| PopupKey | Moment | Variant | Doel |
|---|---|---|---|
POP-GEN-TIC-REOPEN-USER | Wanneer de gebruiker binnen de heropentermijn kiest voor heropenen. | InputTextarea | Verplichte toelichting vragen voordat de melding wordt heropend. |
POP-GEN-TIC-REOPEN-NOT-ALLOWED | Wanneer heropenen niet meer of niet langer toegestaan is. | InfoOnly | Veilig uitleggen dat heropenen vanuit deze toestand niet mogelijk is. |
POP-GEN-TIC-REOPEN-FAILED | Wanneer de heropenactie niet transactioneel verwerkt kan worden. | InfoOnly | Veilige foutmelding zonder technische details. |
POP-GEN-TIC-NOT-AVAILABLE | Wanneer de melding niet bestaat, niet beschikbaar is of niet toegankelijk is. | InfoOnly | Veilige niet-beschikbaarmelding zonder objectdetails te lekken. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft de gebruikersflow voor heropenen vanaf tabblad Oplossing, inclusief zichtbaarheid van actie, concrete heropen-deadline, verplichte toelichting, externe discussieweergave en terugkeer naar een open/behandelbare melding. |
| Functioneel Ontwerp | Beschrijft dat heropenen door de gebruiker geen beheerders ontkoppelt en verschilt van handmatig heropenen door beheer. |
| Functioneel Ontwerp | Beschrijft dat de melding na heropenen opnieuw onder Open valt, tenzij beheer later opnieuw om reactie vraagt. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft ReopenTicketCommand of gelijkwaardige serviceactie uit met server-side objectautorisatie, actuele closurecontrole, deadlinecontrole, acceptatiestatuscontrole en transactionele verwerking. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft dat TicketReopenRequests.RequestSource = User gebruikt wordt en dat PreviousClosureId naar de eerdere actuele sluitregistratie verwijst wanneer beschikbaar. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft de statusafleiding na heropenen uit: InProgress bij actieve beheerderkoppeling en New zonder actieve beheerderkoppeling. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft dat heropenverzoek, extern discussie-item, historyregel, statusupdate en readmodelafleiding consistent in één transactie of compensatievrije unit-of-work worden verwerkt. |
| Technisch Ontwerp | Technisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft dat heropenen door gebruiker geen TicketAssignments, TicketClosures, SystemMessages of privéberichtrecords aanmaakt of wijzigt, behalve de status/metadata op het ticket. |
| Software Requirements Specification | Beschrijft requirements voor heropenbaarheid, verplichte toelichting, deadlinecontrole, objectautorisatie, statusovergang, auditregistratie, foutafhandeling en het niet overschrijven van historische sluitgegevens. |
| Database-informatie | Beschrijft of TicketReopenRequests velden bevat voor ticket, actor, RequestSource, toelichting, PreviousClosureId, tijdstip en eventuele auditmetadata. |
| Database-informatie | Beschrijft of TicketClosures historisch kan blijven bestaan terwijl de melding opnieuw behandelbaar wordt. |
| Ontwerpbronnen | Beschrijven business rules, command, events, popupverwijzingen en matrixregels voor UC-GEN-TIC-007. |
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-007-001 | SRS-TIC-002 AC-TIC-002 | Een gebruiker toestaan een eigen melding te heropenen wanneer de melding gebruikersgericht Opgelost is, de heropentermijn nog geldig is en de oplossing niet is geaccepteerd |
REQ-UC-GEN-TIC-007-002 | SRS-AUTH-001 SRS-TIC-004 AC-AUTH-001 AC-TIC-004 | Heropenen blokkeren wanneer de gebruiker niet de melder van de melding is |
REQ-UC-GEN-TIC-007-003 | SRS-AUTH-001 SRS-ACC-003 SRS-ACC-005 SRS-TIC-004 SRS-NFR-SEC-001 SRS-NFR-ACC-001 AC-AUTH-001 AC-ACC-003 AC-ACC-005 AC-TIC-004 AC-NFR-SEC-001 AC-NFR-ACC-001 | Heropenen blokkeren wanneer de melding niet bestaat, niet beschikbaar is of niet veilig toegankelijk is |
REQ-UC-GEN-TIC-007-004 | SRS-AUTH-001 SRS-TIC-004 AC-AUTH-001 AC-TIC-004 | Heropenen blokkeren wanneer de actuele sluitregistratie ontbreekt |
REQ-UC-GEN-TIC-007-005 | SRS-AUTH-001 SRS-TIC-004 AC-AUTH-001 AC-TIC-004 | Heropenen blokkeren wanneer ReopenDeadlineUtc is verlopen |
REQ-UC-GEN-TIC-007-006 | SRS-AUTH-001 SRS-TIC-004 AC-AUTH-001 AC-TIC-004 | Heropenen blokkeren wanneer de gebruiker de oplossing al heeft geaccepteerd |
REQ-UC-GEN-TIC-007-007 | SRS-TIC-004 AC-TIC-004 | Bij heropenen een verplichte toelichting vragen |
REQ-UC-GEN-TIC-007-008 | SRS-AUTH-001 SRS-TIC-004 AC-AUTH-001 AC-TIC-004 | Lege of whitespace-only heropentoelichtingen weigeren |
REQ-UC-GEN-TIC-007-009 | SRS-TIC-004 AC-TIC-004 | Heropentoelichtingen begrenzen volgens de geldende maximale tekstlengte |
REQ-UC-GEN-TIC-007-010 | SRS-TIC-004 AC-TIC-004 | Een geldig heropenverzoek opslaan in TicketReopenRequests |
REQ-UC-GEN-TIC-007-011 | SRS-TIC-004 SRS-NFR-AUD-001 AC-TIC-004 AC-NFR-AUD-001 | Voor gebruikersheropeningen RequestSource = User vastleggen |
REQ-UC-GEN-TIC-007-012 | SRS-TIC-004 AC-TIC-004 | Het heropenverzoek koppelen aan de eerdere actuele sluitregistratie wanneer die beschikbaar is |
REQ-UC-GEN-TIC-007-013 | SRS-TIC-004 AC-TIC-004 | De heropentoelichting extern zichtbaar maken in de ticketdiscussie |
REQ-UC-GEN-TIC-007-014 | SRS-TIC-004 SRS-NFR-AUD-001 AC-TIC-004 AC-NFR-AUD-001 | Een compacte TicketHistory-regel vastleggen voor heropenen door gebruiker |
REQ-UC-GEN-TIC-007-015 | SRS-TIC-004 AC-TIC-004 | De eerdere TicketClosures-registratie historisch behouden en niet overschrijven bij heropenen |
REQ-UC-GEN-TIC-007-016 | SRS-TIC-003 AC-TIC-003 | Na heropenen de melding opnieuw behandelbaar maken |
REQ-UC-GEN-TIC-007-017 | SRS-TIC-003 SRS-ADM-001 AC-TIC-003 AC-ADM-001 | Na heropenen status In behandeling gebruiken wanneer er nog minimaal één actieve beheerderkoppeling bestaat |
REQ-UC-GEN-TIC-007-018 | SRS-TIC-003 SRS-ADM-001 AC-TIC-003 AC-ADM-001 | Na heropenen status Nieuw gebruiken wanneer er geen actieve beheerderkoppeling bestaat |
REQ-UC-GEN-TIC-007-019 | SRS-REL-003 SRS-REL-006 SRS-TIC-003 SRS-ADM-001 AC-REL-003 AC-REL-006 AC-TIC-003 AC-ADM-001 | Bij heropenen door gebruiker geen actieve beheerders ontkoppelen |
REQ-UC-GEN-TIC-007-020 | SRS-MSG-007 SRS-TIC-001 AC-MSG-007 AC-TIC-001 | Bij heropenen door gebruiker geen nieuwe melding, nieuwe sluitregistratie, nieuw systeembericht of privébericht aanmaken |
REQ-UC-GEN-TIC-007-021 | SRS-TIC-004 AC-TIC-004 | Na heropenen de acties Oplossing accepteren en Melding heropenen voor de eerdere sluitregistratie verbergen |
REQ-UC-GEN-TIC-007-022 | SRS-RDM-001 SRS-TIC-004 AC-RDM-001 AC-TIC-004 | Na heropenen de actie-indicatie voor Wacht op mij opnieuw afleiden |
REQ-UC-GEN-TIC-007-023 | SRS-TIC-004 SRS-NFR-AUD-001 AC-TIC-004 AC-NFR-AUD-001 | Heropenverzoek, extern discussie-item, historyregel, statusupdate en metadata-update transactioneel consistent verwerken |
REQ-UC-GEN-TIC-007-024 | SRS-AUTH-001 SRS-TIC-002 AC-AUTH-001 AC-TIC-002 | Race conditions afvangen door de actuele ticketstatus, closure, deadline en acceptatiestatus opnieuw server-side te controleren op het moment van bevestigen |
REQ-UC-GEN-TIC-007-025 | SRS-TIC-002 SRS-POP-001 SRS-NFR-SEC-001 AC-TIC-002 AC-POP-001 AC-NFR-SEC-001 | Veilige foutmeldingen tonen via centrale popupkeys zonder technische details of gegevens van andere meldingen te lekken |