Skip to main content

UC-GEN-TIC-016 — Verlopen heropentermijnen periodiek verwerken

1. Kerngegevens

VeldWaarde
Usecase-IDUC-GEN-TIC-016
NaamVerlopen heropentermijnen periodiek verwerken
DomeinMeldingen
Primaire actorSysteem / TickerQ
Secundaire actor(en)Meldingenservice, database, audit/historylaag
RolcontextGeen gebruikersrol; periodieke systeemverwerking binnen de backend.
Betrokken schermenGeen zelfstandig scherm; de uitkomst is zichtbaar via bestaande meldingoverzichten en meldingdetails.
Gerelateerde usecasesUC-GEN-TIC-013 — Melding oplossen of sluiten; UC-GEN-TIC-006 — Oplossing accepteren; UC-GEN-TIC-007 — Melding heropenen door gebruiker; UC-GEN-TIC-014 — Melding heropenen door beheerder
Primaire entiteitenTickets, TicketClosures, TicketHistory
Secundaire entiteiten / eventsTicketReopenRequests, TickerQ-schedulerlogging, TicketReopenDeadlineExpired
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust have

2. Omschrijving

Deze usecase beschrijft de periodieke backendverwerking waarmee OefenHub gesloten meldingen controleert waarvan de actuele heropentermijn is verlopen. Er wordt bewust geen losse TickerQ-taak per melding aangemaakt op het moment van oplossen of sluiten. In plaats daarvan draait een periodieke TickerQ-job minimaal iedere 12 uur en zoekt deze op basis van actuele databasecriteria welke meldingen definitief als gesloten beschouwd moeten worden.

Deze verwerking is een vangnet voor normale tijdsverloopafhandeling én voor gemiste eerdere scheduleruitvoeringen. Wanneer een jobrun faalt, niet gestart is of een melding tijdelijk overslaat door een race condition, wordt dezelfde melding bij een volgende run opnieuw gevonden zolang zij nog aan de criteria voldoet.

3. Scope

Deze usecase beschrijft:

  • het periodiek starten van de TickerQ-verwerking;
  • het selecteren van tickets met Status = Closed en een actuele sluitregistratie waarvan ReopenDeadlineUtc <= nowUtc;
  • het uitsluiten van sluitingen die al door de gebruiker zijn geaccepteerd, later zijn heropend of niet meer de actuele sluitcontext vormen;
  • het idempotent verwerken van verlopen heropentermijnen;
  • het vastleggen van compacte history wanneer de overgang naar gebruikersgericht Gesloten administratief herleidbaar moet zijn;
  • het loggen van technische fouten zonder gebruikersflow te blokkeren.

Deze usecase beschrijft niet:

  • het oplossen of sluiten door een beheerder;
  • het accepteren van een oplossing door de gebruiker;
  • het heropenen door gebruiker of beheerder;
  • het aanmaken van een nieuwe sluitregistratie;
  • het versturen van extra systeemberichten bij alleen het verlopen van de heropentermijn.

4. Pre-condities

IDVoorwaarde
PRE-001De TickerQ-scheduler is beschikbaar voor periodieke backendtaken.
PRE-002De meldingenfunctionaliteit en ticketdatatabellen zijn beschikbaar.
PRE-003Er bestaat een configureerbaar interval voor deze verwerking; functioneel uitgangspunt is minimaal iedere 12 uur.
PRE-004De verwerking kan het actuele UTC-moment server-side bepalen.

5. Post-condities

IDResultaat
POST-001Meldingen waarvan de actuele heropentermijn verlopen is, worden niet langer gebruikersgericht als Opgelost behandeld.
POST-002Waar auditbaar nodig is, is een compacte TicketHistory-regel vastgelegd dat de heropentermijn is verlopen en de melding definitief gesloten is.
POST-003Er is geen nieuw TicketClosures-record aangemaakt.
POST-004Er is geen systeembericht of privébericht aangemaakt door alleen het verlopen van de heropentermijn.
POST-005Fouten in één ticketverwerking blokkeren niet de volledige jobrun; technische fouten worden gelogd.

6. Trigger

