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

48 lines
4.0 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<form method="post" action="{{ action }}">
{{ csrf_input }}
<label for="r-name">Name *</label>
<input id="r-name" name="name" type="text" value="{{ form.name }}" autocomplete="off" required>
<label for="r-host">Host-Muster (leer = alle, z. B. web*)</label>
<input id="r-host" name="match_host" type="text" value="{{ form.match_host }}" autocomplete="off" autocapitalize="none">
<label for="r-service">Service-Muster (leer = alle, z. B. Disk*)</label>
<input id="r-service" name="match_service" type="text" value="{{ form.match_service }}" autocomplete="off" autocapitalize="none">
<label for="r-state">Mindest-Schweregrad (nur für Probleme)</label>
<select id="r-state" name="min_state">
{% for value, name in state_options %}<option value="{{ value }}" {% if value == form.min_state %}selected{% endif %}>{{ value }} – {{ name }}</option>{% endfor %}
</select>
<label for="r-contains">Ausgabe enthält (optional, Teilstring ohne Groß-/Kleinschreibung, keine Regex)</label>
<input id="r-contains" name="output_contains" type="text" maxlength="200" value="{{ form.output_contains }}" autocomplete="off" autocapitalize="none">
<fieldset>
<legend>Alarmarten</legend>
{% for kind, label in kind_options.items() %}
<label class="check"><input type="checkbox" name="kinds" value="{{ kind }}" {% if kind in form.kinds %}checked{% endif %}> {{ label }}</label>
{% endfor %}
</fieldset>
<fieldset>
<legend>Ziele</legend>
{% for choice in choices %}
<label class="check"><input type="checkbox" name="targets" value="{{ choice.value }}" {% if choice.value in selected %}checked{% endif %}> {{ choice.label }}</label>
{% else %}
<p class="muted">Kein Chat-Backend mit Standardziel aktiviert.</p>
{% endfor %}
<label class="check"><input type="checkbox" name="use_default_targets" value="1" {% if form.use_default_targets %}checked{% endif %}> Standardziele aller aktivierten Backends zusätzlich verwenden</label>
<label for="r-extra">Weitere Ziele (je Zeile <code>backend:ziel</code>, z. B. <code>matrix:!raum:server</code>)</label>
<textarea id="r-extra" name="extra_targets" rows="3" autocomplete="off" autocapitalize="none">{{ extra_text }}</textarea>
<p class="muted">Ohne Ziele und ohne Standardziele wird bei Treffer nichts gesendet.</p>
</fieldset>
<fieldset>
<legend>Verhalten</legend>
<label for="r-delay">Verzögerung in Minuten (leer = Standard aus "Alarmierung", 0 = sofort; bei mehreren Treffern gilt die kleinste)</label>
<input id="r-delay" name="delay_minutes" type="number" min="0" max="1440" step="1" value="{{ form.delay_minutes if form.delay_minutes is not none else '' }}">
<label for="r-reminder">Erinnerung alle N Stunden bei offenem CRIT (leer = Standard aus "Alarmierung", 0 = aus für diese Regel, max. 168; bei mehreren Treffern schaltet eine 0 die Erinnerung aus, sonst gilt der kleinste Wert)</label>
<input id="r-reminder" name="reminder_hours" type="number" min="0" max="168" step="1" value="{{ form.reminder_hours if form.reminder_hours is not none else '' }}">
<label class="check"><input type="checkbox" name="ai_enabled" value="1" {% if form.ai_enabled %}checked{% endif %}> KI-Analyse für diese Alarme</label>
<label for="r-hint">KI-Hinweis (optional, max. 800 Zeichen; Zusatzkontext für die Analyse, kein Ersatz für den Schutzhinweis)</label>
<textarea id="r-hint" name="ai_hint" rows="4" maxlength="800" autocomplete="off">{{ form.ai_hint }}</textarea>
<label class="check"><input type="checkbox" name="loud" value="1" {% if form.loud %}checked{% endif %}> Laut (aus = leise: Telegram ohne Benachrichtigungston, Matrix als Notice)</label>
</fieldset>
<label class="check"><input type="checkbox" name="stop_on_match" value="1" {% if form.stop_on_match %}checked{% endif %}> Weitere Regeln nach Treffer nicht mehr auswerten</label>
<label class="check"><input type="checkbox" name="enabled" value="1" {% if form.enabled %}checked{% endif %}> Regel aktiv</label>
<div class="actions"><button type="submit">{{ submit_label }}</button></div>
</form>