- Poll the public download page for "Aktuelle Version <nr> vom <date>",
report changes through the normal change feed and notification mail,
and show the current version as a card on the overview. Runs on its own
interval (default 30 min); the first run only records a baseline.
- Archive epirentServer.zip / epirentClient.zip per version number so we
keep a download cache and history: streamed to disk with SHA-256 and
size, fetched in a background thread so ticket polling is unaffected,
with a free-space check before downloading (~1.1 GB per version).
- Retention is configurable via EPIRENT_DOWNLOAD_KEEP, where 0 means
unlimited; a successful archive is reported as a change and by mail.
- New Downloads page listing the archived versions with checksums and
links to fetch the cached files.
- Notification lines now omit the arrow when there is no previous value
and drop the "#" for entries without a ticket.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Let the user mark closed tickets as really done and hide them, so
tickets closed prematurely by an agent stay visible until confirmed
- User-side "archived" flag stored in the DB (independent of Zammad),
added via a schema migration on existing databases
- Hide archived tickets from the overview by default with an
"erledigte einblenden" toggle; archive/unarchive from the ticket
detail page and via a per-row quick action
- Poller automatically un-hides an archived ticket when new activity is
detected, so nothing is missed
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Set ticket state (Offen / In Bearbeitung / Warten auf Schließen /
Geschlossen) from the ticket detail page via a live PUT to Zammad;
pending-close gets a default pending time and the change is synced back
so it isn't flagged as an external change
- Replace the disruptive meta-refresh with a JS auto-refresh that pauses
while a text field has unsent content or focus
- Persist reply/new-ticket drafts to localStorage and restore them after
a reload or accidental navigation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Internal Flask app that monitors the epi-helpdesk.zammad.com tickets via
the Zammad API, deployable as a systemd service behind Apache under
/episupport.
Features:
- Poller: session-login API sync, snapshot diff to detect agent changes
(status, owner, priority, closures, new replies); email notifications
- Dashboard: ticket overview with sorting, "not closed" filter and
highlighting of tickets with unconfirmed changes; per-item and bulk
"mark as read"
- Analytics: KPIs, response/resolution times, monthly SVG trend chart,
distributions (status/priority/group/agent), Excel export
- Conversation view: full per-ticket thread cached in the DB (avoids
proxy timeouts), inline image attachments, safe HTML-to-text rendering
- Write actions: reply to tickets and create new tickets with a
confirmation step and attachment upload (incl. clipboard paste);
self-triggered actions are synced back so they aren't flagged as changes
- Local timezone display (Europe/Berlin) for all timestamps
Includes deploy tooling: setup.sh, systemd units and Apache config.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>