Skip to content

Flow-Versionen

Flow-Versionen ermöglichen dir, den aktuellen Zustand eines Gesprächsablaufs als Snapshot zu speichern und bei Bedarf wiederherzustellen. Pro Bot werden maximal 10 Versionen gespeichert.

Endpoints

Alle Endpoints erfordern Auth + Tenant-Check. Basis-Pfad: /api/bots/:id/flow-versions

MethodePfadPermissionBeschreibung
GET/Alle Flow-Versionen eines Bots laden (sortiert nach created_at DESC)
POST/bot:editNeuen Flow-Snapshot speichern
POST/:versionId/restorebot:editFlow-Version wiederherstellen
DELETE/:versionIdbot:editFlow-Version löschen

Snapshot-System

Speichern (POST)

Beim Speichern einer neuen Version passiert Folgendes:

  1. Alle aktiven bot_flow_steps des Bots werden als JSON-Snapshot gespeichert
  2. Wenn bereits 10 Versionen existieren, wird die älteste automatisch gelöscht
  3. Die nächste version_number wird berechnet (max + 1)
  4. Alle bestehenden Versionen bekommen is_current = false
  5. Die neue Version wird mit is_current = true angelegt

Request Body:

FeldTypPflichtBeschreibung
version_nameStringNeinName der Version (Default: "Version {n}")

Validierung:

  • Es müssen Flow-Steps vorhanden sein (leere Flows können nicht versioniert werden)

Wiederherstellen (POST /:versionId/restore)

Beim Restore werden alle bestehenden Flow-Steps des Bots gelöscht und durch die Steps aus dem Snapshot ersetzt:

  1. Version laden und validieren (muss zum Bot und Tenant gehören)
  2. Alle bestehenden bot_flow_steps des Bots löschen
  3. Steps aus dem Snapshot neu einfügen
  4. is_current-Flag auf die wiederhergestellte Version setzen

Response: { success: true, restored_step_count: n, version: {...} }

Löschen (DELETE /:versionId)

  • Die aktive Version (is_current = true) kann nicht gelöscht werden
  • Nur inaktive Versionen sind löschbar

Max 10 Versionen

Pro Bot werden maximal 10 Versionen gespeichert. Beim Erstellen einer neuen Version wird automatisch die älteste gelöscht, wenn das Limit erreicht ist. Dieses Limit ist serverseitig hart codiert.

Datenbank-Schema

bot_flow_versions

SpalteTypNullableDefaultBeschreibung
iduuidNOT NULLgen_random_uuid()Primary Key
bot_iduuidNOT NULLFK auf bots (CASCADE DELETE)
tenant_iduuidNOT NULLTenant-Zugehörigkeit
version_namevarchar(100)NULLBenutzerdefinierter Name
snapshotjsonbNOT NULLJSON-Array aller Flow-Steps zum Zeitpunkt der Erstellung
step_countintegerNOT NULL0Anzahl der Steps im Snapshot
version_numberintegerNOT NULL1Fortlaufende Versionsnummer
is_currentbooleanNULLfalseIst diese Version die aktuell aktive?
created_byuuidNULLFK auf users (wer hat die Version erstellt)
created_attimestamptzNULLCURRENT_TIMESTAMPErstelldatum

Indizes:

  • idx_bot_flow_versions_bot — btree auf (bot_id)
  • bot_flow_versions_tenant_id_index — btree auf (tenant_id)