v1.5.0
Co nowego: - Podgląd logów w panelu admina (Admin > Logi) — pliki storage/logs/*.log bez potrzeby dostępu do kontenera, z filtrami poziomu/tekstu/liczby wpisów i auto-odświeżaniem. - Filtr „Bez kategorii” w kolejce operatora — izoluje zgłoszenia bez przypisanej kategorii/podkategorii. - Narzędzie importu z Heska: już nie tworzy automatycznie kont klientów dla nieznanych e-maili (pomija takie zgłoszenia zamiast zakładać konto), łączy odpowiedzi/właścicieli zgłoszeń z realnymi kontami operatorów po e-mailu, nowe flagi --assign-operators i --fix-closed-dates do donaprawiania wcześniejszych importów, dedykowany log storage/logs/hesk-import.log. - Poprawka: pulpit statystyk operatora (rozkład wg kategorii/podkategorii i filtr kategorii) pomijał zgłoszenia przypisane do samej kategorii bez podkategorii (np. z poczty IMAP) — teraz liczone poprawnie. - Poprawka: błąd JS i zawieszone w tle liczniki przy nawigacji z widoku z aktywnym licznikiem (najbardziej odczuwalne w liczniku czasu pracy operatora). - Porządki w bazie: usunięte niewykorzystywane kolumny (users.remember_token, users.email_verified_at, email_templates.trigger_label); wartości pól dodatkowych, stan triage/podsumowania AI i powiązany sprzęt Snipe-IT przeniesione z tabeli tickets do osobnych tabel (ticket_field_values, ticket_ai_summaries, ticket_snipeit_assets) — bez zmiany zachowania, ale pola dodatkowe są teraz efektywnie przeszukiwalne; dodane brakujące indeksy na 4 tabelach pivot; tickets.source/ticket_messages.source walidowane względem znanego zestawu wartości. Zaktualizowana dokumentacja: README, CLAUDE.md, ARCHITECTURE.md, CHANGELOG.md, wiki/admin, wiki/operator. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
61
CHANGELOG.md
61
CHANGELOG.md
@@ -3,6 +3,67 @@
|
||||
All notable changes to this project are documented in this file. Format loosely
|
||||
follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
|
||||
## [1.5.0] - 2026-08-05
|
||||
|
||||
### Added
|
||||
|
||||
- **Admin log viewer** (Admin > Logi) — browse `storage/logs/*.log` from the
|
||||
admin panel without shell access to the container: a file picker (size +
|
||||
last-modified, most recent first), level/free-text/entry-count filters, and
|
||||
an optional 5s auto-refresh. Read-only, admin-only; reads only the tail of
|
||||
large files to keep it fast.
|
||||
- **"Bez kategorii" filter** in the operator queue's category dropdown —
|
||||
isolates tickets with neither a category nor subcategory assigned (e.g. an
|
||||
IMAP mailbox routed to nothing in particular), previously only reachable by
|
||||
scanning the unfiltered list.
|
||||
|
||||
### Changed
|
||||
|
||||
- **Hesk import tool** (`scripts/hesk-import/`) no longer auto-creates client
|
||||
accounts for unrecognized requester e-mails — the servicedesk user base is
|
||||
now treated as authoritative, so a Hesk ticket whose requester has no
|
||||
matching account is skipped instead (reported at the end, with the list of
|
||||
skipped e-mails). Hesk staff replies/notes and ticket ownership are now
|
||||
linked to real operator/admin accounts when the staff e-mail matches one.
|
||||
Two new backfill flags cover tickets imported before these existed:
|
||||
`--assign-operators` (sets `assignee_id` from Hesk's ticket owner, never
|
||||
overwriting a manual reassignment) and `--fix-closed-dates` (corrects a
|
||||
closed ticket's date to Hesk's own `closedat` column instead of the
|
||||
drifting `lastchange`, and adds the missing "Zamknięte" history entry).
|
||||
Every newly imported ticket also records its source Hesk id
|
||||
(`tickets.hesk_ticket_id`, unique) as a second, DB-level guard against
|
||||
duplicate imports on top of the existing state file. See
|
||||
`scripts/hesk-import/README.md` for details.
|
||||
- Internal database cleanup: removed three columns confirmed unused against
|
||||
live data (`users.remember_token`, `users.email_verified_at`,
|
||||
`email_templates.trigger_label`); moved custom field values, AI
|
||||
triage/summary state, and the linked Snipe-IT asset off the `tickets` row
|
||||
into three dedicated one-to-one tables (`ticket_field_values`,
|
||||
`ticket_ai_summaries`, `ticket_snipeit_assets`) — no visible behavior
|
||||
change, but custom field values are now efficiently queryable instead of
|
||||
living only in a JSON blob, and the `tickets` row itself is narrower; added
|
||||
missing reverse indexes on 4 pivot tables (`team_subcategory`, `role_user`,
|
||||
`team_user`, `custom_field_subcategory`); `tickets.source` and
|
||||
`ticket_messages.source` now validate against a known set of values
|
||||
instead of silently accepting any string.
|
||||
|
||||
### Fixed
|
||||
|
||||
- The operator statistics dashboard's category/subcategory breakdown (and
|
||||
its category filter) only counted tickets routed through a subcategory —
|
||||
a ticket routed to a whole category with no subcategory (e.g. via an IMAP
|
||||
mailbox routed to "całą kategorię") was silently excluded from those
|
||||
charts and from filtering by that category. Now counted correctly, with
|
||||
bare-category tickets shown as their own "(bez podkategorii)" row in the
|
||||
subcategory breakdown.
|
||||
- A JavaScript error (and stray background timers left running) could occur
|
||||
when navigating away from a page with an active countdown/timer widget —
|
||||
ticket/queue auto-refresh, the theme switcher, file-attachment
|
||||
drag-and-drop. Most consequential in the operator ticket time tracker,
|
||||
where it could throw console errors and momentarily break other UI
|
||||
elements (e.g. dropdown menus) after leaving a ticket with the timer
|
||||
running.
|
||||
|
||||
## [1.4.0] - 2026-08-05
|
||||
|
||||
### Added
|
||||
|
||||
Reference in New Issue
Block a user