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 NULL—FK auf bots (CASCADE DELETE)
tenant_iduuidNOT NULL—Tenant-Zugehörigkeit
version_namevarchar(100)NULL—Benutzerdefinierter Name
snapshotjsonbNOT NULL—JSON-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_byuuidNULL—FK 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)