Files
servicedesk/wiki/operator/README.md
Kacper 0b06687ea1 v1.1.2
- Real-time updates (Laravel Reverb): live operator queue, live ticket
  chat/detail updates for operator and client, periodic fallback refresh
  with a visible countdown as a backstop for dropped websocket connections.
- SLA automation rules (Admin > Automatyzacja SLA): act on a ticket after
  N minutes of customer silence (change priority/status/team/assignee),
  evaluated every 15 minutes, reusing TicketService's own setters so
  automated changes get the same history/notification/broadcast a manual
  change would.
- New notification: every operator on a matching team gets notified when
  a new ticket lands in one of their subcategories.
- BookStack knowledge-base sidebar now also shown on the client's own
  ticket view (previously operator-only); suggestions everywhere now load
  in after first paint instead of blocking it.
- Client ticket view: shows assigned operator + team; page widened to
  match the operator's.
- Notification bell shows unread only; read notifications disappear
  instead of just dimming.
- Stats dashboard: sectioned layout, new breakdowns (by subcategory, CSAT
  by team/operator, top clients, client x subcategory cross-tab).
- Mobile: nav dropdowns (theme/notifications/profile) now expand full
  width instead of overflowing off-screen below 640px.
- Fixed two bugs that silently disabled all real-time updates (missing
  CSRF header on Echo's private-channel auth; a script-load-order race
  that could miss the livewire:init event) and the mariadb healthcheck
  (world-writable credentials file on this stack's NFS mount).
- Assorted test-suite fixes (roles virtual attribute needs the roles
  table seeded; a few missing seeds/wrong assertions found along the way).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 20:43:05 +02:00

148 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Przewodnik — Operator
Panel operatora (`/operator`) to miejsce pracy z kolejką zgłoszeń: przegląd,
odpowiadanie, zmiana statusu/priorytetu/przypisania oraz statystyki zespołu.
Domyślnie każde konto ląduje po zalogowaniu w panelu Klienta; przełącz się do
panelu Operatora przez menu profilu (prawy górny róg), jeśli konto ma tę rolę.
Dzwoneczek powiadomień w górnym pasku (widoczny we wszystkich panelach) pokazuje
Twoje **nieprzeczytane** powiadomienia — kliknięcie (albo „Oznacz wszystkie jako
przeczytane”) usuwa je z listy.
## Kolejka zgłoszeń — aktualizacje na żywo
Panel główny (`/operator`) pokazuje listę zgłoszeń z zakładkami po lewej stronie:
- **Otwarte** — wszystkie zgłoszenia jeszcze nie zamknięte, widoczne dla Ciebie.
- **Moje zgłoszenia** — przypisane do Ciebie (bez zamkniętych).
- **Nieprzypisane** — czekają na przejęcie przez kogoś z zespołu (bez zamkniętych).
- **Zamknięte** — archiwum; jedyna zakładka, w której pojawiają się zamknięte
zgłoszenia.
- **Zespoły** — osobna zakładka na każdy zespół, do którego należysz (administrator
widzi wszystkie zespoły; też bez zamkniętych).
Nie-administratorzy widzą tylko zgłoszenia swoich zespołów, zgłoszenia bez
przypisanego zespołu, oraz wszystko przypisane bezpośrednio do nich.
**Filtry** nad tabelą: status, priorytet, kategoria, wyszukiwanie po numerze/
temacie/kliencie/treści zgłoszenia i odpowiedzi w wątku. **Kolumny** można dowolnie
włączać/wyłączać przyciskiem „Kolumny”, a nagłówki kolumn sortują listę.
**Zapisane widoki** — przycisk „Zapisane widoki” pozwala zapisać bieżącą
kombinację zakładki/filtrów/sortowania/kolumn pod własną nazwą, oznaczyć jeden z
zapisanych widoków jako domyślny (ładuje się automatycznie przy wejściu do
kolejki) i usuwać niepotrzebne. Widoki są prywatne — każdy operator widzi tylko
swoje.
**Akcje zbiorcze**: zaznacz kilka zgłoszeń checkboxami, by je **scalić** (pierwsze
zaznaczone staje się główne, reszta trafia do niego jako wiadomości i zostaje
zamknięta) albo **usunąć**.
Kolejka aktualizuje się **na żywo** — nowe zgłoszenie, zmiana statusu/priorytetu/
przypisania czy nowa odpowiedź pojawiają się bez odświeżania strony. Obok
przycisku „Kolumny” widać mały licznik odliczający do zera — to niezależny od
połączenia na żywo, okresowy fallback (co ok. 60 s), na wypadek gdyby
połączenie sieciowe w tle się zerwało.
## Praca ze zgłoszeniem
Widok zgłoszenia też aktualizuje się na żywo — nowa wiadomość klienta pojawia
się od razu (bez odświeżania), podobnie jak zmiana statusu/priorytetu/zespołu
zrobiona przez innego operatora albo przez regułę automatyzacji SLA. Licznik
przy przycisku „Wróć do listy” to taki sam fallbackowy zegar jak w kolejce
(co ok. 30 s).
W widoku pojedynczego zgłoszenia:
- **Zmiana statusu / priorytetu / zespołu / przypisanego operatora** — z listy
rozwijanej; „Przypisz do mnie” to skrót jednym kliknięciem.
- **Odpowiedź publiczna** — widoczna dla klienta; można wybrać **szablon
odpowiedzi** (wstawia gotowy tekst do edycji) i wysłać razem ze zmianą statusu
jedną **szybką akcją** (np. „Wyślij i zamknij”) zamiast dwóch osobnych kroków.
- **Notatka wewnętrzna** — widoczna tylko dla operatorów/adminów, np. do
przekazania kontekstu innemu operatorowi.
- **Załączniki** — do odpowiedzi/notatki, przeciągnij pliki na pole załączników
albo kliknij, żeby wybrać je z dysku, w granicach limitów ustawionych przez
administratora; załączone obrazy pokazują się jako miniatury w wątku.
- **Baza wiedzy** (jeśli administrator włączył integrację z BookStack) — panel
boczny podpowiada artykuły pasujące do kategorii/podkategorii zgłoszenia;
kliknięcie otwiera artykuł, przycisk „Kopiuj link" kopiuje adres bez
wychodzenia ze zgłoszenia (np. do wklejenia w odpowiedzi).
- **Ocena obsługi** — jeśli klient już ocenił zgłoszenie, ocena (gwiazdki +
ewentualny komentarz) pokazuje się w panelu bocznym, tylko do odczytu.
- **Licznik czasu pracy** — start/stop/reset przy zgłoszeniu; czas zapisuje się
automatycznie nawet przy zamknięciu karty (mechanizm `sendBeacon`). Zliczanie
jest automatycznie wstrzymywane, gdy zgłoszenie ma status zamknięty — nie
uruchomi się przy otwarciu zamkniętego zgłoszenia ani nie będzie dalej biec
po jego zamknięciu; wcześniej naliczony czas można wciąż ręcznie skorygować.
- **Edycja danych zgłoszenia** — temat, opis, podkategoria, pola dodatkowe;
zmiana kategorii może wysłać powiadomienie do klienta.
- **Historia** — log każdej zmiany (status, priorytet, zespół, przypisanie) z
datą; wpis zaczynający się od „Automatyzacja: …” oznacza, że zmianę wykonała
reguła automatyzacji SLA (Admin > Automatyzacja SLA), nie operator ręcznie.
## Statystyki (`/operator/stats`)
Nowa zakładka **„Statystyki”** (przycisk w pasku narzędzi kolejki) pokazuje pulpit
analityczny z możliwością filtrowania — dane odświeżają się na żywo przy każdej
zmianie filtra, bez przeładowania strony.
**Filtry:**
- **Zakres dat** — Dziś / 7 dni / 30 dni / 90 dni / Cały okres / zakres
niestandardowy (oddo).
- **Zespół, priorytet, kategoria, operator** — jak w kolejce; nie-administratorzy
widzą tylko swoje zespoły i przypisanych do nich operatorów.
**Kafelki KPI:**
| Wskaźnik | Co pokazuje |
|---|---|
| Łącznie zgłoszeń | liczba zgłoszeń w wybranym zakresie/filtrach |
| Otwarte / Zamknięte | podział + % zamkniętych |
| Śr. czas 1. odpowiedzi | średni czas od utworzenia do pierwszej odpowiedzi operatora |
| Śr. czas rozwiązania | średni czas od utworzenia do zamknięcia (przybliżony — brak osobnej daty "rozwiązano", liczony do ostatniej aktualizacji zamkniętego zgłoszenia) |
| Naruszenia SLA | % zgłoszeń, które przekroczyły czas rozwiązania wg priorytetu (zgodnie z regułami SLA w Admin > Statusy/Priorytety) |
| Ocena obsługi (CSAT) | średnia ocen klientów (15) w wybranym zakresie/filtrach + % zamkniętych zgłoszeń, które zostały ocenione |
Przycisk **„Eksportuj CSV"** pobiera listę zgłoszeń (jeden wiersz na zgłoszenie) z
uwzględnieniem aktualnie wybranego zakresu dat i filtrów.
Reszta strony jest podzielona na sekcje:
**Rozkład zgłoszeń** (paski poziome, kolor = ta sama identyfikacja co w kolejce
dla statusu/priorytetu; najedź kursorem na pasek, by zobaczyć dokładną wartość):
- Zgłoszenia wg statusu
- Zgłoszenia wg priorytetu
- Zgłoszenia wg kategorii
- Zgłoszenia wg podkategorii
**Obciążenie**:
- Obciążenie zespołów
- Obciążenie operatorów (ranking wg liczby przypisanych zgłoszeń)
**Klienci**:
- Najaktywniejsi klienci (Top 10 wg liczby zgłoszeń w wybranym okresie; osobny
wiersz „Goście (bez konta)” sumuje zgłoszenia bez zalogowanego klienta)
- **Klienci wg podkategorii** — tabela krzyżowa: top 10 klientów × top 5
najczęstszych podkategorii w wybranym okresie, reszta podkategorii zbiorczo w
kolumnie „Inne”.
**Ocena obsługi (CSAT)** — średnia ocena (X.XX / 5) wg zespołu i wg operatora;
zespół/operator bez żadnej oceny w wybranym okresie po prostu nie pojawia się
na liście.
**Trend** — dzienny wykres słupkowy „Nowe zgłoszenia” i „Zamknięte zgłoszenia”
obok siebie (maks. ostatnie 60 dni wybranego zakresu, żeby słupki pozostały
czytelne przy długich okresach).
## Wskazówki
- Zgłoszenie bez przypisanego zespołu jest widoczne dla wszystkich operatorów —
warto je szybko zaklasyfikować/przypisać.
- Szybkie akcje i szablony odpowiedzi konfiguruje administrator (Admin > Szybkie
akcje / Szablony odpowiedzi) — zgłoś mu, jeśli brakuje przydatnego szablonu.