Add EPI-Support monitoring & analytics platform
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>
This commit is contained in:
@@ -6,7 +6,8 @@
|
||||
|
||||
<section class="panel">
|
||||
<div class="panel-head"><h2>Neues Ticket beim EPI-Support anlegen</h2></div>
|
||||
<form method="post" action="{{ url_for('new_ticket_preview') }}" class="form">
|
||||
<form method="post" action="{{ url_for('new_ticket_preview') }}"
|
||||
class="form attach-form" enctype="multipart/form-data">
|
||||
<label>Titel / Betreff
|
||||
<input type="text" name="title" required maxlength="200"
|
||||
placeholder="Kurze Zusammenfassung des Anliegens">
|
||||
@@ -20,11 +21,13 @@
|
||||
</label>
|
||||
<label>Nachricht
|
||||
<textarea name="body" rows="10" required
|
||||
placeholder="Beschreibe dein Anliegen…"></textarea>
|
||||
placeholder="Beschreibe dein Anliegen… (Screenshot mit Strg+V einfügen)"></textarea>
|
||||
</label>
|
||||
{% include "_attach.html" %}
|
||||
<div class="form-actions">
|
||||
<button class="btn-sm" type="submit">Weiter zur Bestätigung →</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
{% endblock %}
|
||||
{% block scripts %}<script src="{{ url_for('static', filename='upload.js') }}"></script>{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user