NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Tickets for Laravel

Termíny a kontrola termínov

Termín je ručný: zadá sa pri založení, nastaví neskôr alebo ho pri založení doplní Contracts\DueDateResolver (predvolene teraz plus default_due_in najbližšej kategórie) — miesto, na ktoré sa dá napojiť vrstva SLA:

Tickets::for($ticket)->due(now()->addHours(4));   // TicketDueDateChanged; clears both flags
Tickets::for($ticket)->due(null);                 // no due date
Ticket::query()->overdue()->get();                // past due and unresolved (Waiting counts)

$result = Tickets::sweep();   // SweepResult { overdue: 3, dueSoon: 1 }

Kontrola termínov

Tickets::sweep() — a php artisan tickets:sweep každých päť minút — prechádza nevyriešené tikety v dávkach zoradených podľa id:

  • Po termíne → TicketOverdue, záznam aktivity overdue a notifikácia overdue.
  • V okne tickets.due.soon_window (PT4H; off = nikdy) → TicketDueSoon a notifikácia due_soon (bez záznamu aktivity).
  • Každá sa spustí práve raz na termín: compare-and-set na overdue_notified_at / due_soon_notified_at, ktorý porovná aj due_at, ktoré kontrola prečítala — dve súbežné kontroly tak tiket označia raz a kontrola, ktorá prečítala starý termín, nikdy neoznačí posunutý.
  • Posun termínu oba príznaky znova aktivuje. Tiket skontrolovaný neskoro (už po termíne) sa označí len ako po termíne.
  • Kontrola termínov nikdy tikety neuzatvára — automatické uzavretie je lifecycle:sweep.
$result = Tickets::sweep();   // SweepResult
$result->overdue;             // int — tickets this sweep flagged overdue
$result->dueSoon;             // int — tickets this sweep flagged due soon
$result->total();             // int — both added up

SweepResult počíta tikety, ktoré označila táto kontrola. Aj čakajúce tikety sa rátajú ako po termíne. PHP API prijme termín v minulosti (pre importy); HTTP API vyžaduje after:now.

Vlastné pravidlo termínov

Naviažte Contracts\DueDateResolver (dueAt(Ticket): ?CarbonImmutable) cez tickets.due.resolver alebo kontajner. Balík sa ho opýta, keď tiket vznikne bez termínu — na uloženom tikete s načítanou kategóriou, ešte pred zápisom vlastných polí, štítkov a sledujúcich.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.