De usecase start wanneer de periodieke TickerQ-job voor verlopen ticket-heropentermijnen wordt uitgevoerd. Functioneel draait deze verwerking minimaal iedere 12 uur.

7. Normale processtroom

StapActorComponentActieSysteemresponsData / regel
1TickerQSchedulerStart periodieke verwerking.Meldingenservice krijgt een verwerkingstrigger met nowUtc.Minimaal iedere 12 uur.
2SysteemMeldingenserviceSelecteert kandidaatmeldingen.Alleen Closed tickets met actuele sluitregistratie en ReopenDeadlineUtc <= nowUtc worden geselecteerd.Databasecriteria zijn leidend.
3SysteemMeldingenserviceControleert per kandidaat de actuele sluitcontext.Tickets die al geaccepteerd, heropend of opnieuw gesloten zijn met latere context worden overgeslagen.Idempotente controle.
4SysteemMeldingenserviceBepaalt de gebruikersgerichte status.De melding wordt voor gewone gebruikers als Gesloten behandeld.Geen aparte backendstatus nodig.
5SysteemDatabaseLegt waar nodig compacte history vast.Er ontstaat maximaal één betekenisvolle historyregel voor deze verlopen actuele sluiting.Dubbele history wordt voorkomen.
6SysteemSchedulerloggingRondt verwerking af.Jobresultaat en eventuele fouten zijn technisch herleidbaar.Geen gebruikerspopup.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011De scheduler draait later dan gepland.De verwerking gebruikt actuele databasecriteria en pakt verlopen meldingen alsnog op.Niet van toepassing.Alleen mutaties voor nog relevante kandidaten.
ALT-0022Er zijn geen verlopen heropentermijnen.De job eindigt zonder ticketmutatie.Niet van toepassing.Geen.
ALT-0033De melding is intussen door de gebruiker of beheerder heropend.De kandidaat wordt overgeslagen.Niet van toepassing.Geen.
ALT-0043De oplossing is al geaccepteerd.De kandidaat wordt overgeslagen omdat de melding al gebruikersgericht gesloten is.Niet van toepassing.Geen nieuwe mutatie.
ALT-0055History voor deze verlopen sluiting bestaat al.De verwerking maakt geen dubbele historyregel aan.Niet van toepassing.Geen dubbele mutatie.
ALT-0065Verwerking van één melding faalt technisch.Fout wordt gelogd; de job kan andere kandidaten verwerken en dezelfde melding komt bij een latere run opnieuw in aanmerking.Niet van toepassing.Geen gedeeltelijke mutatie voor de gefaalde kandidaat.

9. Business rules

IDRegel
BR-001Er wordt geen afzonderlijke schedulerjob per ticket aangemaakt voor de heropentermijn.
BR-002De periodieke verwerking draait minimaal iedere 12 uur.
BR-003Selectie gebeurt op actuele databasecriteria en niet op eerder ingeplande tickettaken.
BR-004De verwerking is idempotent en moet gemiste eerdere scheduleruitvoeringen kunnen opvangen.
BR-005Verlopen van de heropentermijn maakt geen nieuwe sluitregistratie aan.
BR-006Verlopen van de heropentermijn verstuurt geen extra systeembericht aan de melder.
BR-007De gebruikersgerichte status Gesloten blijft afgeleid uit ticketstatus, actuele sluitregistratie, acceptatie en heropentermijn.
BR-008Technische fouten in de job worden gelogd zonder reguliere gebruikersflows te blokkeren.

10. Datavalidatie

Veld / objectValidatie
Tickets.StatusAlleen Closed komt in aanmerking.
Actuele sluitregistratieMoet de meest recente relevante sluiting van het ticket zijn.
ReopenDeadlineUtcMoet kleiner dan of gelijk zijn aan het actuele server-side UTC-moment.
AcceptedAtUtcWanneer gevuld, is de gebruikersgerichte sluiting al definitief en is geen extra verwerking nodig.
Latere heropeningEen latere TicketReopenRequests-registratie of statuswijziging maakt de kandidaat ongeldig.
History-idempotentieDubbele historyregels voor dezelfde verlopen actuele sluiting worden voorkomen.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
5Create / idempotentTicketHistoryCompacte historyregel dat de actuele heropentermijn is verlopen en de melding definitief gesloten is, wanneer deze nog niet bestaat.
5EventTicketReopenDeadlineExpiredDomeinevent of technische eventregistratie voor verlopen heropentermijn.
6LogSchedulerloggingJobuitvoering, aantallen en technische fouten worden vastgelegd.

