{# Geräte-Ampel (GUI-Runde 22.10.2026) für Kunden- und Admin-Dashboard. Erwartet ampel = {zaehler, geraete} vom Server (_geraete_ampel), log_basis ("/admin/geraete" oder "/geraete"), optional zeige_organisation. Rot = jetzt handeln, gelb = beobachten. #} {% set stufen = [ ("kritisch", "f-kritisch", "✕", "Handeln"), ("warnung", "f-warnung", "▲", "Beobachten"), ("gut", "f-gut", "✓", "In Ordnung"), ] %} {% set stufe_info = {"kritisch": ("f-kritisch", "✕", "Handeln"), "warnung": ("f-warnung", "▲", "Beobachten"), "gut": ("f-gut", "✓", "In Ordnung")} %} {% if ampel and ampel.geraete %}
{% for key, klasse, symbol, text in stufen %}
{{ ampel.zaehler[key] }} {{ symbol }} {{ text }}
{% endfor %}
{% for org, geraete in (ampel.geraete | groupby("organisation") if zeige_organisation else [("", ampel.geraete)]) %} {% if zeige_organisation %}{{ org }}{% endif %}
{% for g in geraete | sort(attribute="name") %} {% set info = stufe_info[g.stufe] %} {% if g.stufe != "gut" %}{{ info[1] }}{% endif %}{{ g.name }}: {{ info[2] }} {% endfor %}
{% endfor %}
{% set auffaellig = ampel.geraete | rejectattr("stufe", "equalto", "gut") | list %} {% if auffaellig %}
{% if zeige_organisation %}{% endif %} {% for g in auffaellig %} {% set info = stufe_info[g.stufe] %} {% if zeige_organisation %}{% endif %} {% endfor %}
StufeGerätOrganisationGrund
{{ info[1] }} {{ info[2] }} {{ g.name }}{{ g.organisation }}{{ g.gruende | join("; ") }}
{% else %}

✓ Keine Auffälligkeiten.

{% endif %}

Rot: Fehler im letzten Agent-Lauf oder Platte ab 95 % voll. Gelb: Platte oder RAM ab 85 %, länger als 7 Tage oder noch nie gemeldet (in den Ferien normal). Jedes Kästchen ist ein Gerät; Klick öffnet sein Protokoll.

{% else %}

Noch keine Geräte aktiv.

{% endif %}