v1.2.1
- Generic AI integration (Admin > Integracje > "Integracja AI"), optional and off by default: an OpenAI-compatible /chat/completions client (Groq, OpenAI, or a self-hosted Ollama instance) configured by base URL, optional API key, model, and an SSL-verification toggle. Foundation for the two AI features below and anything else that wants an LLM call in the future. - BookStack automatic content tagging (AI): "Otaguj nową treść"/"Otaguj wszystko ponownie" buttons plus `php artisan bookstack:tag-content` (--dry-run/--force/--limit=N) tag every book/chapter/page with matching helpdesk subcategory names, idempotent by default. - BookStack search refinement: "Przeszukuj" is now three independent checkboxes (Książki/Strony/Rozdziały) instead of a single dropdown, plus a new "Szukaj po" setting (nazwa/tagi/oba) — tag matching uses the bare subcategory name, matching what auto-tagging writes. - AI-driven ticket triage + summary (Admin > Integracje > "Automatyzacja AI dla zgłoszeń", via new scheduled ai:run-ticket-automation): five toggles auto-assign/correct category+subcategory, rewrite an unclear subject, and set priority from content, once per ticket in the background; every change is logged in the ticket's history. Separately, an AI summary + suggested action for every ticket, shown to operators only, with an admin-editable prompt. - Operators can now reassign a ticket to any team, not just one they belong to. - The auto-refresh countdown badges (ticket view, operator queue) are now clickable — fetch immediately and reset the countdown. - All 7 "cyclical" intervals (3 browser refresh countdowns, the notification bell poll, and the 4 background scheduled commands) are now configurable from Admin > Konfiguracja instead of fixed in code. - Fixed: an operator viewing a ticket that's deleted or moved outside their team scope mid-session is now redirected to the operator queue instead of hitting an error. - Docs: README/ARCHITECTURE/CLAUDE/install/wiki updated for all of the above. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
Panel administratora (`/admin`) to jedno miejsce do konfiguracji całego systemu:
|
||||
struktura zgłoszeń (kategorie, pola, statusy, priorytety, SLA), automatyzacje
|
||||
(reguły SLA, wyzwalacze), użytkownicy i zespoły, treści (szablony, szybkie
|
||||
akcje, e-maile), wygląd/branding oraz integracje (LDAP, poczta SMTP/IMAP,
|
||||
BookStack, API).
|
||||
(reguły SLA, wyzwalacze, automatyzacja AI zgłoszeń), użytkownicy i zespoły,
|
||||
treści (szablony, szybkie akcje, e-maile), wygląd/branding oraz integracje
|
||||
(LDAP, poczta SMTP/IMAP, BookStack, AI, API).
|
||||
|
||||
Domyślnie każde konto ląduje po zalogowaniu w panelu Klienta; przełącz się do
|
||||
panelu Administratora przez menu profilu (prawy górny róg).
|
||||
@@ -173,6 +173,14 @@ ważne + treść HTML).
|
||||
numerem przestaje działać. REST API (`/api/v1/...`) tego nie dotyczy —
|
||||
tam zgłoszenia zawsze identyfikuje się po `id`, niezależnie od tego
|
||||
ustawienia.
|
||||
- **Częstotliwość odświeżania i harmonogramu** — dwie grupy pól:
|
||||
- **Odświeżanie w przeglądarce** — co ile sekund odświeża się (poza
|
||||
aktualizacjami na żywo) widok zgłoszenia (klient i operator), lista
|
||||
zgłoszeń operatora, i dzwonek powiadomień.
|
||||
- **Zadania w tle** — co ile minut uruchamiają się sprawdzanie naruszeń
|
||||
SLA, reguły automatyzacji, pobieranie e-maili (IMAP) i automatyzacja AI
|
||||
zgłoszeń. Zmiana obowiązuje od najbliższego tyknięcia harmonogramu (co
|
||||
minutę), bez potrzeby restartu czy redeployu.
|
||||
|
||||
SMTP (host, port, szyfrowanie, użytkownik/hasło, adres/nazwa nadawcy, z
|
||||
przyciskiem **„Testuj połączenie”**) konfiguruje się w zakładce **Poczta**,
|
||||
@@ -248,7 +256,12 @@ razem, zamiast być rozrzucone po różnych zakładkach.
|
||||
zapytania kończą się błędem 403 mimo poprawnych danych logowania.
|
||||
- **Weryfikuj certyfikat SSL** — włączone domyślnie; wyłącz tylko jeśli
|
||||
instancja BookStack korzysta z certyfikatu self-signed/prywatnego CA.
|
||||
- **Przeszukuj** — strony i książki / tylko strony / tylko książki.
|
||||
- **Przeszukuj** — trzy niezależne checkboxy: Książki / Strony / Rozdziały
|
||||
(dowolna kombinacja).
|
||||
- **Szukaj po** — słowa kluczowe w nazwie / tagi / oba. Wyszukiwanie po
|
||||
tagach dopasowuje artykuły oznaczone w BookStacku tagiem o nazwie zgodnej
|
||||
z podkategorią zgłoszenia (np. tag „Drukarki i skanery”) — patrz
|
||||
automatyczne tagowanie niżej, żeby nie robić tego ręcznie dla całej wiki.
|
||||
- **Dozwolone półki** — dwie **niezależne** checklisty: jedna dla podpowiedzi
|
||||
przy tworzeniu zgłoszenia (klient, operator, formularz gościa na stronie
|
||||
głównej), druga dla panelu bocznego operatora na widoku istniejącego
|
||||
@@ -263,6 +276,43 @@ razem, zamiast być rozrzucone po różnych zakładkach.
|
||||
- Przycisk **„Testuj połączenie”** sprawdza niezapisane wartości formularza
|
||||
(analogicznie do LDAP/SMTP) i pokazuje dokładny komunikat błędu z
|
||||
BookStacka, jeśli połączenie się nie powiedzie.
|
||||
- **Automatyczne tagowanie treści (AI)** — przyciski **„Otaguj nową
|
||||
treść”** (pomija już otagowane pozycje) i **„Otaguj wszystko ponownie”**
|
||||
(klasyfikuje od nowa całą wiki) używają integracji AI (niżej) do
|
||||
otagowania każdej książki/strony/rozdziału nazwami pasujących podkategorii
|
||||
helpdesku — bez tego wyszukiwanie „po tagach” wyżej nic nie znajdzie.
|
||||
Wymaga wcześniej skonfigurowanej i włączonej integracji AI. Dostępne też
|
||||
z linii poleceń: `php artisan bookstack:tag-content` (`--dry-run`,
|
||||
`--force`, `--limit=N`).
|
||||
|
||||
- **Integracja AI** — opcjonalna, **domyślnie wyłączona**, ogólne połączenie z
|
||||
dostawcą modelu językowego (nie tylko dla BookStacka — patrz
|
||||
„Automatyzacja AI dla zgłoszeń” niżej). Pola: **adres API** (dowolny
|
||||
dostawca kompatybilny z OpenAI — np. Groq, OpenAI, lokalny Ollama),
|
||||
**klucz API** (opcjonalny — zostaw puste dla lokalnych instancji bez
|
||||
autoryzacji), **model**, **weryfikacja SSL** (wyłącz tylko dla instancji z
|
||||
certyfikatem self-signed, np. lokalny Ollama). Przycisk **„Testuj
|
||||
połączenie”** jak przy pozostałych integracjach.
|
||||
|
||||
- **Automatyzacja AI dla zgłoszeń** — wymaga włączonej integracji AI powyżej.
|
||||
Zgłoszenia przetwarzane są w tle, cyklicznie (`ai:run-ticket-automation`,
|
||||
interwał konfigurowalny w Konfiguracji) — nie synchronicznie przy
|
||||
składaniu zgłoszenia, więc nie spowalnia to klienta.
|
||||
- **Automatyczna kategoryzacja** — pięć niezależnych przełączników: przypisz
|
||||
kategorię/podkategorię, gdy zgłoszenie nie ma żadnej; dobierz podkategorię,
|
||||
gdy ma tylko kategorię; zweryfikuj i ewentualnie popraw już przypisaną
|
||||
podkategorię; popraw temat zgłoszenia, jeśli jest niejasny; ustaw
|
||||
priorytet na podstawie treści. Każde zgłoszenie jest sprawdzane **tylko
|
||||
raz** — zmiany trafiają do historii zgłoszenia z adnotacją
|
||||
„Automatyzacja: klasyfikacja AI” (patrz „Historia” w przewodniku
|
||||
operatora).
|
||||
- **Podsumowanie AI dla operatora** — osobny przełącznik generuje krótkie
|
||||
podsumowanie + sugerowaną kolejną akcję dla **każdego** zgłoszenia,
|
||||
widoczne tylko operatorowi (panel boczny „Podsumowanie AI” w widoku
|
||||
zgłoszenia), odświeżane automatycznie, gdy w wątku pojawi się nowa
|
||||
wiadomość.
|
||||
- **Prompt systemowy podsumowania** — edytowalne pole tekstowe z gotową
|
||||
wartością domyślną i przyciskiem **„Resetuj”**.
|
||||
|
||||
## API
|
||||
|
||||
|
||||
@@ -54,8 +54,9 @@ Otwórz dowolne zgłoszenie, by zobaczyć:
|
||||
|
||||
Wszystko na tej stronie aktualizuje się **na żywo** — jeśli operator odpowie
|
||||
albo zmieni status/przypisanie, zobaczysz to bez odświeżania strony. Mały
|
||||
licznik przy przycisku „Wróć do listy” to niezależny, okresowy fallback (co
|
||||
ok. 30 s), na wypadek gdyby połączenie w tle się zerwało.
|
||||
licznik przy przycisku „Wróć do listy” to niezależny, okresowy fallback
|
||||
(domyślnie co ok. 30 s), na wypadek gdyby połączenie w tle się zerwało —
|
||||
kliknięcie licznika od razu odświeża stronę i resetuje odliczanie.
|
||||
|
||||
## Odpowiadanie
|
||||
|
||||
|
||||
@@ -60,16 +60,24 @@ konkretnej wiadomości w wątku zgłoszenia.
|
||||
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.
|
||||
połączenia na żywo, okresowy fallback (interwał ustawia administrator w
|
||||
Konfiguracji, domyślnie co ok. 60 s), na wypadek gdyby połączenie sieciowe w
|
||||
tle się zerwało. **Licznik jest też klikalny** — kliknięcie od razu odświeża
|
||||
listę i resetuje odliczanie, zamiast czekać na naturalny koniec.
|
||||
|
||||
## 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).
|
||||
zrobiona przez innego operatora, przez regułę automatyzacji SLA albo przez
|
||||
automatyzację AI (patrz „Historia” niżej). Licznik przy przycisku „Wróć do
|
||||
listy” to taki sam fallbackowy, klikalny zegar jak w kolejce (domyślnie co
|
||||
ok. 30 s, konfigurowalny przez administratora).
|
||||
|
||||
Jeśli zgłoszenie, które akurat oglądasz, zostanie usunięte przez kogoś
|
||||
innego, albo trafi (przez zmianę zespołu) poza Twój zakres widoczności —
|
||||
zostaniesz automatycznie przeniesiony z powrotem do swojej kolejki, zamiast
|
||||
zobaczyć błąd.
|
||||
|
||||
W widoku pojedynczego zgłoszenia:
|
||||
|
||||
@@ -78,7 +86,10 @@ W widoku pojedynczego zgłoszenia:
|
||||
„Obserwowane zgłoszenia” w Twoich preferencjach powiadomień
|
||||
(`/settings/notifications`).
|
||||
- **Zmiana statusu / priorytetu / zespołu / przypisanego operatora** — z listy
|
||||
rozwijanej; „Przypisz do mnie” to skrót jednym kliknięciem.
|
||||
rozwijanej; „Przypisz do mnie” to skrót jednym kliknięciem. Zespół można
|
||||
zmienić na **dowolny**, nie tylko taki, do którego sam należysz — jeśli
|
||||
przeniesiesz zgłoszenie do zespołu spoza swojego zakresu widoczności,
|
||||
zostaniesz automatycznie przeniesiony do swojej kolejki.
|
||||
- **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.
|
||||
@@ -91,6 +102,10 @@ W widoku pojedynczego zgłoszenia:
|
||||
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).
|
||||
- **Podsumowanie AI** (jeśli administrator włączył automatyzację AI
|
||||
zgłoszeń) — panel boczny widoczny tylko w panelu operatora, pokazuje krótkie
|
||||
podsumowanie sprawy i sugerowaną kolejną akcję; odświeża się samo, gdy w
|
||||
wątku pojawi się nowa wiadomość — nie trzeba go ręcznie odświeżać.
|
||||
- **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ę
|
||||
@@ -100,9 +115,12 @@ W widoku pojedynczego zgłoszenia:
|
||||
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.
|
||||
- **Historia** — log każdej zmiany (status, priorytet, zespół, przypisanie,
|
||||
kategoria/podkategoria, temat) z datą; wpis „Automatyzacja: nazwa reguły”
|
||||
oznacza regułę automatyzacji SLA (Admin > Automatyzacja SLA), a
|
||||
„Automatyzacja: klasyfikacja AI” — automatyczną kategoryzację/priorytet
|
||||
ustawione przez integrację AI (Admin > Integracje) — w obu przypadkach nie
|
||||
operator ręcznie.
|
||||
|
||||
## Statystyki (`/operator/stats`)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user