12. Geen datamutaties

EntiteitReden
TicketClosuresDe bestaande sluitregistratie blijft de formele bron; er wordt geen tweede sluiting aangemaakt.
Tickets.StatusDe backendstatus is al Closed; Opgelost en Gesloten zijn gebruikersgerichte afleidingen.
SystemMessagesHet verlopen van de heropentermijn stuurt geen extra bericht.
PrivateMessagesEr wordt geen privébericht aangemaakt.
TicketDiscussionMessagesHet verlopen van de termijn is geen inhoudelijke discussie.

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

DoeldocumentAfleiding
Functioneel OntwerpBeschrijft dat verlopen heropentermijnen niet via losse jobs per melding worden afgehandeld, maar via een periodieke backendverwerking.
Technisch OntwerpTechnisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft de TickerQ-job uit als periodieke idempotente verwerking op basis van databasecriteria, met minimaal 12-uursinterval.
Technisch OntwerpTechnisch Ontwerp: meldingen, tickets en beheerafhandeling, communicatie, background jobs en logging en foutafhandeling beschrijven de technische uitwerking. Beschrijft dat gemiste scheduleruitvoeringen door dezelfde criteria bij latere runs worden opgevangen.
Software Requirements SpecificationNeem eisen op voor periodieke verwerking, idempotentie, geen extra sluitrecord, geen extra gebruikercommunicatie en technische logging.
Database-informatieTicketClosures.ReopenDeadlineUtc, TicketClosures.AcceptedAtUtc, ticketstatus en TicketHistory moeten de periodieke verwerking ondersteunen.

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-GEN-TIC-016-001SRS-TIC-004
SRS-ARCH-004
AC-TIC-004
AC-ARCH-004
Verlopen ticket-heropentermijnen via een periodieke TickerQ-verwerking afhandelen en niet via afzonderlijke jobs per melding
REQ-UC-GEN-TIC-016-002SRS-TIC-008
SRS-ARCH-004
AC-TIC-008
AC-ARCH-004
De periodieke verwerking moet minimaal iedere 12 uur gesloten meldingen controleren waarvan de actuele ReopenDeadlineUtc is verstreken
REQ-UC-GEN-TIC-016-003SRS-TIC-008
SRS-ARCH-004
AC-TIC-008
AC-ARCH-004
De periodieke verwerking moet idempotent zijn en gemiste eerdere scheduleruitvoeringen kunnen opvangen
REQ-UC-GEN-TIC-016-004SRS-TIC-001
SRS-ARCH-004
AC-TIC-001
AC-ARCH-004
De periodieke verwerking mag geen nieuw TicketClosures-record aanmaken
REQ-UC-GEN-TIC-016-005SRS-MSG-007
SRS-TIC-001
SRS-ARCH-004
AC-MSG-007
AC-TIC-001
AC-ARCH-004
De periodieke verwerking mag geen extra systeembericht of privébericht aanmaken door alleen het verlopen van de heropentermijn
REQ-UC-GEN-TIC-016-006SRS-TIC-008
SRS-NFR-AUD-001
SRS-ARCH-004
AC-TIC-008
AC-NFR-AUD-001
AC-ARCH-004
De periodieke verwerking moet waar nodig een compacte, niet-duplicerende TicketHistory-regel kunnen vastleggen
REQ-UC-GEN-TIC-016-007SRS-TIC-003
SRS-NFR-LOG-001
SRS-ARCH-004
AC-TIC-003
AC-NFR-LOG-001
AC-ARCH-004
De periodieke verwerking moet technische fouten loggen en één gefaalde melding niet als blokkade voor alle andere kandidaten behandelen