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 upSweepResult 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 kryptomienOdoslaní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.