feat(frontend): Automatisierungen-Verwaltung + erreichbare Trigger (Modul 30)

Neue Seite /settings/automation-rules (nur Administrator, Sidebar-Link
unter Verwaltung): zeigt alle drei fest hinterlegten Regeln mit
Beschreibung, Aktiv/Inaktiv-Umschalter, editierbarem Aufgabentext und
– nur bei Varroa-Schwellenwert – editierbarem Schwellenwert.

Zusätzlich zwei Lücken im Durchsicht-Formular geschlossen, ohne die
wären zwei der drei Trigger über die Oberfläche nie auslösbar gewesen:
- "Stifte vorhanden"-Checkbox ergänzt (eggsPresent wurde vom Formular
  bisher gar nicht gesendet, obwohl Backend und Typ es unterstützen)
- "Futtervorrat ausreichend"-Checkbox durch ein Select mit
  ausreichend/niedrig/kritisch ersetzt (bisher nur binär, "kritisch"
  war nicht erreichbar)

Live gegen das Backend verifiziert: Speichern einer Durchsicht mit
Königin nicht gesehen + keine Stifte erzeugt automatisch die erwartete
Aufgabe (sichtbar unter /tasks) und eine Benachrichtigung, zero
Konsolenfehler. Aktiv/Inaktiv-Umschalter auf der Automatisierungen-Seite
live getestet.
This commit is contained in:
Nick Szaunig committed 2026-08-24 17:34:29 +02:00
1 parent 3f47a6ae8d
commit 5d32026092
6 files changed
+212 -12

No files matched your search

@@ -0,0 +1,16 @@
import { apiFetch } from "@/lib/auth/api-client";
import { AutomationRule, UpdateAutomationRuleInput } from "./types";
export function fetchAutomationRules(): Promise<AutomationRule[]> {
return apiFetch<AutomationRule[]>("/automation-rules");
}
export function updateAutomationRule(
id: string,
input: UpdateAutomationRuleInput,
): Promise<AutomationRule> {
return apiFetch<AutomationRule>(`/automation-rules/${id}`, {
method: "PATCH",
body: JSON.stringify(input),
});
}
@@ -0,0 +1,20 @@
export type AutomationTriggerType =
| "QUEENLESS_NO_EGGS"
| "VARROA_THRESHOLD"
| "FEED_STATUS_CRITICAL";
export interface AutomationRule {
id: string;
triggerType: AutomationTriggerType;
active: boolean;
config: Record<string, unknown> | null;
actionTemplate: string | null;
createdAt: string;
updatedAt: string;
}
export interface UpdateAutomationRuleInput {
active?: boolean;
config?: Record<string, unknown>;
actionTemplate?: string;
}