Przejdź do głównej zawartości

64. Mini helpdesk

Mini helpdesk

Prosta aplikacja helpdesk: zgłaszaj problemy techniczne, przeglądaj listę ticketów (otwarte/w realizacji/zamknięte) i zmieniaj statusy. Podstawa każdego systemu obsługi zgłoszeń.

  • Modelowania ticketu wsparcia (zgłoszenie, status, priorytet)
  • Wielostanowego workflow (open → in_progress → closed)
  • Filtrowania listy po statusie
  • Pracy z timestampami (czas otwarcia i zamknięcia)

Systemy helpdesk (Jira, Zendesk, Freshdesk) są w każdej firmie IT i e-commerce. Zrozumienie ticketowego przepływu pracy jest niezbędne dla każdego programisty aplikacji biznesowych.

  1. Formularz zgłoszenia: tytuł, opis, kategoria, priorytet
  2. Lista ticketów z filtrem: otwarte / w realizacji / zamknięte
  3. Zmiana statusu ticketu z komentarzem
  4. Szczegóły ticketu z historią statusów
  5. Licznik otwartych ticketów w nagłówku
{
"tickets": [
{
"id": 1,
"title": "Nie mogę zalogować się do poczty",
"description": "Od rana pojawia się błąd 401",
"category": "email",
"priority": "high",
"status": "open",
"created_at": "2026-02-10 09:00:00",
"closed_at": null,
"notes": ""
}
]
}
  • Formularz zgłoszenia
  • Lista z statusem i priorytetem
  • Zmiana statusu (select + submit)
  • Zapis do JSON
Ocena: 3.0
<?php
$statuses = ['open', 'in_progress', 'closed'];
$priorities = ['low', 'medium', 'high'];
// Zmiana statusu
function updateTicketStatus(array &$tickets, int $id, string $newStatus, string $note): bool {
global $statuses;
if (!in_array($newStatus, $statuses)) return false;
foreach ($tickets as &$ticket) {
if ($ticket['id'] === $id) {
$ticket['status'] = $newStatus;
$ticket['notes'] = htmlspecialchars($note);
if ($newStatus === 'closed') {
$ticket['closed_at'] = date('Y-m-d H:i:s');
}
return true;
}
}
return false;
}
// Czas temu
function timeAgo(string $datetime): string {
$seconds = time() - strtotime($datetime);
if ($seconds < 3600) return floor($seconds / 60) . ' min temu';
if ($seconds < 86400) return floor($seconds / 3600) . ' godz. temu';
return floor($seconds / 86400) . ' dni temu';
}

Twój własny Jira w miniaturze!

Zacznij od formularza i listy ticketów. Statusy i filtry to krok drugi. Potem dodaj notatki i historię.