- E-mail intake (IMAP), optional and off by default: clients can create a
  ticket or reply to an existing one just by sending/replying to an e-mail.
  Configure any number of mailboxes in the new Admin > Poczta page (SMTP +
  IMAP together, replacing the old "E-MAIL" tab), each routed to a specific
  subcategory or a whole category (new tickets.category_id column). Replies
  are matched to their ticket via the number/checksum already in every
  notification subject; autoresponders/bounces are detected and rejected;
  "restrict tickets to LDAP" is enforced for e-mail like the guest web form.
  Manual "Pobierz teraz" per-mailbox fetch button; dedicated
  storage/logs/imap-*.log regardless of the app's log level; mail-icon badges
  on e-mail-originated tickets/messages in the operator queue and ticket view.
- Operator queue: "select all" checkbox in the table header for every
  currently visible ticket under the active filter/tab.
- Fixed: scheduled commands (SLA breach check, automation rules, and now IMAP
  fetch) always sent notifications through .env's default mailer instead of
  the configured SMTP server, because AppServiceProvider's Settings override
  used to skip itself for any console command, not just migrate.
- Fixed: visiting a ticket that no longer exists (deleted mid-session, or a
  stale background refresh) showed a raw 404 instead of redirecting back to
  the operator queue / client dashboard.
- Docs: README/ARCHITECTURE/CLAUDE/install/wiki updated for all of the above,
  including the previously-missing host crontab entry for schedule:run.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 12:44:30 +02:00
parent 63178b366e
commit 0d116dfd98
38 changed files with 2290 additions and 164 deletions

View File

@@ -3,7 +3,8 @@
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, SMTP, BookStack, API).
akcje, e-maile), wygląd/branding oraz integracje (LDAP, poczta SMTP/IMAP,
BookStack, 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).
@@ -174,8 +175,58 @@ ważne + treść HTML).
ustawienia.
SMTP (host, port, szyfrowanie, użytkownik/hasło, adres/nazwa nadawcy, z
przyciskiem **„Testuj połączenie”**) konfiguruje się w zakładce **E-MAIL**,
razem z layoutem/stopką wiadomości — patrz sekcja wyżej.
przyciskiem **„Testuj połączenie”**) konfiguruje się w zakładce **Poczta**,
razem z layoutem/stopką wiadomości i skrzynkami IMAP (patrz niżej).
## Poczta — odbieranie zgłoszeń i odpowiedzi e-mailem (IMAP)
Zakładka **Poczta** (dawniej „E-MAIL") łączy konfigurację SMTP (wysyłka) ze
skrzynkami IMAP (odbiór) — obie strony wymiany e-mailowej z klientem żyją
razem, zamiast być rozrzucone po różnych zakładkach.
- **Wiele skrzynek IMAP jednocześnie** — np. `zgloszenia-it@firma.pl` i
`zgloszenia-hr@firma.pl` jako dwie osobne, niezależnie włączane skrzynki,
każda z własnym hostem/portem/szyfrowaniem/loginem/hasłem i folderem.
- **Cel nowych zgłoszeń** — jeden wspólny selektor pozwala wybrać albo
**konkretną podkategorię** (trafi też do jej zespołu, tak jak zgłoszenie
założone przez formularz web), albo **całą kategorię** bez wskazywania
podkategorii (zgłoszenie zostaje nieprzypisane do zespołu, ale kategoria
jest widoczna i można po niej filtrować kolejkę operatora), albo zostawić
puste (zgłoszenie całkiem nieprzypisane).
- **Dopasowywanie odpowiedzi** — odpowiedź na powiadomienie e-mail (temat
zawiera numer/sumę kontrolną zgłoszenia) trafia jako kolejna wiadomość do
tego samego wątku, nie jako nowe zgłoszenie — widoczna na żywo u operatora,
tak jak każda inna odpowiedź.
- **Filtry przed śmieciowymi zgłoszeniami** — automatyczne odpowiedzi
(autorespondery, „poza biurem”, bounce/mailer-daemon) są rozpoznawane po
nagłówkach (`Auto-Submitted`, `Precedence`) i typowych frazach w temacie
(PL i EN) i **odrzucane bez tworzenia zgłoszenia**; dodatkowa lista
zablokowanych nadawców per skrzynka (domyślnie `mailer-daemon, postmaster,
no-reply, noreply`).
- **„Tylko użytkownicy z LDAP”** (Integracje → LDAP) działa identycznie dla
poczty jak dla formularza gościa na stronie głównej — jeśli włączone, e-mail
od nieznanego nadawcy (spoza LDAP i bez lokalnego konta) jest odrzucany, nie
tworzy zgłoszenia.
- **Folder po przetworzeniu / folder odrzuconych** (opcjonalnie) — jeśli
puste, wiadomość zostaje na miejscu tylko oznaczona jako przeczytana.
- **Przycisk „Pobierz teraz”** przy każdej skrzynce — ręczne, natychmiastowe
sprawdzenie poczty bez czekania na harmonogram (co 5 minut), działa też dla
wyłączonej skrzynki; pokazuje od razu liczbę nowych/odpowiedzi/odrzuconych/
błędów.
- **Przycisk „Testuj połączenie”** sprawdza niezapisane wartości formularza,
bez zapisywania.
- **Log** — cała aktywność (połączenia, każda decyzja per wiadomość, błędy)
trafia do osobnego pliku `storage/logs/imap-*.log`, niezależnie od
ogólnego poziomu logowania aplikacji — najlepsze miejsce do sprawdzenia,
dlaczego dany e-mail się nie przetworzył.
- **Znacznik „e-mail"** — zgłoszenie i pojedyncze wiadomości utworzone z
poczty mają widoczną ikonę koperty w kolejce operatora i w widoku
zgłoszenia, odróżniając je od zgłoszeń/odpowiedzi z formularza web.
> Sprawdzanie skrzynek działa cyklicznie tylko wtedy, gdy na serwerze jest
> skonfigurowany zewnętrzny cron wywołujący `php artisan schedule:run` (patrz
> [install.md](../../install.md)) — bez tego działa wyłącznie przycisk
> „Pobierz teraz”.
## Integracje

View File

@@ -49,7 +49,13 @@ 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ąć**.
zamknięta) albo **usunąć**. Checkbox w nagłówku tabeli zaznacza/odznacza od
razu wszystkie zgłoszenia aktualnie widoczne pod bieżącym filtrem/zakładką
(nie wszystkie w systemie).
Zgłoszenie założone albo odpowiedziane przez e-mail (patrz konfiguracja w
Admin > Poczta) ma widoczną ikonę koperty obok numeru w kolejce oraz przy
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