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>
38 lines
1.2 KiB
HTML
38 lines
1.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>{% block title %}EPI-Support{% endblock %}</title>
|
|
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
|
|
<meta http-equiv="refresh" content="120">
|
|
</head>
|
|
<body>
|
|
<header class="topbar">
|
|
<a class="brand" href="{{ url_for('index') }}">EPI Support Monitor</a>
|
|
<nav>
|
|
<a href="{{ url_for('index') }}">Übersicht</a>
|
|
<a href="{{ url_for('analytics_view') }}">Auswertung</a>
|
|
<a href="{{ url_for('changes') }}">Änderungen</a>
|
|
<a href="{{ url_for('new_ticket_form') }}">+ Neues Ticket</a>
|
|
<a href="{{ zammad_url }}" target="_blank" rel="noopener">Zammad ↗</a>
|
|
</nav>
|
|
</header>
|
|
|
|
{% with messages = get_flashed_messages() %}
|
|
{% if messages %}
|
|
<div class="flash">{{ messages|join(' ') }}</div>
|
|
{% endif %}
|
|
{% endwith %}
|
|
|
|
<main>
|
|
{% block content %}{% endblock %}
|
|
</main>
|
|
|
|
<footer>
|
|
EPI-Support-Monitor · liest <code>{{ zammad_url }}</code> · Seite aktualisiert sich automatisch
|
|
</footer>
|
|
{% block scripts %}{% endblock %}
|
|
</body>
|
|
</html>
|