Darstellung
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
| Methode | Pfad | Permission | Beschreibung |
|---|---|---|---|
GET | / | — | Alle Flow-Versionen eines Bots laden (sortiert nach created_at DESC) |
POST | / | bot:edit | Neuen Flow-Snapshot speichern |
POST | /:versionId/restore | bot:edit | Flow-Version wiederherstellen |
DELETE | /:versionId | bot:edit | Flow-Version löschen |
Snapshot-System
Speichern (POST)
Beim Speichern einer neuen Version passiert Folgendes:
- Alle aktiven
bot_flow_stepsdes Bots werden als JSON-Snapshot gespeichert - Wenn bereits 10 Versionen existieren, wird die älteste automatisch gelöscht
- Die nächste
version_numberwird berechnet (max + 1) - Alle bestehenden Versionen bekommen
is_current = false - Die neue Version wird mit
is_current = trueangelegt
Request Body:
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
version_name | String | Nein | Name 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:
- Version laden und validieren (muss zum Bot und Tenant gehören)
- Alle bestehenden
bot_flow_stepsdes Bots löschen - Steps aus dem Snapshot neu einfügen
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
| Spalte | Typ | Nullable | Default | Beschreibung |
|---|---|---|---|---|
| id | uuid | NOT NULL | gen_random_uuid() | Primary Key |
| bot_id | uuid | NOT NULL | — | FK auf bots (CASCADE DELETE) |
| tenant_id | uuid | NOT NULL | — | Tenant-Zugehörigkeit |
| version_name | varchar(100) | NULL | — | Benutzerdefinierter Name |
| snapshot | jsonb | NOT NULL | — | JSON-Array aller Flow-Steps zum Zeitpunkt der Erstellung |
| step_count | integer | NOT NULL | 0 | Anzahl der Steps im Snapshot |
| version_number | integer | NOT NULL | 1 | Fortlaufende Versionsnummer |
| is_current | boolean | NULL | false | Ist diese Version die aktuell aktive? |
| created_by | uuid | NULL | — | FK auf users (wer hat die Version erstellt) |
| created_at | timestamptz | NULL | CURRENT_TIMESTAMP | Erstelldatum |
Indizes:
idx_bot_flow_versions_bot— btree auf (bot_id)bot_flow_versions_tenant_id_index— btree auf (tenant_id)