Three operator-UX gaps closed:
- Settings dialog's six-category sidebar (General / Appearance /
System AI / Integrations / Security / Maintenance) was
hardcoded English; now flows through AppLocalizations
("Allgemein" / "Darstellung" / "System-KI" / "Integrationen" /
"Sicherheit" / "Wartung"). Same for the per-panel title +
description.
- Per-channel daemon-action labels ('enable autostart' /
'disable autostart' / 'daemon restart' etc.) and the
OK / Failed result line in the toast also moved to l10n,
so the system-action feedback reads as one language.
- New 'Approvals' doc bundle (en + de) under assets/docs/,
registered as a fifth doc card on Welcome plus exposed via
the new public helper. The
Approvals, Audit and Doctor app-bars grow a Help icon button
next to Refresh that opens the matching doc in the existing
bottom-sheet reader — no extra screen, no learning curve.
Studio bumped to 0.67.0; editor path-override pulls in 0.20.1
(flow-list row polish).
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2.7 KiB
Freigaben
Eine Freigabe ist ein bewusster Human-in-the-Loop-Checkpoint innerhalb eines Flows. Wenn ein Step eine menschliche Entscheidung benötigt, pausiert der Flow an dieser Stelle, bis ein Reviewer freigibt oder ablehnt.
Wann nutzen?
Setze eine Freigabe vor:
- Schreibzugriffe auf Bestandssysteme (Akten, Verträge, Versand)
- Geldausgaben (LLM-Tokens jenseits einer Schwelle, API-Quotas)
- destruktiven Aktionen (löschen, archivieren, senden)
- alles, was dein Compliance-Verantwortlicher abgesichert sehen möchte
Die Freigabe ist ein protokolliertes Ereignis — jeder Freigabe-Vorgang landet im Audit-Log mit Reviewer, Entscheidung und Begründung.
So deklariert ein Flow eine Freigabe
steps:
- id: classify
use: text.classify@^1
- id: review
use: system.approval@^0
with:
title: "Klassifikations-Output prüfen"
details: "$classify.response"
reviewer: "$inputs.reviewer"
timeout_seconds: 600
- id: write
use: erp.write@^1
with:
record: "$review.payload"
system.approval ist eine eingebaute Capability — keine
Modul-Installation nötig. Sie blockiert den Flow-Lauf, bis der
zugehörige Freigabe-Eintrag eine decision erhält
(freigegeben / abgelehnt) oder das konfigurierte
timeout_seconds ausläuft.
So beantwortet der Operator eine Freigabe
Die Freigaben-Seite listet jede ausstehende Freigabe. Klick auf einen Eintrag, Titel + Details lesen, entscheiden:
- Freigeben — der Flow läuft ab diesem Step weiter, das
payloadder Freigabe wird zum Step-Output. - Ablehnen — der Flow scheitert an diesem Step mit der Begründung des Reviewers; die Ablehnung wird im Audit-Log protokolliert.
Timeouts
Wenn keine Entscheidung innerhalb timeout_seconds eintrifft,
liefert die Engine ApprovalTimedOut und der Flow scheitert.
Setze einen Timeout, der zeigt wie lange ein Reviewer
realistisch brauchen darf.
Was protokolliert wird
Jeder Schreibvorgang einer Freigabe landet im Audit-Log:
- Freigabe angefordert (mit Titel + Details-Snapshot)
- Reviewer-Entscheidung aufgezeichnet (mit Begründung bei Ablehnung)
- Payload + Signatur bei Freigabe
Die Hash-Chain fängt Manipulationen ab — ein gestern freigegebener Eintrag kann nicht heimlich heute auf "abgelehnt" gedreht werden, ohne die Kette zu brechen.
Architektur-Abwägung
Freigaben liegen in derselben SQLite-Audit-DB wie die Ereignisse. Für Deployments mit höherem Sicherheitsbedarf spiegelt man die Audit-DB auf eine WORM-Senke (Compliance-Gap 3, Option 2). Der Freigabe-Kontrakt bleibt gleich — die WORM-Senke macht den Audit-Trail nur tamper-evident gegenüber externen Prüfern, nicht nur für den Hub selbst.