Files
patrickandClaude Sonnet 5.5 347f55cf7c
test / pytest (3.11) (push) Canceled after 0s
test / pytest (3.13) (push) Canceled after 0s
feat: Phase 6c baseline, ack, host alarms, outage notice, send limit, privacy mode, UI link
Includes atomic migrations, per-rule reminder semantics, first-run helper script
and the note on the undecided UI chat idea.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 03:06:23 +01:00

52 lines
1.9 KiB
HTML

{% extends "base.html" %}
{% block title %}Dashboard{% endblock %}
{% block content %}
<h1>Dashboard</h1>
{% if setup_open %}
<div class="flash info" role="status">Die Einrichtung ist noch nicht abgeschlossen. <a href="/setup">Zum Setup-Assistenten</a></div>
{% endif %}
<section class="card">
<h2>Systemstatus
<span class="badge {{ 'ok' if result.ok else 'error' }}">{{ 'Alles in Ordnung' if result.ok else 'Probleme' }}</span>
</h2>
<div class="table-wrap">
<table>
<thead><tr><th>Prüfung</th><th>Status</th><th>Details</th></tr></thead>
<tbody>
{% for name, check in result.checks.items() %}
<tr>
<td>{{ name }}</td>
<td><span class="badge {{ 'ok' if check.ok else 'error' }}">{{ 'OK' if check.ok else 'Fehler' }}</span></td>
<td>{{ check.detail }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</section>
<section class="card">
<h2>Offene Probleme <span class="badge info">{{ alerts_24h }} Alarme in 24 h</span></h2>
<div class="table-wrap">
<table>
<thead><tr><th>Host</th><th>Service</th><th>Status</th><th>Seit</th><th>Meldung</th><th>Output</th></tr></thead>
<tbody>
{% for p in open_problems %}
<tr>
<td>{{ p.host }}</td>
<td>{{ p.service }}</td>
<td><span class="badge {{ p.state | state_class }}">{{ p.state | display_state(p.service) }}</span></td>
<td>{{ p.last_state_change | fmt_ts }}</td>
<td><span class="badge {{ {'reported': 'ok', 'waiting': 'info', 'suppressed': 'warn', 'due': 'info'}.get(p.report.kind, 'info') }}">{{ p.report.label }}</span></td>
<td>{{ p.output }}
{% if p.in_downtime %}<span class="badge info">Downtime</span>{% endif %}
{% if p.flapping %}<span class="badge warn">flappt</span>{% endif %}</td>
</tr>
{% else %}
<tr><td colspan="6" class="muted">Keine offenen Probleme.</td></tr>
{% endfor %}
</tbody>
</table>
</div>
</section>
{% endblock %}