From 3ff6509028ffaa130bde43377bd7c3671939b291 Mon Sep 17 00:00:00 2001 From: Waleed Date: Fri, 26 Sep 2025 19:01:22 -0700 Subject: [PATCH] feat(i18n): update translations (#1465) * feat(i18n): update translations * fixed french i18n error --------- --- apps/docs/content/docs/de/blocks/workflow.mdx | 180 +++-------------- apps/docs/content/docs/de/execution/index.mdx | 41 ++-- apps/docs/content/docs/de/triggers/api.mdx | 60 ++++++ apps/docs/content/docs/de/triggers/chat.mdx | 43 ++++ apps/docs/content/docs/de/triggers/index.mdx | 52 +++++ .../content/docs/de/triggers/input-form.mdx | 52 +++++ apps/docs/content/docs/de/triggers/manual.mdx | 41 ++++ .../docs/content/docs/de/triggers/starter.mdx | 12 +- apps/docs/content/docs/es/blocks/workflow.mdx | 184 +++--------------- apps/docs/content/docs/es/execution/index.mdx | 27 ++- apps/docs/content/docs/es/triggers/api.mdx | 60 ++++++ apps/docs/content/docs/es/triggers/chat.mdx | 43 ++++ apps/docs/content/docs/es/triggers/index.mdx | 52 +++++ .../content/docs/es/triggers/input-form.mdx | 52 +++++ apps/docs/content/docs/es/triggers/manual.mdx | 41 ++++ .../docs/content/docs/es/triggers/starter.mdx | 14 +- apps/docs/content/docs/fr/blocks/workflow.mdx | 184 +++--------------- apps/docs/content/docs/fr/execution/index.mdx | 23 ++- apps/docs/content/docs/fr/triggers/api.mdx | 60 ++++++ apps/docs/content/docs/fr/triggers/chat.mdx | 43 ++++ apps/docs/content/docs/fr/triggers/index.mdx | 52 +++++ .../content/docs/fr/triggers/input-form.mdx | 52 +++++ apps/docs/content/docs/fr/triggers/manual.mdx | 41 ++++ .../docs/content/docs/fr/triggers/starter.mdx | 20 +- apps/docs/content/docs/ja/blocks/workflow.mdx | 184 +++--------------- apps/docs/content/docs/ja/execution/index.mdx | 27 ++- apps/docs/content/docs/ja/triggers/api.mdx | 60 ++++++ apps/docs/content/docs/ja/triggers/chat.mdx | 43 ++++ apps/docs/content/docs/ja/triggers/index.mdx | 52 +++++ .../content/docs/ja/triggers/input-form.mdx | 52 +++++ apps/docs/content/docs/ja/triggers/manual.mdx | 41 ++++ .../docs/content/docs/ja/triggers/starter.mdx | 16 +- apps/docs/content/docs/zh/blocks/workflow.mdx | 184 +++--------------- apps/docs/content/docs/zh/execution/index.mdx | 29 ++- apps/docs/content/docs/zh/triggers/api.mdx | 60 ++++++ apps/docs/content/docs/zh/triggers/chat.mdx | 43 ++++ apps/docs/content/docs/zh/triggers/index.mdx | 52 +++++ .../content/docs/zh/triggers/input-form.mdx | 52 +++++ apps/docs/content/docs/zh/triggers/manual.mdx | 41 ++++ .../docs/content/docs/zh/triggers/starter.mdx | 18 +- apps/docs/i18n.lock | 162 ++++++++++----- 41 files changed, 1656 insertions(+), 889 deletions(-) create mode 100644 apps/docs/content/docs/de/triggers/api.mdx create mode 100644 apps/docs/content/docs/de/triggers/chat.mdx create mode 100644 apps/docs/content/docs/de/triggers/index.mdx create mode 100644 apps/docs/content/docs/de/triggers/input-form.mdx create mode 100644 apps/docs/content/docs/de/triggers/manual.mdx create mode 100644 apps/docs/content/docs/es/triggers/api.mdx create mode 100644 apps/docs/content/docs/es/triggers/chat.mdx create mode 100644 apps/docs/content/docs/es/triggers/index.mdx create mode 100644 apps/docs/content/docs/es/triggers/input-form.mdx create mode 100644 apps/docs/content/docs/es/triggers/manual.mdx create mode 100644 apps/docs/content/docs/fr/triggers/api.mdx create mode 100644 apps/docs/content/docs/fr/triggers/chat.mdx create mode 100644 apps/docs/content/docs/fr/triggers/index.mdx create mode 100644 apps/docs/content/docs/fr/triggers/input-form.mdx create mode 100644 apps/docs/content/docs/fr/triggers/manual.mdx create mode 100644 apps/docs/content/docs/ja/triggers/api.mdx create mode 100644 apps/docs/content/docs/ja/triggers/chat.mdx create mode 100644 apps/docs/content/docs/ja/triggers/index.mdx create mode 100644 apps/docs/content/docs/ja/triggers/input-form.mdx create mode 100644 apps/docs/content/docs/ja/triggers/manual.mdx create mode 100644 apps/docs/content/docs/zh/triggers/api.mdx create mode 100644 apps/docs/content/docs/zh/triggers/chat.mdx create mode 100644 apps/docs/content/docs/zh/triggers/index.mdx create mode 100644 apps/docs/content/docs/zh/triggers/input-form.mdx create mode 100644 apps/docs/content/docs/zh/triggers/manual.mdx diff --git a/apps/docs/content/docs/de/blocks/workflow.mdx b/apps/docs/content/docs/de/blocks/workflow.mdx index 8c4408e57..e00991cee 100644 --- a/apps/docs/content/docs/de/blocks/workflow.mdx +++ b/apps/docs/content/docs/de/blocks/workflow.mdx @@ -1,168 +1,40 @@ --- -title: Workflow +title: Workflow-Block +description: Führe einen anderen Workflow innerhalb des aktuellen Ablaufs aus --- import { Callout } from 'fumadocs-ui/components/callout' -import { Step, Steps } from 'fumadocs-ui/components/steps' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' -Der Workflow-Block ermöglicht es, andere Workflows als wiederverwendbare Komponenten innerhalb deines aktuellen Workflows auszuführen. Dies ermöglicht modulares Design, Codewiederverwendung und die Erstellung komplexer verschachtelter Workflows, die aus kleineren, fokussierten Workflows zusammengesetzt werden können. +## Was er macht -
+
Workflow-Block
- - Workflow-Blöcke ermöglichen modulares Design, indem sie es erlauben, komplexe Workflows aus kleineren, wiederverwendbaren Komponenten zusammenzusetzen. +Füge einen Workflow-Block hinzu, wenn du einen untergeordneten Workflow als Teil eines größeren Ablaufs aufrufen möchtest. Der Block führt die neueste bereitgestellte Version dieses Workflows aus, wartet auf dessen Abschluss und setzt dann mit dem übergeordneten Workflow fort. + +## Konfiguration + +1. **Wähle einen Workflow** aus dem Dropdown-Menü (Selbstreferenzen sind blockiert, um Schleifen zu verhindern). +2. **Eingaben zuordnen**: Wenn der untergeordnete Workflow einen Eingabeformular-Trigger hat, siehst du jedes Feld und kannst übergeordnete Variablen verbinden. Die zugeordneten Werte sind das, was der untergeordnete Workflow erhält. +3. **Ausgaben**: Nach Abschluss des untergeordneten Workflows stellt der Block folgendes bereit: + - `result` – die endgültige Antwort des untergeordneten Workflows + - `success` – ob er ohne Fehler ausgeführt wurde + - `error` – Nachricht, wenn die Ausführung fehlschlägt + +## Ausführungshinweise + +- Untergeordnete Workflows laufen im gleichen Workspace-Kontext, sodass Umgebungsvariablen und Tools übernommen werden. +- Der Block verwendet Deployment-Versionierung: Jede API-, Zeitplan-, Webhook-, manuelle oder Chat-Ausführung ruft den bereitgestellten Snapshot auf. Stelle den untergeordneten Workflow neu bereit, wenn du ihn änderst. +- Wenn der untergeordnete Workflow fehlschlägt, löst der Block einen Fehler aus, es sei denn, du behandelst ihn nachgelagert. + + +Halte untergeordnete Workflows fokussiert. Kleine, wiederverwendbare Abläufe machen es einfacher, sie zu kombinieren, ohne tiefe Verschachtelungen zu erzeugen. - -## Überblick - -Der Workflow-Block dient als Brücke zwischen Workflows und ermöglicht es dir: - - - - Bestehende Workflows wiederzuverwenden: Führe zuvor erstellte Workflows als Komponenten innerhalb neuer Workflows aus - - - Modulare Designs zu erstellen: Zerlege komplexe Prozesse in kleinere, überschaubare Workflows - - - Trennung der Zuständigkeiten beizubehalten: Halte verschiedene Geschäftslogik in separaten Workflows isoliert - - - Teamzusammenarbeit zu ermöglichen: Teile und verwende Workflows über verschiedene Projekte und Teammitglieder hinweg wieder - - - -## Funktionsweise - -Der Workflow-Block: - -1. Nimmt eine Referenz zu einem anderen Workflow in deinem Workspace -2. Übergibt Eingabedaten vom aktuellen Workflow an den untergeordneten Workflow (verfügbar über start.input) -3. Führt den untergeordneten Workflow in einem isolierten Kontext aus -4. Gibt das Ergebnis zur weiteren Verarbeitung an den übergeordneten Workflow zurück - -## Konfigurationsoptionen - -### Workflow-Auswahl - -Wähle aus einer Dropdown-Liste der verfügbaren Workflows in deinem Workspace aus, welcher Workflow ausgeführt werden soll. Die Liste umfasst: - -- Alle Workflows, auf die du im aktuellen Workspace Zugriff hast -- Workflows, die von anderen Teammitgliedern mit dir geteilt wurden -- Sowohl aktivierte als auch deaktivierte Workflows (obwohl nur aktivierte Workflows ausgeführt werden können) - -### Ausführungskontext - -Der untergeordnete Workflow wird ausgeführt mit: - -- Seinem eigenen isolierten Ausführungskontext -- Zugriff auf dieselben Workspace-Ressourcen (API-Schlüssel, Umgebungsvariablen) -- Korrekten Workspace-Mitgliedschafts- und Berechtigungsprüfungen -- Verschachteltem Tracespan im Ausführungsprotokoll - - - **Zykluserkennung**: Das System erkennt und verhindert automatisch zirkuläre Abhängigkeiten zwischen Workflows, um Endlosschleifen zu vermeiden. - - -## Eingaben und Ausgaben - - - -
    -
  • - Workflow-Auswahl: Wählen Sie aus, welcher Workflow ausgeführt werden soll -
  • -
  • - Eingabedaten: Variable oder Blockreferenz, die an den untergeordneten Workflow übergeben wird -
  • -
  • - Ausführungskontext: Isolierte Umgebung mit Workspace-Ressourcen -
  • -
-
- -
    -
  • - workflow.success: Boolescher Wert, der den Abschlussstatus angibt -
  • -
  • - workflow.childWorkflowName: Name des ausgeführten untergeordneten Workflows -
  • -
  • - workflow.result: Vom untergeordneten Workflow zurückgegebenes Ergebnis -
  • -
  • - workflow.error: Fehlerdetails, falls der Workflow fehlgeschlagen ist -
  • -
-
- -
    -
  • - Workflow-Antwort: Primäre Ausgabe des untergeordneten Workflows -
  • -
  • - Ausführungsstatus: Erfolgsstatus und Fehlerinformationen -
  • -
  • - Zugriff: Verfügbar in Blöcken nach dem Workflow -
  • -
-
-
- -## Beispielanwendungsfälle - -### Modulares Kunden-Onboarding - -
-

Szenario: Komplexes Onboarding in wiederverwendbare Komponenten aufteilen

-
    -
  1. Hauptworkflow empfängt Kundendaten
  2. -
  3. Workflow-Block führt Validierungs-Workflow aus
  4. -
  5. Workflow-Block führt Kontoeinrichtungs-Workflow aus
  6. -
  7. Workflow-Block führt Willkommens-E-Mail-Workflow aus
  8. -
-
- -### Microservice-Architektur - -
-

Szenario: Unabhängige Service-Workflows erstellen

-
    -
  1. Zahlungsabwicklungs-Workflow verarbeitet Transaktionen
  2. -
  3. Bestandsverwaltungs-Workflow aktualisiert den Lagerbestand
  4. -
  5. Benachrichtigungs-Workflow sendet Bestätigungen
  6. -
  7. Hauptworkflow orchestriert alle Dienste
  8. -
-
- -### Bedingte Verarbeitung - -
-

Szenario: Führe verschiedene Workflows basierend auf Bedingungen aus

-
    -
  1. Bedingungsblock bewertet den Benutzertyp
  2. -
  3. Enterprise-Benutzer → Komplexer Genehmigungsworkflow
  4. -
  5. Standard-Benutzer → Einfacher Genehmigungsworkflow
  6. -
  7. Kostenlose Benutzer → Grundlegender Verarbeitungsworkflow
  8. -
-
- -## Bewährte Praktiken - -- **Workflows fokussiert halten**: Gestalte untergeordnete Workflows für spezifische, klar definierte Aufgaben mit eindeutigen Ein- und Ausgaben -- **Verschachtelungstiefe minimieren**: Vermeide tief verschachtelte Workflow-Hierarchien für bessere Wartbarkeit und Leistung -- **Fehler elegant behandeln**: Implementiere eine ordnungsgemäße Fehlerbehandlung für Fehler in untergeordneten Workflows und stelle Fallback-Mechanismen bereit -- **Unabhängig testen**: Stelle sicher, dass untergeordnete Workflows unabhängig von übergeordneten Workflows getestet und validiert werden können -- **Semantische Benennung verwenden**: Gib Workflows beschreibende Namen, die ihren Zweck und ihre Funktionalität klar angeben diff --git a/apps/docs/content/docs/de/execution/index.mdx b/apps/docs/content/docs/de/execution/index.mdx index 696851db7..226dd062d 100644 --- a/apps/docs/content/docs/de/execution/index.mdx +++ b/apps/docs/content/docs/de/execution/index.mdx @@ -4,6 +4,7 @@ title: Ausführung import { Callout } from 'fumadocs-ui/components/callout' import { Card, Cards } from 'fumadocs-ui/components/card' +import { Image } from '@/components/ui/image' Die Ausführungs-Engine von Sim bringt Ihre Workflows zum Leben, indem sie Blöcke in der richtigen Reihenfolge verarbeitet, den Datenfluss verwaltet und Fehler elegant behandelt, sodass Sie genau verstehen können, wie Workflows in Sim ausgeführt werden. @@ -89,9 +90,25 @@ Die Chat-Bereitstellung erstellt eine Konversationsschnittstelle für Ihren Work Jede Bereitstellungsmethode übergibt Daten an den Starter-Block Ihres Workflows und beginnt so den Ausführungsfluss. +## Deployment-Snapshots + +Alle öffentlichen Einstiegspunkte—API, Chat, Zeitplan, Webhook und manuelle Ausführungen—führen den aktiven Deployment-Snapshot des Workflows aus. Veröffentliche ein neues Deployment, wann immer du die Arbeitsfläche änderst, damit jeder Trigger die aktualisierte Version verwendet. + +
+ Tabelle mit Deployment-Versionen +
+ +Das Deploy-Modal behält eine vollständige Versionshistorie bei—inspiziere jeden Snapshot, vergleiche ihn mit deinem Entwurf und führe Upgrades oder Rollbacks mit einem Klick durch, wenn du eine frühere Version wiederherstellen musst. + ## Programmatische Ausführung -Führen Sie Workflows aus Ihren Anwendungen mit unseren offiziellen SDKs aus: +Führe Workflows aus deinen Anwendungen mit unseren offiziellen SDKs aus: ```bash # TypeScript/JavaScript @@ -116,21 +133,21 @@ const result = await client.executeWorkflow('workflow-id', { ## Best Practices -### Für Zuverlässigkeit entwickeln -- Fehler elegant mit geeigneten Fallback-Pfaden behandeln -- Umgebungsvariablen für sensible Daten verwenden -- Logging zu Funktionsblöcken für Debugging hinzufügen +### Design für Zuverlässigkeit +- Behandle Fehler elegant mit geeigneten Fallback-Pfaden +- Verwende Umgebungsvariablen für sensible Daten +- Füge Logging zu Funktionsblöcken für Debugging hinzu ### Leistung optimieren -- Externe API-Aufrufe wenn möglich minimieren -- Parallele Ausführung für unabhängige Operationen nutzen -- Ergebnisse mit Memory-Blöcken bei Bedarf zwischenspeichern +- Minimiere externe API-Aufrufe wo möglich +- Nutze parallele Ausführung für unabhängige Operationen +- Cache Ergebnisse mit Memory-Blöcken, wenn angemessen ### Ausführungen überwachen -- Logs regelmäßig überprüfen, um Leistungsmuster zu verstehen -- Kosten für KI-Modellnutzung verfolgen -- Workflow-Snapshots zur Fehlerbehebung verwenden +- Überprüfe Logs regelmäßig, um Leistungsmuster zu verstehen +- Verfolge Kosten für KI-Modellnutzung +- Verwende Workflow-Snapshots zur Fehlerbehebung ## Was kommt als nächstes? -Beginnen Sie mit [Ausführungsgrundlagen](/execution/basics), um zu verstehen, wie Workflows ausgeführt werden, und erkunden Sie dann [Protokollierung](/execution/logging), um Ihre Ausführungen zu überwachen, sowie [Kostenberechnung](/execution/costs), um Ihre Ausgaben zu optimieren. +Beginne mit [Ausführungsgrundlagen](/execution/basics), um zu verstehen, wie Workflows laufen, und erkunde dann [Logging](/execution/logging), um deine Ausführungen zu überwachen, sowie [Kostenberechnung](/execution/costs), um deine Ausgaben zu optimieren. diff --git a/apps/docs/content/docs/de/triggers/api.mdx b/apps/docs/content/docs/de/triggers/api.mdx new file mode 100644 index 000000000..b9be5327b --- /dev/null +++ b/apps/docs/content/docs/de/triggers/api.mdx @@ -0,0 +1,60 @@ +--- +title: API-Trigger +description: Starten Sie einen Workflow über eine authentifizierte HTTP-Anfrage +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Übersicht + +Der API-Trigger stellt Ihren Workflow als sicheren HTTP-Endpunkt bereit. Senden Sie JSON-Daten an den Endpunkt und Ihr Workflow verarbeitet diese sofort. API-Aufrufe werden immer gegen Ihre neueste Bereitstellung ausgeführt. + +## Eingabeformat konfigurieren + +
+ API-Trigger Eingabeformat +
+ +Fügen Sie für jeden Parameter ein Feld **Eingabeformat** hinzu. Die Ausgabeschlüssel zur Laufzeit spiegeln das Schema wider und sind auch unter `` verfügbar. + +```yaml +- type: string + name: userId + value: demo-user # optional manual test value +- type: number + name: maxTokens +``` + +Manuelle Ausführungen im Editor verwenden die Spalte `value`, damit Sie testen können, ohne eine Anfrage zu senden. Während der Ausführung füllt der Resolver sowohl `` als auch ``. + +## Anfrage-Beispiel + +```bash +curl -X POST \ + https://sim.ai/api/workflows/WORKFLOW_ID/execute \ + -H 'Content-Type: application/json' \ + -H 'X-API-Key: YOUR_KEY' \ + -d '{"userId":"demo-user","maxTokens":1024}' +``` + +Erfolgreiche Antworten geben das serialisierte Ausführungsergebnis vom Executor zurück. Fehler zeigen Validierungs-, Authentifizierungs- oder Workflow-Fehler an. + +## Ausgabe-Referenz + +| Referenz | Beschreibung | +|-----------|-------------| +| `` | Im Eingabeformat definiertes Feld | +| `` | Gesamter strukturierter Anfragekörper | + +Wenn kein Eingabeformat definiert ist, stellt der Executor das rohe JSON nur unter `` bereit. + + +Ein Workflow kann nur einen API-Trigger enthalten. Veröffentlichen Sie eine neue Bereitstellung nach Änderungen, damit der Endpunkt aktuell bleibt. + diff --git a/apps/docs/content/docs/de/triggers/chat.mdx b/apps/docs/content/docs/de/triggers/chat.mdx new file mode 100644 index 000000000..129054a81 --- /dev/null +++ b/apps/docs/content/docs/de/triggers/chat.mdx @@ -0,0 +1,43 @@ +--- +title: Chat-Auslöser +description: Starten Sie einen Workflow aus einer Chat-Bereitstellung +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Übersicht + +Der Chat-Auslöser erstellt eine Konversationsschnittstelle für Ihren Workflow. Stellen Sie Ihren Workflow als Chat bereit, und Benutzer können über eine teilbare URL damit interagieren. Jede Nachricht startet eine neue Workflow-Ausführung mit Ihrer neuesten Bereitstellung. + +## Laufzeit-Ausgaben + +
+ Chat-Bereitstellungskonversation +
+ +Der Auslöser schreibt drei Felder, auf die nachfolgende Blöcke verweisen können: + +| Referenz | Beschreibung | +|-----------|-------------| +| `` | Neueste Benutzernachricht | +| `` | Konversations-Thread-ID | +| `` | Optionale hochgeladene Dateien | + +Dateien enthalten `name`, `mimeType` und einen signierten Download `url`. + +## Nutzungshinweise + +1. Fügen Sie einen Chat-Auslöser-Block pro Workflow hinzu. +2. Stellen Sie den Workflow im Chat-Modus bereit. +3. Teilen Sie den Bereitstellungslink – jede Antwort verwendet die Konversations-ID wieder, sodass der Workflow den Kontext beibehalten kann. + + +Der Builder blockiert mehrere Chat-Auslöser-Blöcke im selben Workflow. + diff --git a/apps/docs/content/docs/de/triggers/index.mdx b/apps/docs/content/docs/de/triggers/index.mdx new file mode 100644 index 000000000..986c46ba6 --- /dev/null +++ b/apps/docs/content/docs/de/triggers/index.mdx @@ -0,0 +1,52 @@ +--- +title: Auslöser +description: Grundlegende Möglichkeiten, Sim-Workflows zu starten +--- + +import { Card, Cards } from 'fumadocs-ui/components/card' + +## Kern-Auslöser + +Wähle einen Auslöser pro Workflow, um zu definieren, wie er startet: + + + + HTTP-Endpunkt, der JSON-Bodies in Workflow-Eingaben umwandelt + + + Bereitgestellte Chat-Oberfläche mit Streaming-Antworten + + + Typisierte manuelle Eingabe für Editor-Ausführungen und Unterworkflows + + + Bedarfsgesteuerte Ausführungen ohne zusätzliche Daten + + + Cron- oder intervallbasierte Ausführung + + + Externe Webhook-Payloads empfangen + + + +## Schneller Vergleich + +| Auslöser | Startbedingung | +|---------|-----------------| +| **API** | Authentifizierter HTTP POST | +| **Chat** | Chat-Deployment-Nachricht | +| **Eingabeformular** | Bei manueller Übermittlung im Editor oder übergeordneten Workflow | +| **Manuell** | Ausführen-Schaltfläche im Editor | +| **Zeitplan** | Timer, der im Zeitplan-Modal verwaltet wird | +| **Webhook** | Bei eingehendem HTTP-Request | + +## Verwendung von Auslösern + +1. Platziere den Auslöser-Block im Startslot. +2. Konfiguriere alle erforderlichen Schemas oder Authentifizierungen. +3. Verbinde den Block mit dem Rest des Workflows. + +> Deployments unterstützen jeden Auslöser. Aktualisiere den Workflow, stelle ihn neu bereit, und alle Auslöser-Einstiegspunkte übernehmen den neuen Snapshot. Erfahre mehr unter [Ausführung → Deployment-Snapshots](/execution). + +Legacy-Starter-Blöcke bleiben für bestehende Flows erhalten, erscheinen aber nicht mehr in neuen Builds. diff --git a/apps/docs/content/docs/de/triggers/input-form.mdx b/apps/docs/content/docs/de/triggers/input-form.mdx new file mode 100644 index 000000000..52eec25f1 --- /dev/null +++ b/apps/docs/content/docs/de/triggers/input-form.mdx @@ -0,0 +1,52 @@ +--- +title: Eingabeformular-Trigger +description: Manueller Trigger mit einem strukturierten Eingabeschema +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Übersicht + +Verwenden Sie einen Eingabeformular-Trigger, wenn ein Workflow vom Editor aus mit typisierten Feldern gestartet werden soll. Das Ausführungspanel zeigt genau die Felder an, die Sie definieren, sodass der Workflow immer saubere Daten erhält. + +## Was Sie definieren + +Fügen Sie Felder im Eingabeformat-Builder hinzu (Text, Zahl, Boolean, JSON usw.). Für jedes Feld: + +- Der Wert erscheint als `` im Workflow. +- Die vollständige Nutzlast wird zur Vereinfachung unter `` gespiegelt. + +Wenn Sie das Formular leer lassen, hat der Trigger keine Ausgaben. + +## Manuelle Ausführungen + +
+ Eingabeformular-Ausführungspanel +
+ +Wenn Sie im Editor auf Ausführen drücken, rendert das Panel das Formular. Übermittelte Werte fließen direkt in die Trigger-Ausgabe ein, sodass nachgelagerte Blöcke darauf verweisen können, ohne zusätzliches Parsing. Zahlen werden in Zahlentypen umgewandelt, Booleans werden zu true/false, und JSON-Felder werden geparst, bevor der Workflow sie verarbeitet. + +## Untergeordnete Workflows + +
+ Workflow-Eingabezuordnung +
+ +Eingabeformular-Trigger steuern auch den Workflow-Block. Wenn Sie einen untergeordneten Workflow einbetten, zeigt der Zuordnungsschritt die Formularfelder des untergeordneten Workflows an, sodass Sie Variablen aus dem übergeordneten Workflow verbinden können. Was auch immer Sie zuordnen, wird zur Eingabeformular-Übermittlung des untergeordneten Workflows. + + +Benötigen Sie eine schnelle Ausführungsschaltfläche ohne Felder? Verwenden Sie einen manuellen Trigger. Wählen Sie Eingabeformular, wenn Sie Validierung und eine vorhersehbare Struktur wünschen. + diff --git a/apps/docs/content/docs/de/triggers/manual.mdx b/apps/docs/content/docs/de/triggers/manual.mdx new file mode 100644 index 000000000..5906f3046 --- /dev/null +++ b/apps/docs/content/docs/de/triggers/manual.mdx @@ -0,0 +1,41 @@ +--- +title: Manueller Auslöser +description: Führen Sie einen Workflow auf Anforderung ohne Eingaben aus +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Übersicht + +Der manuelle Auslöser fügt einen einfachen Ausführen-Button am Anfang Ihres Workflows hinzu. Verwenden Sie ihn, wenn Sie den Workflow sofort ausführen möchten, ohne zusätzliche Daten zu sammeln. + +## Funktionsweise + +
+ Ausführen-Button für manuellen Auslöser +
+ +- Startet den Workflow mit dem aktiven Deployment-Snapshot +- Sendet keine Nutzlast – nachgelagerte Blöcke sehen nur, was sie bereits konfiguriert haben +- Perfekt für schnelle Plausibilitätsprüfungen, Smoke-Tests oder Abläufe, die nur auf internen Variablen basieren + +## Anwendungsfälle + +- Starten Sie einen Workflow nach der Veröffentlichung eines neuen Deployments, um zu bestätigen, dass alles noch funktioniert +- Führen Sie Wartungsaufgaben aus, die keine externe Eingabe erfordern +- Lösen Sie untergeordnete Workflows aus, die nur Status- oder Umgebungsvariablen lesen + +## Vergleich mit Eingabeformular + +Benötigen Sie strukturierte Werte oder Typvalidierung zur Laufzeit? Wechseln Sie stattdessen zu einem Eingabeformular-Auslöser – das Ausführungspanel sammelt diese Felder, bevor der Workflow startet. + + +Manuelle Auslöser-Ausführungen überschreiben nicht Ihren Deployment-Verlauf. Aktualisieren und stellen Sie neu bereit, wenn Canvas-Änderungen live gehen sollen. + diff --git a/apps/docs/content/docs/de/triggers/starter.mdx b/apps/docs/content/docs/de/triggers/starter.mdx index 5df8c18f3..7324cc255 100644 --- a/apps/docs/content/docs/de/triggers/starter.mdx +++ b/apps/docs/content/docs/de/triggers/starter.mdx @@ -1,5 +1,5 @@ --- -title: Starter +title: Starter (Veraltet) --- import { Callout } from 'fumadocs-ui/components/callout' @@ -7,6 +7,10 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' import { Video } from '@/components/ui/video' + +Der Starter-Block ist veraltet und wurde durch spezialisierte Core-Trigger ersetzt. Bitte beachten Sie die [Core-Trigger-Dokumentation](/triggers) für die neuen API-, Chat-, Eingabeformular-, Manuell-, Zeitplan- und Webhook-Trigger. + + Der Starter-Block ermöglicht es Ihnen, die Workflow-Ausführung manuell mit Eingabeparametern zu starten und bietet zwei Eingabemodi: strukturierte Parameter oder konversationellen Chat.
@@ -23,7 +27,7 @@ Der Starter-Block ermöglicht es Ihnen, die Workflow-Ausführung manuell mit Ein Wählen Sie Ihre Eingabemethode aus dem Dropdown-Menü: - +
    @@ -59,5 +63,5 @@ Wählen Sie Ihre Eingabemethode aus dem Dropdown-Menü: Im Chat-Modus können Sie über spezielle Variablen auf Benutzereingaben und Konversationskontext zugreifen: - **``** - Enthält den Nachrichtentext des Benutzers -- **``** - Eindeutige Kennung für den Konversationsthread -- **``** - Array der vom Benutzer hochgeladenen Dateien (falls vorhanden) \ No newline at end of file +- **``** - Eindeutige Kennung für den Konversationsverlauf +- **``** - Array von Dateien, die vom Benutzer hochgeladen wurden (falls vorhanden) \ No newline at end of file diff --git a/apps/docs/content/docs/es/blocks/workflow.mdx b/apps/docs/content/docs/es/blocks/workflow.mdx index 4377d0ac4..447282009 100644 --- a/apps/docs/content/docs/es/blocks/workflow.mdx +++ b/apps/docs/content/docs/es/blocks/workflow.mdx @@ -1,168 +1,40 @@ --- -title: Flujo de trabajo +title: Bloque de flujo de trabajo +description: Ejecuta otro flujo de trabajo dentro del flujo actual --- import { Callout } from 'fumadocs-ui/components/callout' -import { Step, Steps } from 'fumadocs-ui/components/steps' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' -El bloque de Flujo de trabajo te permite ejecutar otros flujos de trabajo como componentes reutilizables dentro de tu flujo de trabajo actual. Esto permite un diseño modular, reutilización de código y la creación de flujos de trabajo complejos anidados que pueden componerse a partir de flujos de trabajo más pequeños y enfocados. +## Qué hace -
    +
    Bloque de Flujo de trabajo
    - - Los bloques de Flujo de trabajo permiten un diseño modular al permitirte componer flujos de trabajo complejos a partir de componentes más pequeños y reutilizables. +Coloca un bloque de Flujo de trabajo cuando quieras llamar a un flujo de trabajo secundario como parte de un flujo más grande. El bloque ejecuta la última versión implementada de ese flujo de trabajo, espera a que termine y luego continúa con el principal. + +## Cómo configurarlo + +1. **Elige un flujo de trabajo** del menú desplegable (las auto-referencias están bloqueadas para evitar bucles). +2. **Asigna entradas**: Si el flujo de trabajo secundario tiene un disparador de Formulario de entrada, verás cada campo y podrás conectar variables del principal. Los valores asignados son los que recibe el secundario. +3. **Salidas**: Después de que el secundario finaliza, el bloque expone: + - `result` – la respuesta final del flujo de trabajo secundario + - `success` – si se ejecutó sin errores + - `error` – mensaje cuando la ejecución falla + +## Notas de ejecución + +- Los flujos de trabajo secundarios se ejecutan en el mismo contexto de espacio de trabajo, por lo que las variables de entorno y herramientas se mantienen. +- El bloque utiliza el versionado de implementación: cualquier ejecución de API, programación, webhook, manual o chat llama a la instantánea implementada. Vuelve a implementar el secundario cuando lo cambies. +- Si el secundario falla, el bloque genera un error a menos que lo gestiones posteriormente. + + +Mantén los flujos de trabajo secundarios enfocados. Los flujos pequeños y reutilizables facilitan su combinación sin crear anidamientos profundos. - -## Descripción general - -El bloque de Flujo de trabajo sirve como puente entre flujos de trabajo, permitiéndote: - - - - Reutilizar flujos de trabajo existentes: Ejecutar flujos de trabajo previamente creados como componentes dentro de nuevos flujos de trabajo - - - Crear diseños modulares: Desglosar procesos complejos en flujos de trabajo más pequeños y manejables - - - Mantener la separación de responsabilidades: Mantener diferentes lógicas de negocio aisladas en flujos de trabajo separados - - - Facilitar la colaboración en equipo: Compartir y reutilizar flujos de trabajo entre diferentes proyectos y miembros del equipo - - - -## Cómo funciona - -El bloque de Flujo de trabajo: - -1. Toma una referencia a otro flujo de trabajo en tu espacio de trabajo -2. Pasa datos de entrada desde el flujo de trabajo actual al flujo de trabajo hijo (disponible a través de start.input) -3. Ejecuta el flujo de trabajo hijo en un contexto aislado -4. Devuelve el resultado al flujo de trabajo padre para su posterior procesamiento - -## Opciones de configuración - -### Selección de flujo de trabajo - -Elige qué flujo de trabajo ejecutar desde una lista desplegable de flujos de trabajo disponibles en tu espacio de trabajo. La lista incluye: - -- Todos los flujos de trabajo a los que tienes acceso en el espacio de trabajo actual -- Flujos de trabajo compartidos contigo por otros miembros del equipo -- Tanto flujos de trabajo habilitados como deshabilitados (aunque solo los habilitados pueden ser ejecutados) - -### Contexto de ejecución - -El flujo de trabajo secundario se ejecuta con: - -- Su propio contexto de ejecución aislado -- Acceso a los mismos recursos del espacio de trabajo (claves API, variables de entorno) -- Verificaciones adecuadas de permisos y membresía del espacio de trabajo -- Tracespan anidado en el registro de ejecución - - - **Detección de ciclos**: El sistema detecta y previene automáticamente dependencias circulares entre flujos de trabajo para evitar bucles infinitos. - - -## Entradas y salidas - - - -
      -
    • - Selección de flujo de trabajo: Elige qué flujo de trabajo ejecutar -
    • -
    • - Datos de entrada: Variable o referencia de bloque para pasar al flujo de trabajo secundario -
    • -
    • - Contexto de ejecución: Entorno aislado con recursos del espacio de trabajo -
    • -
    -
    - -
      -
    • - workflow.success: Booleano que indica el estado de finalización -
    • -
    • - workflow.childWorkflowName: Nombre del flujo de trabajo secundario ejecutado -
    • -
    • - workflow.result: Resultado devuelto por el flujo de trabajo secundario -
    • -
    • - workflow.error: Detalles del error si el flujo de trabajo falló -
    • -
    -
    - -
      -
    • - Respuesta del flujo de trabajo: Salida principal del flujo de trabajo secundario -
    • -
    • - Estado de ejecución: Estado de éxito e información de error -
    • -
    • - Acceso: Disponible en bloques después del flujo de trabajo -
    • -
    -
    -
    - -## Ejemplos de casos de uso - -### Incorporación modular de clientes - -
    -

    Escenario: Dividir la incorporación compleja en componentes reutilizables

    -
      -
    1. El flujo de trabajo principal recibe datos del cliente
    2. -
    3. El bloque de flujo de trabajo ejecuta el flujo de validación
    4. -
    5. El bloque de flujo de trabajo ejecuta el flujo de configuración de cuenta
    6. -
    7. El bloque de flujo de trabajo ejecuta el flujo de correo de bienvenida
    8. -
    -
    - -### Arquitectura de microservicios - -
    -

    Escenario: Crear flujos de trabajo de servicios independientes

    -
      -
    1. El flujo de trabajo de procesamiento de pagos gestiona transacciones
    2. -
    3. El flujo de trabajo de gestión de inventario actualiza el stock
    4. -
    5. El flujo de trabajo de notificaciones envía confirmaciones
    6. -
    7. El flujo de trabajo principal orquesta todos los servicios
    8. -
    -
    - -### Procesamiento condicional - -
    -

    Escenario: Ejecutar diferentes flujos de trabajo según condiciones

    -
      -
    1. El bloque de condición evalúa el tipo de usuario
    2. -
    3. Usuarios empresariales → Flujo de trabajo de aprobación complejo
    4. -
    5. Usuarios estándar → Flujo de trabajo de aprobación simple
    6. -
    7. Usuarios gratuitos → Flujo de trabajo de procesamiento básico
    8. -
    -
    - -## Mejores prácticas - -- **Mantén los flujos de trabajo enfocados**: Diseña flujos de trabajo secundarios para manejar tareas específicas y bien definidas con entradas y salidas claras -- **Minimiza la profundidad de anidación**: Evita jerarquías de flujos de trabajo profundamente anidadas para mejorar la mantenibilidad y el rendimiento -- **Maneja los errores con elegancia**: Implementa un manejo adecuado de errores para fallos en flujos de trabajo secundarios y proporciona mecanismos alternativos -- **Prueba de forma independiente**: Asegúrate de que los flujos de trabajo secundarios puedan ser probados y validados independientemente de los flujos de trabajo principales -- **Usa nomenclatura semántica**: Asigna a los flujos de trabajo nombres descriptivos que indiquen claramente su propósito y funcionalidad diff --git a/apps/docs/content/docs/es/execution/index.mdx b/apps/docs/content/docs/es/execution/index.mdx index 1eea25ff2..3d4398fa6 100644 --- a/apps/docs/content/docs/es/execution/index.mdx +++ b/apps/docs/content/docs/es/execution/index.mdx @@ -4,6 +4,7 @@ title: Ejecución import { Callout } from 'fumadocs-ui/components/callout' import { Card, Cards } from 'fumadocs-ui/components/card' +import { Image } from '@/components/ui/image' El motor de ejecución de Sim da vida a tus flujos de trabajo procesando bloques en el orden correcto, gestionando el flujo de datos y manejando errores con elegancia, para que puedas entender exactamente cómo se ejecutan los flujos de trabajo en Sim. @@ -89,6 +90,22 @@ El despliegue de chat crea una interfaz conversacional para tu flujo de trabajo: Cada método de despliegue pasa datos al bloque inicial de tu flujo de trabajo, comenzando el flujo de ejecución. +## Instantáneas de despliegue + +Todos los puntos de entrada públicos—API, Chat, Programación, Webhook y ejecuciones manuales—ejecutan la instantánea de despliegue activa del flujo de trabajo. Publica un nuevo despliegue cada vez que cambies el lienzo para que cada disparador utilice la versión actualizada. + +
    + Tabla de versiones de despliegue +
    + +El modal de Despliegue mantiene un historial completo de versiones—inspecciona cualquier instantánea, compárala con tu borrador, y promueve o revierte con un clic cuando necesites restaurar una versión anterior. + ## Ejecución programática Ejecuta flujos de trabajo desde tus aplicaciones usando nuestros SDK oficiales: @@ -116,21 +133,21 @@ const result = await client.executeWorkflow('workflow-id', { ## Mejores prácticas -### Diseño para fiabilidad +### Diseña para la fiabilidad - Maneja los errores con elegancia mediante rutas de respaldo apropiadas - Usa variables de entorno para datos sensibles -- Añade registro en bloques de Función para depuración +- Añade registros a los bloques de Función para depuración ### Optimiza el rendimiento - Minimiza las llamadas a API externas cuando sea posible - Usa ejecución paralela para operaciones independientes -- Almacena en caché los resultados con bloques de Memoria cuando sea apropiado +- Almacena resultados en caché con bloques de Memoria cuando sea apropiado ### Monitorea las ejecuciones - Revisa los registros regularmente para entender patrones de rendimiento -- Realiza seguimiento de costos para el uso de modelos de IA +- Haz seguimiento de los costos por uso de modelos de IA - Usa instantáneas de flujo de trabajo para depurar problemas ## ¿Qué sigue? -Comienza con [Conceptos básicos de ejecución](/execution/basics) para entender cómo funcionan los flujos de trabajo, luego explora [Registro](/execution/logging) para monitorear tus ejecuciones y [Cálculo de costos](/execution/costs) para optimizar tu gasto. +Comienza con [Fundamentos de ejecución](/execution/basics) para entender cómo funcionan los flujos de trabajo, luego explora [Registro](/execution/logging) para monitorear tus ejecuciones y [Cálculo de costos](/execution/costs) para optimizar tu gasto. diff --git a/apps/docs/content/docs/es/triggers/api.mdx b/apps/docs/content/docs/es/triggers/api.mdx new file mode 100644 index 000000000..a41d11bc0 --- /dev/null +++ b/apps/docs/content/docs/es/triggers/api.mdx @@ -0,0 +1,60 @@ +--- +title: Disparador de API +description: Inicia un flujo de trabajo desde una solicitud HTTP autenticada +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Descripción general + +El disparador de API expone tu flujo de trabajo como un punto de conexión HTTP seguro. Envía datos JSON al punto de conexión y tu flujo de trabajo los procesa inmediatamente. Las llamadas a la API siempre se ejecutan contra tu última implementación. + +## Configurar formato de entrada + +
    + Formato de entrada del disparador de API +
    + +Añade un campo de **Formato de entrada** para cada parámetro. Las claves de salida en tiempo de ejecución reflejan el esquema y también están disponibles bajo ``. + +```yaml +- type: string + name: userId + value: demo-user # optional manual test value +- type: number + name: maxTokens +``` + +Las ejecuciones manuales en el editor utilizan la columna `value` para que puedas realizar pruebas sin enviar una solicitud. Durante la ejecución, el resolutor completa tanto `` como ``. + +## Ejemplo de solicitud + +```bash +curl -X POST \ + https://sim.ai/api/workflows/WORKFLOW_ID/execute \ + -H 'Content-Type: application/json' \ + -H 'X-API-Key: YOUR_KEY' \ + -d '{"userId":"demo-user","maxTokens":1024}' +``` + +Las respuestas exitosas devuelven el resultado de ejecución serializado del Ejecutor. Los errores muestran fallos de validación, autenticación o del flujo de trabajo. + +## Referencia de salida + +| Referencia | Descripción | +|-----------|-------------| +| `` | Campo definido en el formato de entrada | +| `` | Cuerpo completo estructurado de la solicitud | + +Si no se define un formato de entrada, el ejecutor expone el JSON sin procesar solo en ``. + + +Un flujo de trabajo puede contener solo un disparador de API. Publica una nueva implementación después de realizar cambios para que el punto de conexión se mantenga actualizado. + diff --git a/apps/docs/content/docs/es/triggers/chat.mdx b/apps/docs/content/docs/es/triggers/chat.mdx new file mode 100644 index 000000000..bfe4da9a7 --- /dev/null +++ b/apps/docs/content/docs/es/triggers/chat.mdx @@ -0,0 +1,43 @@ +--- +title: Disparador de chat +description: Inicia un flujo de trabajo desde un despliegue de chat +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Descripción general + +El disparador de Chat crea una interfaz conversacional para tu flujo de trabajo. Despliega tu flujo de trabajo como un chat y los usuarios pueden interactuar con él a través de una URL compartible. Cada mensaje inicia una nueva ejecución del flujo de trabajo utilizando tu último despliegue. + +## Salidas en tiempo de ejecución + +
    + Conversación de despliegue de chat +
    + +El disparador escribe tres campos que los bloques posteriores pueden referenciar: + +| Referencia | Descripción | +|-----------|-------------| +| `` | Último mensaje del usuario | +| `` | ID del hilo de conversación | +| `` | Archivos subidos opcionales | + +Los archivos incluyen `name`, `mimeType`, y una descarga firmada `url`. + +## Notas de uso + +1. Añade un bloque de Disparador de Chat por flujo de trabajo. +2. Despliega el flujo de trabajo en modo chat. +3. Comparte el enlace de despliegue—cada respuesta reutiliza el ID de conversación para que el flujo de trabajo pueda mantener el contexto. + + +El constructor bloquea múltiples bloques de Disparador de Chat en el mismo flujo de trabajo. + diff --git a/apps/docs/content/docs/es/triggers/index.mdx b/apps/docs/content/docs/es/triggers/index.mdx new file mode 100644 index 000000000..65292391d --- /dev/null +++ b/apps/docs/content/docs/es/triggers/index.mdx @@ -0,0 +1,52 @@ +--- +title: Disparadores +description: Formas principales de iniciar flujos de trabajo de Sim +--- + +import { Card, Cards } from 'fumadocs-ui/components/card' + +## Disparadores principales + +Elige un disparador por flujo de trabajo para definir cómo comienza: + + + + Punto final HTTP que mapea cuerpos JSON a entradas de flujo de trabajo + + + Interfaz de chat implementada con respuestas en streaming + + + Entrada manual tipada utilizada en ejecuciones del editor y flujos de trabajo secundarios + + + Ejecuciones bajo demanda sin datos adicionales + + + Ejecución basada en cron o intervalos + + + Recibe cargas útiles de webhooks externos + + + +## Comparación rápida + +| Disparador | Condición de inicio | +|---------|-----------------| +| **API** | POST HTTP autenticado | +| **Chat** | Mensaje de implementación de chat | +| **Formulario de entrada** | Al enviar manualmente en el editor o flujo de trabajo principal | +| **Manual** | Botón de ejecución en el editor | +| **Programación** | Temporizador gestionado en el modal de programación | +| **Webhook** | Al recibir una solicitud HTTP | + +## Uso de disparadores + +1. Coloca el bloque disparador en la ranura de inicio. +2. Configura cualquier esquema o autenticación requerida. +3. Conecta el bloque al resto del flujo de trabajo. + +> Las implementaciones potencian cada disparador. Actualiza el flujo de trabajo, vuelve a implementarlo, y todos los puntos de entrada de disparadores recogen la nueva instantánea. Aprende más en [Ejecución → Instantáneas de implementación](/execution). + +Los bloques de inicio heredados permanecen para flujos existentes pero ya no aparecen en nuevas compilaciones. diff --git a/apps/docs/content/docs/es/triggers/input-form.mdx b/apps/docs/content/docs/es/triggers/input-form.mdx new file mode 100644 index 000000000..a8895bd6b --- /dev/null +++ b/apps/docs/content/docs/es/triggers/input-form.mdx @@ -0,0 +1,52 @@ +--- +title: Disparador de formulario de entrada +description: Disparador manual con un esquema de entrada estructurado +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Descripción general + +Utiliza un disparador de formulario de entrada cuando un flujo de trabajo debe iniciarse desde el editor con campos tipados. El panel de ejecución muestra exactamente los campos que defines, por lo que el flujo de trabajo siempre recibe datos limpios. + +## Lo que defines + +Añade campos en el constructor de formato de entrada (texto, número, booleano, JSON, etc.). Para cada campo: + +- El valor aparece como `` en el flujo de trabajo. +- La carga completa se refleja en `` para mayor comodidad. + +Si dejas el formulario vacío, el disparador no tiene salidas. + +## Ejecuciones manuales + +
    + Panel de ejecución del formulario de entrada +
    + +Cuando presionas Ejecutar en el editor, el panel muestra el formulario. Los valores enviados alimentan directamente la salida del disparador, por lo que los bloques posteriores pueden referenciarlos sin análisis adicional. Los números se convierten a números, los booleanos se convierten en verdadero/falso, y los campos JSON se analizan antes de que el flujo de trabajo los vea. + +## Flujos de trabajo secundarios + +
    + Mapeo de entrada de flujo de trabajo +
    + +Los disparadores de formulario de entrada también alimentan el bloque de flujo de trabajo. Cuando incrustas un flujo de trabajo secundario, el paso de mapeo muestra los campos del formulario secundario para que puedas conectar variables desde el padre. Todo lo que mapeas se convierte en el envío del formulario de entrada del flujo de trabajo secundario. + + +¿Necesitas un botón de ejecución rápida sin campos? Usa un disparador manual. Elige el formulario de entrada cuando quieras validación y una estructura predecible. + diff --git a/apps/docs/content/docs/es/triggers/manual.mdx b/apps/docs/content/docs/es/triggers/manual.mdx new file mode 100644 index 000000000..12e23437c --- /dev/null +++ b/apps/docs/content/docs/es/triggers/manual.mdx @@ -0,0 +1,41 @@ +--- +title: Disparador manual +description: Ejecuta un flujo de trabajo bajo demanda sin entradas +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Descripción general + +El disparador manual añade un simple botón Ejecutar en la parte superior de tu flujo de trabajo. Úsalo cuando quieras ejecutar el flujo de trabajo inmediatamente sin recopilar datos adicionales. + +## Cómo funciona + +
    + Botón de ejecución del disparador manual +
    + +- Inicia el flujo de trabajo utilizando la instantánea de despliegue activa +- No envía ninguna carga útil—los bloques posteriores solo ven lo que ya tienen configurado +- Perfecto para comprobaciones rápidas, pruebas de humo o flujos que solo dependen de variables internas + +## Cuándo usarlo + +- Inicia un flujo de trabajo después de publicar un nuevo despliegue para confirmar que todo sigue funcionando +- Ejecuta tareas de mantenimiento que no requieren entrada externa +- Activa flujos de trabajo secundarios que solo leen estado o variables de entorno + +## Comparación con el formulario de entrada + +¿Necesitas valores estructurados o validación de tipos en tiempo de ejecución? Cambia a un disparador de formulario de entrada en su lugar—el panel de ejecución recopilará esos campos antes de que comience el flujo de trabajo. + + +Las ejecuciones del disparador manual no sobrescriben tu historial de despliegue. Actualiza y vuelve a desplegar cuando los cambios en el lienzo necesiten entrar en producción. + diff --git a/apps/docs/content/docs/es/triggers/starter.mdx b/apps/docs/content/docs/es/triggers/starter.mdx index ecebac206..78219eee6 100644 --- a/apps/docs/content/docs/es/triggers/starter.mdx +++ b/apps/docs/content/docs/es/triggers/starter.mdx @@ -1,5 +1,5 @@ --- -title: Starter +title: Starter (Obsoleto) --- import { Callout } from 'fumadocs-ui/components/callout' @@ -7,12 +7,16 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' import { Video } from '@/components/ui/video' + +El bloque Starter ha quedado obsoleto y ha sido reemplazado por Disparadores Core más especializados. Consulta la [documentación de Disparadores Core](/triggers) para conocer la nueva API y los disparadores de Chat, Formulario de entrada, Manual, Programación y Webhook. + + El bloque Starter te permite iniciar manualmente la ejecución del flujo de trabajo con parámetros de entrada, ofreciendo dos modos de entrada: parámetros estructurados o chat conversacional.
    Bloque Starter con opciones de modo manual y modo chat +
      @@ -35,7 +39,7 @@ Elige tu método de entrada desde el menú desplegable:
    -

    Configura parámetros de entrada que estarán disponibles al implementar como un punto final de API.

    +

    Configura parámetros de entrada que estarán disponibles al implementar como un punto de conexión API.

    @@ -54,7 +58,7 @@ Elige tu método de entrada desde el menú desplegable: -## Uso de variables de chat +## Uso de variables de Chat En el modo Chat, accede a la entrada del usuario y al contexto de la conversación a través de variables especiales: diff --git a/apps/docs/content/docs/fr/blocks/workflow.mdx b/apps/docs/content/docs/fr/blocks/workflow.mdx index 93d360f54..f221ca686 100644 --- a/apps/docs/content/docs/fr/blocks/workflow.mdx +++ b/apps/docs/content/docs/fr/blocks/workflow.mdx @@ -1,168 +1,40 @@ --- -title: Flux de travail +title: Bloc de flux de travail +description: Exécuter un autre flux de travail à l'intérieur du flux actuel --- import { Callout } from 'fumadocs-ui/components/callout' -import { Step, Steps } from 'fumadocs-ui/components/steps' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' -Le bloc Flux de travail vous permet d'exécuter d'autres flux de travail comme composants réutilisables au sein de votre flux de travail actuel. Cela permet une conception modulaire, la réutilisation du code et la création de flux de travail imbriqués complexes qui peuvent être composés à partir de flux de travail plus petits et ciblés. +## Ce qu'il fait -
    +
    Bloc de flux de travail
    - - Les blocs de flux de travail permettent une conception modulaire en vous permettant de composer des flux de travail complexes à partir de composants plus petits et réutilisables. +Déposez un bloc de flux de travail lorsque vous souhaitez appeler un flux de travail enfant dans le cadre d'un flux plus large. Le bloc exécute la dernière version déployée de ce flux de travail, attend qu'il se termine, puis continue avec le parent. + +## Comment le configurer + +1. **Choisissez un flux de travail** dans le menu déroulant (les auto-références sont bloquées pour éviter les boucles). +2. **Mappez les entrées** : si le flux de travail enfant a un déclencheur de formulaire d'entrée, vous verrez chaque champ et pourrez connecter les variables parentes. Les valeurs mappées sont ce que l'enfant reçoit. +3. **Sorties** : une fois que l'enfant a terminé, le bloc expose : + - `result` – la réponse finale du flux de travail enfant + - `success` – s'il s'est exécuté sans erreurs + - `error` – message lorsque l'exécution échoue + +## Notes d'exécution + +- Les flux de travail enfants s'exécutent dans le même contexte d'espace de travail, donc les variables d'environnement et les outils sont conservés. +- Le bloc utilise le versionnement des déploiements : toute exécution API, planifiée, webhook, manuelle ou par chat appelle l'instantané déployé. Redéployez l'enfant lorsque vous le modifiez. +- Si l'enfant échoue, le bloc génère une erreur, sauf si vous la gérez en aval. + + +Gardez les flux de travail enfants ciblés. Des flux petits et réutilisables facilitent leur combinaison sans créer d'imbrication profonde. - -## Aperçu - -Le bloc Flux de travail sert de pont entre les flux de travail, vous permettant de : - - - - Réutiliser des flux de travail existants : exécuter des flux de travail précédemment créés comme composants dans de nouveaux flux de travail - - - Créer des conceptions modulaires : décomposer des processus complexes en flux de travail plus petits et gérables - - - Maintenir la séparation des préoccupations : garder différentes logiques métier isolées dans des flux de travail séparés - - - Permettre la collaboration d'équipe : partager et réutiliser des flux de travail entre différents projets et membres d'équipe - - - -## Comment ça fonctionne - -Le bloc Flux de travail : - -1. Prend une référence à un autre flux de travail dans votre espace de travail -2. Transmet les données d'entrée du flux de travail actuel au flux de travail enfant (disponibles via start.input) -3. Exécute le flux de travail enfant dans un contexte isolé -4. Renvoie le résultat au flux de travail parent pour un traitement ultérieur - -## Options de configuration - -### Sélection du flux de travail - -Choisissez quel flux de travail exécuter à partir d'une liste déroulante des flux de travail disponibles dans votre espace de travail. La liste comprend : - -- Tous les flux de travail auxquels vous avez accès dans l'espace de travail actuel -- Les flux de travail partagés avec vous par d'autres membres de l'équipe -- Les flux de travail activés et désactivés (bien que seuls les flux de travail activés puissent être exécutés) - -### Contexte d'exécution - -Le workflow enfant s'exécute avec : - -- Son propre contexte d'exécution isolé -- Accès aux mêmes ressources de l'espace de travail (clés API, variables d'environnement) -- Vérifications appropriées d'appartenance et de permissions de l'espace de travail -- Segment de trace imbriqué dans le journal d'exécution - - - **Détection de cycles** : Le système détecte et empêche automatiquement les dépendances circulaires entre les workflows pour éviter les boucles infinies. - - -## Entrées et sorties - - - -
      -
    • - Sélection du workflow : Choisir quel workflow exécuter -
    • -
    • - Données d'entrée : Variable ou référence de bloc à transmettre au workflow enfant -
    • -
    • - Contexte d'exécution : Environnement isolé avec les ressources de l'espace de travail -
    • -
    -
    - -
      -
    • - workflow.success : Booléen indiquant le statut d'achèvement -
    • -
    • - workflow.childWorkflowName : Nom du workflow enfant exécuté -
    • -
    • - workflow.result : Résultat renvoyé par le workflow enfant -
    • -
    • - workflow.error : Détails de l'erreur si le workflow a échoué -
    • -
    -
    - -
      -
    • - Réponse du workflow : Sortie principale du workflow enfant -
    • -
    • - Statut d'exécution : Statut de réussite et informations d'erreur -
    • -
    • - Accès : Disponible dans les blocs après le workflow -
    • -
    -
    -
    - -## Exemples de cas d'utilisation - -### Intégration modulaire des clients - -
    -

    Scénario : Décomposer une intégration complexe en composants réutilisables

    -
      -
    1. Le workflow principal reçoit les données client
    2. -
    3. Le bloc workflow exécute le workflow de validation
    4. -
    5. Le bloc workflow exécute le workflow de configuration du compte
    6. -
    7. Le bloc workflow exécute le workflow d'e-mail de bienvenue
    8. -
    -
    - -### Architecture de microservices - -
    -

    Scénario : Créer des workflows de services indépendants

    -
      -
    1. Le workflow de traitement des paiements gère les transactions
    2. -
    3. Le workflow de gestion des stocks met à jour l'inventaire
    4. -
    5. Le workflow de notification envoie les confirmations
    6. -
    7. Le workflow principal orchestre tous les services
    8. -
    -
    - -### Traitement conditionnel - -
    -

    Scénario : exécuter différents workflows selon les conditions

    -
      -
    1. Le bloc de condition évalue le type d'utilisateur
    2. -
    3. Utilisateurs entreprise → Workflow d'approbation complexe
    4. -
    5. Utilisateurs standard → Workflow d'approbation simple
    6. -
    7. Utilisateurs gratuits → Workflow de traitement basique
    8. -
    -
    - -## Bonnes pratiques - -- **Gardez les workflows ciblés** : concevez des workflows enfants pour gérer des tâches spécifiques et bien définies avec des entrées et sorties claires -- **Minimisez la profondeur d'imbrication** : évitez les hiérarchies de workflow profondément imbriquées pour une meilleure maintenabilité et performance -- **Gérez les erreurs avec élégance** : implémentez une gestion d'erreurs appropriée pour les échecs de workflows enfants et prévoyez des mécanismes de secours -- **Testez indépendamment** : assurez-vous que les workflows enfants peuvent être testés et validés indépendamment des workflows parents -- **Utilisez une nomenclature sémantique** : donnez aux workflows des noms descriptifs qui indiquent clairement leur objectif et leur fonctionnalité diff --git a/apps/docs/content/docs/fr/execution/index.mdx b/apps/docs/content/docs/fr/execution/index.mdx index f841cea99..318a5d926 100644 --- a/apps/docs/content/docs/fr/execution/index.mdx +++ b/apps/docs/content/docs/fr/execution/index.mdx @@ -4,6 +4,7 @@ title: Exécution import { Callout } from 'fumadocs-ui/components/callout' import { Card, Cards } from 'fumadocs-ui/components/card' +import { Image } from '@/components/ui/image' Le moteur d'exécution de Sim donne vie à vos flux de travail en traitant les blocs dans le bon ordre, en gérant le flux de données et en traitant les erreurs avec élégance, afin que vous puissiez comprendre exactement comment les flux de travail sont exécutés dans Sim. @@ -89,6 +90,22 @@ Le déploiement en tant que Chat crée une interface conversationnelle pour votr Chaque méthode de déploiement transmet des données au bloc de démarrage de votre workflow, initiant ainsi le flux d'exécution. +## Instantanés de déploiement + +Tous les points d'entrée publics — API, Chat, Planification, Webhook et exécutions manuelles — exécutent l'instantané de déploiement actif du workflow. Publiez un nouveau déploiement chaque fois que vous modifiez le canevas afin que chaque déclencheur utilise la version mise à jour. + +
    + Tableau des versions de déploiement +
    + +La fenêtre de déploiement conserve un historique complet des versions — inspectez n'importe quel instantané, comparez-le à votre brouillon, et promouvez ou revenez en arrière en un clic lorsque vous devez restaurer une version antérieure. + ## Exécution programmatique Exécutez des workflows depuis vos applications en utilisant nos SDK officiels : @@ -122,7 +139,7 @@ const result = await client.executeWorkflow('workflow-id', { - Ajoutez des journalisations aux blocs de fonction pour le débogage ### Optimisation des performances -- Minimisez les appels API externes lorsque c'est possible +- Minimisez les appels API externes lorsque possible - Utilisez l'exécution parallèle pour les opérations indépendantes - Mettez en cache les résultats avec des blocs de mémoire lorsque c'est approprié @@ -131,6 +148,6 @@ const result = await client.executeWorkflow('workflow-id', { - Suivez les coûts d'utilisation des modèles d'IA - Utilisez des instantanés de workflow pour déboguer les problèmes -## Quelle est la suite ? +## Et ensuite ? -Commencez par les [Principes fondamentaux d'exécution](/execution/basics) pour comprendre comment les workflows s'exécutent, puis explorez la [Journalisation](/execution/logging) pour surveiller vos exécutions et le [Calcul des coûts](/execution/costs) pour optimiser vos dépenses. +Commencez par les [Principes de base de l'exécution](/execution/basics) pour comprendre comment les workflows s'exécutent, puis explorez la [Journalisation](/execution/logging) pour surveiller vos exécutions et le [Calcul des coûts](/execution/costs) pour optimiser vos dépenses. diff --git a/apps/docs/content/docs/fr/triggers/api.mdx b/apps/docs/content/docs/fr/triggers/api.mdx new file mode 100644 index 000000000..4684a5898 --- /dev/null +++ b/apps/docs/content/docs/fr/triggers/api.mdx @@ -0,0 +1,60 @@ +--- +title: Déclencheur d'API +description: Démarrez un flux de travail à partir d'une requête HTTP authentifiée +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Aperçu + +Le déclencheur d'API expose votre flux de travail en tant que point de terminaison HTTP sécurisé. Envoyez des données JSON au point de terminaison et votre flux de travail les traite immédiatement. Les appels API s'exécutent toujours sur votre dernier déploiement. + +## Configurer le format d'entrée + +
    + Format d'entrée du déclencheur d'API +
    + +Ajoutez un champ **Format d'entrée** pour chaque paramètre. Les clés de sortie d'exécution reflètent le schéma et sont également disponibles sous ``. + +```yaml +- type: string + name: userId + value: demo-user # optional manual test value +- type: number + name: maxTokens +``` + +Les exécutions manuelles dans l'éditeur utilisent la colonne `value` pour que vous puissiez tester sans envoyer de requête. Pendant l'exécution, le résolveur remplit à la fois `` et ``. + +## Exemple de requête + +```bash +curl -X POST \ + https://sim.ai/api/workflows/WORKFLOW_ID/execute \ + -H 'Content-Type: application/json' \ + -H 'X-API-Key: YOUR_KEY' \ + -d '{"userId":"demo-user","maxTokens":1024}' +``` + +Les réponses réussies renvoient le résultat d'exécution sérialisé de l'Exécuteur. Les erreurs révèlent des problèmes de validation, d'authentification ou d'échec du flux de travail. + +## Référence de sortie + +| Référence | Description | +|-----------|-------------| +| `` | Champ défini dans le Format d'entrée | +| `` | Corps de la requête structuré complet | + +Si aucun Format d'entrée n'est défini, l'exécuteur expose le JSON brut uniquement à ``. + + +Un flux de travail ne peut contenir qu'un seul déclencheur d'API. Publiez un nouveau déploiement après les modifications pour que le point de terminaison reste à jour. + diff --git a/apps/docs/content/docs/fr/triggers/chat.mdx b/apps/docs/content/docs/fr/triggers/chat.mdx new file mode 100644 index 000000000..56f04cb02 --- /dev/null +++ b/apps/docs/content/docs/fr/triggers/chat.mdx @@ -0,0 +1,43 @@ +--- +title: Déclencheur de chat +description: Démarrer un flux de travail à partir d'un déploiement de chat +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Aperçu + +Le déclencheur de chat crée une interface conversationnelle pour votre flux de travail. Déployez votre flux de travail sous forme de chat et les utilisateurs peuvent interagir avec lui via une URL partageable. Chaque message démarre une nouvelle exécution du flux de travail en utilisant votre dernier déploiement. + +## Sorties d'exécution + +
    + Conversation de déploiement de chat +
    + +Le déclencheur écrit trois champs que les blocs en aval peuvent référencer : + +| Référence | Description | +|-----------|-------------| +| `` | Dernier message de l'utilisateur | +| `` | ID du fil de conversation | +| `` | Fichiers téléchargés optionnels | + +Les fichiers incluent `name`, `mimeType`, et un `url` signé. + +## Notes d'utilisation + +1. Ajoutez un bloc Déclencheur de chat par flux de travail. +2. Déployez le flux de travail en mode chat. +3. Partagez le lien de déploiement — chaque réponse réutilise l'ID de conversation pour que le flux de travail puisse conserver le contexte. + + +Le constructeur bloque plusieurs blocs Déclencheur de chat dans le même flux de travail. + diff --git a/apps/docs/content/docs/fr/triggers/index.mdx b/apps/docs/content/docs/fr/triggers/index.mdx new file mode 100644 index 000000000..d6519860f --- /dev/null +++ b/apps/docs/content/docs/fr/triggers/index.mdx @@ -0,0 +1,52 @@ +--- +title: Déclencheurs +description: Méthodes principales pour démarrer les workflows Sim +--- + +import { Card, Cards } from 'fumadocs-ui/components/card' + +## Déclencheurs principaux + +Choisissez un déclencheur par workflow pour définir comment il démarre : + + + + Point de terminaison HTTP qui transforme les corps JSON en entrées de workflow + + + Interface de chat déployée avec réponses en streaming + + + Saisie manuelle typée utilisée dans les exécutions d'éditeur et les workflows enfants + + + Exécutions à la demande sans données supplémentaires + + + Exécution basée sur cron ou intervalle + + + Réception de charges utiles webhook externes + + + +## Comparaison rapide + +| Déclencheur | Condition de démarrage | +|---------|-----------------| +| **API** | POST HTTP authentifié | +| **Chat** | Message de déploiement de chat | +| **Formulaire d'entrée** | À la soumission manuelle dans l'éditeur ou le workflow parent | +| **Manuel** | Bouton d'exécution dans l'éditeur | +| **Planification** | Minuteur géré dans la fenêtre de planification | +| **Webhook** | À la réception d'une requête HTTP entrante | + +## Utilisation des déclencheurs + +1. Déposez le bloc déclencheur dans l'emplacement de départ. +2. Configurez tout schéma ou authentification requis. +3. Connectez le bloc au reste du workflow. + +> Les déploiements alimentent chaque déclencheur. Mettez à jour le workflow, redéployez, et tous les points d'entrée des déclencheurs récupèrent le nouveau snapshot. En savoir plus dans [Exécution → Snapshots de déploiement](/execution). + +Les anciens blocs de démarrage restent disponibles pour les flux existants mais n'apparaissent plus dans les nouvelles versions. diff --git a/apps/docs/content/docs/fr/triggers/input-form.mdx b/apps/docs/content/docs/fr/triggers/input-form.mdx new file mode 100644 index 000000000..7e3bdefbd --- /dev/null +++ b/apps/docs/content/docs/fr/triggers/input-form.mdx @@ -0,0 +1,52 @@ +--- +title: Déclencheur de formulaire d'entrée +description: Déclencheur manuel avec un schéma d'entrée structuré +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Aperçu + +Utilisez un déclencheur de formulaire d'entrée lorsqu'un flux de travail doit démarrer depuis l'éditeur avec des champs typés. Le panneau d'exécution affiche exactement les champs que vous définissez, ainsi le flux de travail reçoit toujours des données propres. + +## Ce que vous définissez + +Ajoutez des champs dans le constructeur de format d'entrée (texte, nombre, booléen, JSON, etc.). Pour chaque champ : + +- La valeur apparaît comme `` dans le flux de travail. +- La charge utile complète est reflétée à `` pour plus de commodité. + +Si vous laissez le formulaire vide, le déclencheur n'a pas de sorties. + +## Exécutions manuelles + +
    + Panneau d +
    + +Lorsque vous appuyez sur Exécuter dans l'éditeur, le panneau affiche le formulaire. Les valeurs soumises alimentent directement la sortie du déclencheur, ainsi les blocs en aval peuvent y faire référence sans analyse supplémentaire. Les nombres sont convertis en nombres, les booléens deviennent vrai/faux, et les champs JSON sont analysés avant que le flux de travail ne les voie. + +## Flux de travail enfants + +
    + Mappage des entrées du flux de travail +
    + +Les déclencheurs de formulaire d'entrée alimentent également le bloc Flux de travail. Lorsque vous intégrez un flux de travail enfant, l'étape de mappage affiche les champs du formulaire enfant afin que vous puissiez connecter des variables depuis le parent. Tout ce que vous mappez devient la soumission du formulaire d'entrée du flux de travail enfant. + + +Besoin d'un bouton d'exécution rapide sans champs ? Utilisez un déclencheur manuel. Choisissez le formulaire d'entrée lorsque vous voulez une validation et une structure prévisible. + diff --git a/apps/docs/content/docs/fr/triggers/manual.mdx b/apps/docs/content/docs/fr/triggers/manual.mdx new file mode 100644 index 000000000..1a2707cee --- /dev/null +++ b/apps/docs/content/docs/fr/triggers/manual.mdx @@ -0,0 +1,41 @@ +--- +title: Déclenchement manuel +description: Exécuter un workflow à la demande sans entrées +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## Aperçu + +Le déclencheur manuel ajoute un simple bouton Exécuter en haut de votre workflow. Utilisez-le lorsque vous souhaitez exécuter le workflow immédiatement sans collecter de données supplémentaires. + +## Comment ça fonctionne + +
    + Bouton d +
    + +- Lance le workflow en utilisant l'instantané du déploiement actif +- N'envoie aucune charge utile — les blocs en aval ne voient que ce qu'ils ont déjà configuré +- Parfait pour des vérifications rapides, des tests de fumée ou des flux qui ne dépendent que de variables internes + +## Quand l'utiliser + +- Démarrer un workflow après avoir publié un nouveau déploiement pour confirmer que tout fonctionne toujours +- Exécuter des tâches de maintenance qui ne nécessitent pas d'entrée externe +- Déclencher des workflows enfants qui lisent uniquement l'état ou les variables d'environnement + +## Comparé au formulaire d'entrée + +Besoin de valeurs structurées ou de validation de type à l'exécution ? Passez plutôt à un déclencheur de formulaire d'entrée — le panneau d'exécution collectera ces champs avant le démarrage du workflow. + + +Les exécutions de déclenchement manuel ne remplacent pas votre historique de déploiement. Mettez à jour et redéployez chaque fois que des modifications du canevas doivent être mises en production. + diff --git a/apps/docs/content/docs/fr/triggers/starter.mdx b/apps/docs/content/docs/fr/triggers/starter.mdx index b79904ea4..6cf8ae825 100644 --- a/apps/docs/content/docs/fr/triggers/starter.mdx +++ b/apps/docs/content/docs/fr/triggers/starter.mdx @@ -1,5 +1,5 @@ --- -title: Starter +title: Starter (Obsolète) --- import { Callout } from 'fumadocs-ui/components/callout' @@ -7,12 +7,16 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' import { Video } from '@/components/ui/video' -Le bloc Starter vous permet de lancer manuellement l'exécution d'un workflow avec des paramètres d'entrée, offrant deux modes de saisie : des paramètres structurés ou une conversation par chat. + +Le bloc Starter est obsolète et a été remplacé par des déclencheurs Core plus spécialisés. Veuillez consulter la [documentation des déclencheurs Core](/triggers) pour les nouveaux déclencheurs API, Chat, Formulaire d'entrée, Manuel, Planification et Webhook. + + +Le bloc Starter vous permet de lancer manuellement l'exécution d'un flux de travail avec des paramètres d'entrée, offrant deux modes d'entrée : des paramètres structurés ou une conversation par chat.
    Bloc Starter avec options de mode manuel et mode chat
    • Entrées structurées compatibles API : définissez des paramètres spécifiques (texte, nombre, booléen, JSON, fichier, date)
    • -
    • Test pendant la construction de votre workflow : itération rapide lors du débogage des workflows
    • +
    • Test pendant la construction de votre flux de travail : itération rapide lors du débogage des flux de travail
    @@ -42,21 +46,21 @@ Choisissez votre méthode de saisie dans le menu déroulant :
    • Langage naturel : les utilisateurs tapent des questions ou des demandes
    • -
    • Conversationnel : idéal pour les workflows alimentés par l'IA
    • +
    • Conversationnel : idéal pour les flux de travail alimentés par l'IA
    -

    Discutez avec votre workflow et accédez au texte saisi, à l'ID de conversation et aux fichiers téléchargés pour des réponses contextuelles.

    +

    Discutez avec votre flux de travail et accédez au texte saisi, à l'identifiant de conversation et aux fichiers téléchargés pour des réponses contextuelles.

    ## Utilisation des variables de chat -En mode Chat, accédez aux entrées utilisateur et au contexte de la conversation grâce à des variables spéciales : +En mode Chat, accédez aux entrées utilisateur et au contexte de conversation via des variables spéciales : - **``** - Contient le texte du message de l'utilisateur - **``** - Identifiant unique pour le fil de conversation diff --git a/apps/docs/content/docs/ja/blocks/workflow.mdx b/apps/docs/content/docs/ja/blocks/workflow.mdx index afc013def..5ca1c3dcd 100644 --- a/apps/docs/content/docs/ja/blocks/workflow.mdx +++ b/apps/docs/content/docs/ja/blocks/workflow.mdx @@ -1,168 +1,40 @@ --- -title: ワークフロー +title: ワークフローブロック +description: 現在のフロー内で別のワークフローを実行する --- import { Callout } from 'fumadocs-ui/components/callout' -import { Step, Steps } from 'fumadocs-ui/components/steps' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' -ワークフローブロックを使用すると、現在のワークフロー内で他のワークフローを再利用可能なコンポーネントとして実行できます。これにより、モジュール式の設計、コードの再利用、そして小規模で焦点を絞ったワークフローから構成される複雑なネストされたワークフローの作成が可能になります。 +## 機能 -
    +
    ワークフローブロック
    - - ワークフローブロックは、小規模で再利用可能なコンポーネントから複雑なワークフローを構成できるようにすることで、モジュール式の設計を可能にします。 +より大きなフローの一部として子ワークフローを呼び出したい場合は、ワークフローブロックをドロップします。このブロックは、そのワークフローの最新デプロイバージョンを実行し、完了するまで待機してから、親ワークフローを続行します。 + +## 設定方法 + +1. **ワークフローを選択** ドロップダウンから選びます(ループを防ぐため自己参照はブロックされています)。 +2. **入力のマッピング**: 子ワークフローに入力フォームトリガーがある場合、各フィールドが表示され、親変数を接続できます。マッピングされた値が子ワークフローが受け取る内容になります。 +3. **出力**: 子ワークフローが完了すると、ブロックは以下を公開します: + - `result` – 子ワークフローの最終応答 + - `success` – エラーなく実行されたかどうか + - `error` – 実行が失敗した場合のメッセージ + +## 実行に関する注意点 + +- 子ワークフローは同じワークスペースコンテキストで実行されるため、環境変数とツールは引き継がれます。 +- このブロックはデプロイメントバージョニングを使用します:API、スケジュール、Webhook、手動、またはチャット実行はデプロイされたスナップショットを呼び出します。子ワークフローを変更した場合は再デプロイしてください。 +- 子ワークフローが失敗すると、下流で処理しない限り、ブロックはエラーを発生させます。 + + +子ワークフローは焦点を絞ったものにしましょう。小さく再利用可能なフローにすることで、深いネストを作らずに組み合わせやすくなります。 - -## 概要 - -ワークフローブロックはワークフロー間の橋渡しとして機能し、以下のことを可能にします: - - - - 既存のワークフローを再利用する:以前に作成したワークフローを新しいワークフロー内のコンポーネントとして実行する - - - モジュール式の設計を作成する:複雑なプロセスを小さく管理しやすいワークフローに分解する - - - 関心の分離を維持する:異なるビジネスロジックを別々のワークフローに分離して保持する - - - チームコラボレーションを可能にする:異なるプロジェクトやチームメンバー間でワークフローを共有し再利用する - - - -## 動作の仕組み - -ワークフローブロックは: - -1. ワークスペース内の別のワークフローへの参照を取得します -2. 現在のワークフローから子ワークフローに入力データを渡します(start.inputを通じて利用可能) -3. 子ワークフローを分離されたコンテキストで実行します -4. 結果を親ワークフローに返して、さらに処理を行います - -## 設定オプション - -### ワークフローの選択 - -ワークスペースで利用可能なワークフローのドロップダウンリストから実行するワークフローを選択します。リストには以下が含まれます: - -- 現在のワークスペースでアクセスできるすべてのワークフロー -- チームの他のメンバーから共有されたワークフロー -- 有効および無効の両方のワークフロー(ただし実行できるのは有効なワークフローのみ) - -### 実行コンテキスト - -子ワークフローは以下の条件で実行されます: - -- 独自の分離された実行コンテキスト -- 同じワークスペースリソース(APIキー、環境変数)へのアクセス -- 適切なワークスペースメンバーシップと権限チェック -- 実行ログ内のネストされたトレーススパン - - - **循環検出**: システムは自動的にワークフロー間の循環依存関係を検出し、無限ループを防止します。 - - -## 入力と出力 - - - -
      -
    • - ワークフロー選択: 実行するワークフローを選択 -
    • -
    • - 入力データ: 子ワークフローに渡す変数またはブロック参照 -
    • -
    • - 実行コンテキスト: ワークスペースリソースを持つ分離環境 -
    • -
    -
    - -
      -
    • - workflow.success: 完了ステータスを示すブール値 -
    • -
    • - workflow.childWorkflowName: 実行された子ワークフローの名前 -
    • -
    • - workflow.result: 子ワークフローから返された結果 -
    • -
    • - workflow.error: ワークフローが失敗した場合のエラー詳細 -
    • -
    -
    - -
      -
    • - ワークフローレスポンス: 子ワークフローからの主要な出力 -
    • -
    • - 実行ステータス: 成功ステータスとエラー情報 -
    • -
    • - アクセス: ワークフロー後のブロックで利用可能 -
    • -
    -
    -
    - -## 使用例 - -### モジュール式顧客オンボーディング - -
    -

    シナリオ: 複雑なオンボーディングを再利用可能なコンポーネントに分解

    -
      -
    1. メインワークフローが顧客データを受信
    2. -
    3. ワークフローブロックが検証ワークフローを実行
    4. -
    5. ワークフローブロックがアカウント設定ワークフローを実行
    6. -
    7. ワークフローブロックが歓迎メールワークフローを実行
    8. -
    -
    - -### マイクロサービスアーキテクチャ - -
    -

    シナリオ: 独立したサービスワークフローを作成

    -
      -
    1. 決済処理ワークフローがトランザクションを処理
    2. -
    3. 在庫管理ワークフローが在庫を更新
    4. -
    5. 通知ワークフローが確認を送信
    6. -
    7. メインワークフローがすべてのサービスを調整
    8. -
    -
    - -### 条件付き処理 - -
    -

    シナリオ:条件に基づいて異なるワークフローを実行する

    -
      -
    1. 条件ブロックがユーザータイプを評価
    2. -
    3. エンタープライズユーザー → 複雑な承認ワークフロー
    4. -
    5. 標準ユーザー → シンプルな承認ワークフロー
    6. -
    7. 無料ユーザー → 基本的な処理ワークフロー
    8. -
    -
    - -## ベストプラクティス - -- **ワークフローを集中させる**:子ワークフローは明確な入力と出力を持つ特定の、明確に定義されたタスクを処理するように設計する -- **ネストの深さを最小限に抑える**:保守性とパフォーマンスを向上させるため、深くネストされたワークフロー階層を避ける -- **エラーを適切に処理する**:子ワークフローの失敗に対する適切なエラー処理を実装し、フォールバックメカニズムを提供する -- **独立してテストする**:子ワークフローが親ワークフローから独立してテストおよび検証できることを確認する -- **セマンティックな命名を使用する**:ワークフローには目的と機能を明確に示す説明的な名前を付ける diff --git a/apps/docs/content/docs/ja/execution/index.mdx b/apps/docs/content/docs/ja/execution/index.mdx index 7dfe135b9..61fe15b94 100644 --- a/apps/docs/content/docs/ja/execution/index.mdx +++ b/apps/docs/content/docs/ja/execution/index.mdx @@ -4,6 +4,7 @@ title: 実行 import { Callout } from 'fumadocs-ui/components/callout' import { Card, Cards } from 'fumadocs-ui/components/card' +import { Image } from '@/components/ui/image' Simの実行エンジンは、ブロックを正しい順序で処理し、データフローを管理し、エラーを適切に処理することで、ワークフローに命を吹き込みます。これにより、Simでワークフローがどのように実行されるかを正確に理解することができます。 @@ -88,9 +89,25 @@ curl -X POST https://sim.ai/api/workflows/your-workflow-id/execute \ 各デプロイメント方法はデータをワークフローのスターターブロックに渡し、実行フローを開始します。 +## デプロイメントスナップショット + +すべての公開エントリーポイント(API、チャット、スケジュール、Webhook、手動実行)は、ワークフローのアクティブなデプロイメントスナップショットを実行します。キャンバスを変更するたびに新しいデプロイメントを公開することで、すべてのトリガーが更新されたバージョンを使用するようになります。 + +
    + デプロイメントバージョン一覧表 +
    + +デプロイモーダルは完全なバージョン履歴を保持しています。任意のスナップショットを検査し、ドラフトと比較して、必要に応じてワンクリックで昇格またはロールバックし、以前のリリースを復元することができます。 + ## プログラムによる実行 -公式SDKを使用してアプリケーションからワークフローを実行します: +公式SDKを使用してアプリケーションからワークフローを実行できます: ```bash # TypeScript/JavaScript @@ -118,18 +135,18 @@ const result = await client.executeWorkflow('workflow-id', { ### 信頼性を考慮した設計 - 適切なフォールバックパスでエラーを適切に処理する - 機密データには環境変数を使用する -- デバッグ用に関数ブロックにログを追加する +- デバッグ用にFunction(関数)ブロックにログ記録を追加する ### パフォーマンスの最適化 - 可能な限り外部APIコールを最小限に抑える - 独立した操作には並列実行を使用する -- 適切な場合はメモリブロックで結果をキャッシュする +- 適切な場合はMemory(メモリー)ブロックで結果をキャッシュする ### 実行の監視 - パフォーマンスパターンを理解するために定期的にログを確認する - AIモデル使用のコストを追跡する - 問題をデバッグするためにワークフロースナップショットを使用する -## 次のステップは? +## 次のステップ -[実行の基本](/execution/basics)からスタートしてワークフローの実行方法を理解し、次に[ログ記録](/execution/logging)で実行状況を監視し、[コスト計算](/execution/costs)で支出を最適化する方法を探りましょう。 +[実行の基本](/execution/basics)からスタートしてワークフローの実行方法を理解し、[ログ記録](/execution/logging)で実行を監視し、[コスト計算](/execution/costs)で支出を最適化する方法を探りましょう。 diff --git a/apps/docs/content/docs/ja/triggers/api.mdx b/apps/docs/content/docs/ja/triggers/api.mdx new file mode 100644 index 000000000..7355039e6 --- /dev/null +++ b/apps/docs/content/docs/ja/triggers/api.mdx @@ -0,0 +1,60 @@ +--- +title: API トリガー +description: 認証済みHTTPリクエストからワークフローを開始する +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## 概要 + +APIトリガーは、ワークフローを安全なHTTPエンドポイントとして公開します。JSONデータをエンドポイントに送信すると、ワークフローがすぐにそれを処理します。API呼び出しは常に最新のデプロイメントに対して実行されます。 + +## 入力フォーマットの設定 + +
    + APIトリガー入力フォーマット +
    + +各パラメータに**入力フォーマット**フィールドを追加します。実行時の出力キーはスキーマを反映し、``でも利用できます。 + +```yaml +- type: string + name: userId + value: demo-user # optional manual test value +- type: number + name: maxTokens +``` + +エディタでの手動実行では、リクエストを送信せずにテストできるように`value`列を使用します。実行中、リゾルバは``と``の両方に値を設定します。 + +## リクエスト例 + +```bash +curl -X POST \ + https://sim.ai/api/workflows/WORKFLOW_ID/execute \ + -H 'Content-Type: application/json' \ + -H 'X-API-Key: YOUR_KEY' \ + -d '{"userId":"demo-user","maxTokens":1024}' +``` + +成功したレスポンスはエグゼキュータからのシリアル化された実行結果を返します。エラーは検証、認証、またはワークフローの失敗を表示します。 + +## 出力リファレンス + +| リファレンス | 説明 | +|-----------|-------------| +| `` | 入力フォーマットで定義されたフィールド | +| `` | 構造化されたリクエスト本文全体 | + +入力フォーマットが定義されていない場合、エグゼキュータは生のJSONを``でのみ公開します。 + + +ワークフローには1つのAPIトリガーしか含めることができません。変更後は新しいデプロイメントを公開して、エンドポイントを最新の状態に保ってください。 + diff --git a/apps/docs/content/docs/ja/triggers/chat.mdx b/apps/docs/content/docs/ja/triggers/chat.mdx new file mode 100644 index 000000000..8c9b6a4e4 --- /dev/null +++ b/apps/docs/content/docs/ja/triggers/chat.mdx @@ -0,0 +1,43 @@ +--- +title: チャットトリガー +description: チャットデプロイメントからワークフローを開始する +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## 概要 + +チャットトリガーはワークフロー用の会話インターフェースを作成します。ワークフローをチャットとしてデプロイすると、ユーザーは共有可能なURLを通じてそれと対話できます。各メッセージは最新のデプロイメントを使用して新しいワークフロー実行を開始します。 + +## ランタイム出力 + +
    + チャットデプロイメントの会話 +
    + +このトリガーは、下流のブロックが参照できる3つのフィールドを書き込みます: + +| 参照 | 説明 | +|-----------|-------------| +| `` | 最新のユーザーメッセージ | +| `` | 会話スレッドID | +| `` | オプションのアップロードファイル | + +ファイルには `name`、`mimeType`、および署名付きダウンロード `url` が含まれます。 + +## 使用上の注意 + +1. ワークフローごとにチャットトリガーブロックを1つ追加します。 +2. ワークフローをチャットモードでデプロイします。 +3. デプロイメントリンクを共有します—各返信は同じ会話IDを再利用するため、ワークフローはコンテキストを保持できます。 + + +ビルダーは同じワークフロー内の複数のチャットトリガーブロックをブロックします。 + diff --git a/apps/docs/content/docs/ja/triggers/index.mdx b/apps/docs/content/docs/ja/triggers/index.mdx new file mode 100644 index 000000000..d0704e06b --- /dev/null +++ b/apps/docs/content/docs/ja/triggers/index.mdx @@ -0,0 +1,52 @@ +--- +title: トリガー +description: Simワークフローを開始する主要な方法 +--- + +import { Card, Cards } from 'fumadocs-ui/components/card' + +## 主要なトリガー + +ワークフローごとに1つのトリガーを選択して、開始方法を定義します: + + + + JSONボディをワークフロー入力にマッピングするHTTPエンドポイント + + + ストリーミングレスポンスを備えたデプロイ済みチャットインターフェース + + + エディタ実行と子ワークフローで使用される型付き手動入力 + + + 追加データなしのオンデマンド実行 + + + Cronまたは間隔ベースの実行 + + + 外部のWebhookペイロードを受信 + + + +## クイック比較 + +| トリガー | 開始条件 | +|---------|-----------------| +| **API** | 認証されたHTTP POST | +| **チャット** | チャットデプロイメントメッセージ | +| **入力フォーム** | エディタまたは親ワークフローでの手動送信時 | +| **手動** | エディタの実行ボタン | +| **スケジュール** | スケジュールモーダルで管理されるタイマー | +| **Webhook** | 受信HTTPリクエスト時 | + +## トリガーの使用方法 + +1. トリガーブロックを開始スロットにドロップします。 +2. 必要なスキーマや認証を設定します。 +3. ブロックをワークフローの残りの部分に接続します。 + +> デプロイメントはすべてのトリガーを動作させます。ワークフローを更新し、再デプロイすると、すべてのトリガーエントリーポイントが新しいスナップショットを取得します。詳細は[実行 → デプロイメントスナップショット](/execution)をご覧ください。 + +既存のフロー用にレガシースタータブロックは残っていますが、新しいビルドには表示されなくなりました。 diff --git a/apps/docs/content/docs/ja/triggers/input-form.mdx b/apps/docs/content/docs/ja/triggers/input-form.mdx new file mode 100644 index 000000000..019e9b1c5 --- /dev/null +++ b/apps/docs/content/docs/ja/triggers/input-form.mdx @@ -0,0 +1,52 @@ +--- +title: 入力フォームトリガー +description: 構造化された入力スキーマを持つ手動トリガー +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## 概要 + +ワークフローがエディターから型付きフィールドで開始される必要がある場合は、入力フォームトリガーを使用します。実行パネルには定義したフィールドが正確に表示されるため、ワークフローは常にクリーンなデータを受け取ります。 + +## 定義するもの + +入力フォーマットビルダーにフィールド(テキスト、数値、ブール値、JSONなど)を追加します。各フィールドについて: + +- 値はワークフロー内で `` として表示されます。 +- 完全なペイロードは便宜上 `` にミラーリングされます。 + +フォームを空のままにすると、トリガーは出力を持ちません。 + +## 手動実行 + +
    + 入力フォーム実行パネル +
    + +エディターで実行ボタンを押すと、パネルにフォームがレンダリングされます。送信された値はトリガー出力に直接送られるため、下流のブロックは追加の解析なしにそれらを参照できます。数値は数値型に変換され、ブール値はtrue/falseになり、JSONフィールドはワークフローが処理する前に解析されます。 + +## 子ワークフロー + +
    + ワークフロー入力マッピング +
    + +入力フォームトリガーはワークフローブロックも強化します。子ワークフローを埋め込むと、マッピングステップで子フォームフィールドが表示され、親から変数を接続できます。マッピングしたものは子ワークフローの入力フォーム送信になります。 + + +フィールドのない簡単な実行ボタンが必要ですか?手動トリガーを使用してください。検証と予測可能な構造が必要な場合は、入力フォームを選択してください。 + diff --git a/apps/docs/content/docs/ja/triggers/manual.mdx b/apps/docs/content/docs/ja/triggers/manual.mdx new file mode 100644 index 000000000..04053a154 --- /dev/null +++ b/apps/docs/content/docs/ja/triggers/manual.mdx @@ -0,0 +1,41 @@ +--- +title: 手動トリガー +description: 入力なしでオンデマンドでワークフローを実行する +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## 概要 + +手動トリガーはワークフローの上部に単純な実行ボタンを追加します。追加データを収集せずにワークフローをすぐに実行したい場合に使用します。 + +## 仕組み + +
    + 手動トリガー実行ボタン +
    + +- アクティブなデプロイメントスナップショットを使用してワークフローを起動します +- ペイロードを送信しません—下流のブロックは既に設定されているものだけを参照します +- 簡単な動作確認、スモークテスト、または内部変数のみに依存するフローに最適です + +## 使用するタイミング + +- 新しいデプロイメントを公開した後、すべてがまだ正常に動作することを確認するためにワークフローを開始する +- 外部入力を必要としないメンテナンスジョブを実行する +- 状態や環境変数のみを読み取る子ワークフローをトリガーする + +## 入力フォームとの比較 + +実行時に構造化された値や型の検証が必要ですか?代わりに入力フォームトリガーに切り替えると、実行パネルはワークフローが開始する前にそれらのフィールドを収集します。 + + +手動トリガーの実行はデプロイメント履歴を上書きしません。キャンバスの変更を反映させるには、更新して再デプロイしてください。 + diff --git a/apps/docs/content/docs/ja/triggers/starter.mdx b/apps/docs/content/docs/ja/triggers/starter.mdx index 71a08ba62..fb9c703a0 100644 --- a/apps/docs/content/docs/ja/triggers/starter.mdx +++ b/apps/docs/content/docs/ja/triggers/starter.mdx @@ -1,5 +1,5 @@ --- -title: スターター +title: スターター(非推奨) --- import { Callout } from 'fumadocs-ui/components/callout' @@ -7,7 +7,11 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' import { Video } from '@/components/ui/video' -スターターブロックを使用すると、入力パラメータを使用してワークフローの実行を手動で開始できます。構造化されたパラメータまたは会話型チャットという2つの入力モードを提供しています。 + +スターターブロックは非推奨となり、より専門的なコアトリガーに置き換えられました。新しいAPI、チャット、入力フォーム、手動、スケジュール、Webhookトリガーについては[コアトリガーのドキュメント](/triggers)をご覧ください。 + + +スターターブロックでは、入力パラメータを使用してワークフローの実行を手動で開始することができ、構造化されたパラメータまたは会話型チャットという2つの入力モードを提供しています。
    +
      -
    • API対応の構造化された入力:特定のパラメータ(テキスト、数値、ブール値、JSON、ファイル、日付)を定義
    • +
    • API対応の構造化入力:特定のパラメータ(テキスト、数値、ブール値、JSON、ファイル、日付)を定義
    • ワークフロー構築中のテスト:ワークフローのデバッグ中に素早く反復
    @@ -49,7 +53,7 @@ import { Video } from '@/components/ui/video'
    -

    ワークフローとチャットし、入力テキスト、会話ID、アップロードされたファイルにアクセスして、コンテキストを考慮した応答を得られます。

    +

    ワークフローとチャットし、入力テキスト、会話ID、アップロードされたファイルにアクセスして、文脈を考慮した応答を得られます。

    @@ -60,4 +64,4 @@ import { Video } from '@/components/ui/video' - **``** - ユーザーのメッセージテキストが含まれます - **``** - 会話スレッドの一意の識別子 -- **``** - ユーザーがアップロードしたファイルの配列(存在する場合) \ No newline at end of file +- **``** - ユーザーがアップロードしたファイルの配列(ある場合) \ No newline at end of file diff --git a/apps/docs/content/docs/zh/blocks/workflow.mdx b/apps/docs/content/docs/zh/blocks/workflow.mdx index 8f1a78a5c..44bbf3b94 100644 --- a/apps/docs/content/docs/zh/blocks/workflow.mdx +++ b/apps/docs/content/docs/zh/blocks/workflow.mdx @@ -1,168 +1,40 @@ --- -title: 工作流 +title: 工作流模块 +description: 在当前流程中运行另一个工作流 --- import { Callout } from 'fumadocs-ui/components/callout' -import { Step, Steps } from 'fumadocs-ui/components/steps' -import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' -工作流模块允许您在当前工作流中将其他工作流作为可重用组件执行。这使得模块化设计、代码复用以及由更小、更专注的工作流组成的复杂嵌套工作流的创建成为可能。 +## 功能简介 -
    +
    工作流模块
    - - 工作流模块通过允许您使用更小的可重用组件来组成复杂的工作流,从而实现模块化设计。 +当您希望在更大的流程中调用子工作流时,可以使用工作流模块。该模块运行该工作流的最新部署版本,等待其完成后,再继续执行父流程。 + +## 配置方法 + +1. **选择一个工作流**:从下拉菜单中选择(为了防止循环,禁止自引用)。 +2. **映射输入**:如果子工作流有输入表单触发器,您将看到每个字段,并可以连接父变量。映射的值是子工作流接收到的值。 +3. **输出**:子工作流完成后,该模块会提供以下输出: + - `result` – 子工作流的最终响应 + - `success` – 是否运行无错误 + - `error` – 运行失败时的消息 + +## 执行注意事项 + +- 子工作流在相同的工作区上下文中运行,因此环境变量和工具会被继承。 +- 该模块使用部署版本控制:任何 API、计划任务、Webhook、手动或聊天执行都会调用已部署的快照。当您更改子工作流时,需要重新部署。 +- 如果子工作流失败,该模块会引发错误,除非您在下游处理了该错误。 + + +保持子工作流的专注性。小型、可复用的流程更容易组合使用,而不会导致深层嵌套。 - -## 概述 - -工作流模块充当工作流之间的桥梁,使您能够: - - - - 复用现有工作流:在新工作流中将之前创建的工作流作为组件执行 - - - 创建模块化设计:将复杂的流程分解为更小、更易管理的工作流 - - - 保持关注点分离:将不同的业务逻辑隔离在独立的工作流中 - - - 支持团队协作:在不同项目和团队成员之间共享和复用工作流 - - - -## 工作原理 - -工作流模块: - -1. 引用工作区中的另一个工作流 -2. 将当前工作流的输入数据传递给子工作流(通过 start.input 提供) -3. 在隔离的上下文中执行子工作流 -4. 将结果返回给父工作流以进行进一步处理 - -## 配置选项 - -### 工作流选择 - -从工作区中可用工作流的下拉列表中选择要执行的工作流。列表包括: - -- 您在当前工作区中有权限访问的所有工作流 -- 其他团队成员与您共享的工作流 -- 启用和禁用的工作流(但只有启用的工作流可以执行) - -### 执行上下文 - -子工作流的执行包括: - -- 独立的执行上下文 -- 访问相同的工作区资源(API 密钥、环境变量) -- 正确的工作区成员资格和权限检查 -- 在执行日志中嵌套的追踪跨度 - - - **循环检测**:系统会自动检测并防止工作流之间的循环依赖,以避免无限循环。 - - -## 输入和输出 - - - -
      -
    • - 工作流选择:选择要执行的工作流 -
    • -
    • - 输入数据:传递给子工作流的变量或块引用 -
    • -
    • - 执行上下文:带有工作区资源的独立环境 -
    • -
    -
    - -
      -
    • - workflow.success:布尔值,指示完成状态 -
    • -
    • - workflow.childWorkflowName:已执行的子工作流名称 -
    • -
    • - workflow.result:子工作流返回的结果 -
    • -
    • - workflow.error:如果工作流失败,提供错误详情 -
    • -
    -
    - -
      -
    • - 工作流响应:子工作流的主要输出 -
    • -
    • - 执行状态:成功状态和错误信息 -
    • -
    • - 访问:在工作流之后的块中可用 -
    • -
    -
    -
    - -## 示例用例 - -### 模块化客户入职 - -
    -

    场景:将复杂的入职流程分解为可重用的组件

    -
      -
    1. 主工作流接收客户数据
    2. -
    3. 工作流块执行验证工作流
    4. -
    5. 工作流块执行账户设置工作流
    6. -
    7. 工作流块执行欢迎邮件工作流
    8. -
    -
    - -### 微服务架构 - -
    -

    场景:创建独立的服务工作流

    -
      -
    1. 支付处理工作流处理交易
    2. -
    3. 库存管理工作流更新库存
    4. -
    5. 通知工作流发送确认信息
    6. -
    7. 主工作流协调所有服务
    8. -
    -
    - -### 条件处理 - -
    -

    场景:根据条件执行不同的工作流

    -
      -
    1. 条件块评估用户类型
    2. -
    3. 企业用户 → 复杂的审批工作流
    4. -
    5. 标准用户 → 简单的审批工作流
    6. -
    7. 免费用户 → 基础的处理工作流
    8. -
    -
    - -## 最佳实践 - -- **保持工作流专注**:设计子工作流以处理特定的、定义明确的任务,并具有清晰的输入和输出 -- **最小化嵌套深度**:避免深度嵌套的工作流层级,以提高可维护性和性能 -- **优雅地处理错误**:为子工作流失败实施适当的错误处理,并提供备用机制 -- **独立测试**:确保子工作流可以独立于父工作流进行测试和验证 -- **使用语义化命名**:为工作流赋予描述性名称,清楚地表明其目的和功能 diff --git a/apps/docs/content/docs/zh/execution/index.mdx b/apps/docs/content/docs/zh/execution/index.mdx index f1cc67833..37bbe2c4e 100644 --- a/apps/docs/content/docs/zh/execution/index.mdx +++ b/apps/docs/content/docs/zh/execution/index.mdx @@ -4,6 +4,7 @@ title: 执行 import { Callout } from 'fumadocs-ui/components/callout' import { Card, Cards } from 'fumadocs-ui/components/card' +import { Image } from '@/components/ui/image' Sim 的执行引擎通过按正确的顺序处理模块、管理数据流并优雅地处理错误,使您的工作流栩栩如生,从而让您能够准确了解工作流在 Sim 中的执行方式。 @@ -88,6 +89,22 @@ curl -X POST https://sim.ai/api/workflows/your-workflow-id/execute \ 每种部署方法都会将数据传递到工作流的起始块,从而开始执行流程。 +## 部署快照 + +所有公共入口点——API、Chat、Schedule、Webhook 和手动运行——都会执行工作流的活动部署快照。每次更改画布时发布一个新的部署,以便每个触发器都使用更新的版本。 + +
    + 部署版本表 +
    + +部署模式会保留完整的版本历史记录——可以检查任何快照,将其与草稿进行比较,并在需要恢复之前的版本时一键提升或回滚。 + ## 编程执行 使用我们的官方 SDK 从您的应用程序中执行工作流: @@ -115,21 +132,21 @@ const result = await client.executeWorkflow('workflow-id', { ## 最佳实践 -### 设计可靠性 +### 可靠性设计 - 使用适当的回退路径优雅地处理错误 - 对敏感数据使用环境变量 -- 在功能块中添加日志以便调试 +- 在函数模块中添加日志以便调试 -### 优化性能 +### 性能优化 - 尽量减少外部 API 调用 - 对独立操作使用并行执行 -- 在适当情况下使用内存块缓存结果 +- 在适当情况下使用内存模块缓存结果 -### 监控执行 +### 执行监控 - 定期查看日志以了解性能模式 - 跟踪 AI 模型使用的成本 - 使用工作流快照调试问题 -## 接下来是什么? +## 接下来做什么? 从 [执行基础](/execution/basics) 开始,了解工作流如何运行,然后探索 [日志记录](/execution/logging) 以监控您的执行情况,以及 [成本计算](/execution/costs) 以优化您的支出。 diff --git a/apps/docs/content/docs/zh/triggers/api.mdx b/apps/docs/content/docs/zh/triggers/api.mdx new file mode 100644 index 000000000..060b3db90 --- /dev/null +++ b/apps/docs/content/docs/zh/triggers/api.mdx @@ -0,0 +1,60 @@ +--- +title: API 触发器 +description: 通过经过身份验证的 HTTP 请求启动工作流 +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## 概述 + +API 触发器将您的工作流公开为一个安全的 HTTP 端点。将 JSON 数据发送到该端点,您的工作流会立即处理它。API 调用始终针对您的最新部署执行。 + +## 配置输入格式 + +
    + API 触发器输入格式 +
    + +为每个参数添加一个 **输入格式** 字段。运行时输出键会镜像该模式,并且也可以在 `` 下使用。 + +```yaml +- type: string + name: userId + value: demo-user # optional manual test value +- type: number + name: maxTokens +``` + +编辑器中的手动运行使用 `value` 列,因此您可以在不发送请求的情况下进行测试。在执行期间,解析器会填充 `` 和 ``。 + +## 请求示例 + +```bash +curl -X POST \ + https://sim.ai/api/workflows/WORKFLOW_ID/execute \ + -H 'Content-Type: application/json' \ + -H 'X-API-Key: YOUR_KEY' \ + -d '{"userId":"demo-user","maxTokens":1024}' +``` + +成功的响应会返回来自执行器的序列化执行结果。错误会显示验证、身份验证或工作流失败的原因。 + +## 输出参考 + +| 参考 | 描述 | +|-----------|-------------| +| `` | 在输入格式中定义的字段 | +| `` | 整个结构化请求体 | + +如果未定义输入格式,执行器仅在 `` 处公开原始 JSON。 + + +一个工作流只能包含一个 API 触发器。更改后请发布新的部署,以确保端点保持最新。 + diff --git a/apps/docs/content/docs/zh/triggers/chat.mdx b/apps/docs/content/docs/zh/triggers/chat.mdx new file mode 100644 index 000000000..d48b75b97 --- /dev/null +++ b/apps/docs/content/docs/zh/triggers/chat.mdx @@ -0,0 +1,43 @@ +--- +title: 聊天触发器 +description: 从聊天部署中启动工作流 +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## 概述 + +聊天触发器为您的工作流创建了一个对话界面。将您的工作流部署为聊天,用户可以通过一个可分享的 URL 与其交互。每条消息都会使用您最新的部署启动一个新的工作流执行。 + +## 运行时输出 + +
    + 聊天部署对话 +
    + +触发器会写入三个字段,供下游模块引用: + +| 引用 | 描述 | +|-----------|-------------| +| `` | 最新的用户消息 | +| `` | 对话线程 ID | +| `` | 可选的上传文件 | + +文件包括 `name`、`mimeType`,以及一个带签名的下载链接 `url`。 + +## 使用说明 + +1. 每个工作流添加一个聊天触发器模块。 +2. 以聊天模式部署工作流。 +3. 分享部署链接——每次回复都会重用对话 ID,以便工作流保持上下文。 + + +构建器会阻止在同一工作流中添加多个聊天触发器模块。 + diff --git a/apps/docs/content/docs/zh/triggers/index.mdx b/apps/docs/content/docs/zh/triggers/index.mdx new file mode 100644 index 000000000..7af1902b0 --- /dev/null +++ b/apps/docs/content/docs/zh/triggers/index.mdx @@ -0,0 +1,52 @@ +--- +title: 触发器 +description: 启动 Sim 工作流的核心方式 +--- + +import { Card, Cards } from 'fumadocs-ui/components/card' + +## 核心触发器 + +为每个工作流选择一个触发器以定义其启动方式: + + + + 将 JSON 数据映射到工作流输入的 HTTP 端点 + + + 部署的聊天界面,支持流式响应 + + + 在编辑器运行和子工作流中使用的手动输入 + + + 无需额外数据的按需运行 + + + 基于 Cron 或间隔的执行 + + + 接收外部 Webhook 负载 + + + +## 快速对比 + +| 触发器 | 启动条件 | +|---------|-----------------| +| **API** | 经过身份验证的 HTTP POST | +| **Chat** | 聊天部署消息 | +| **Input Form** | 在编辑器或父工作流中手动提交 | +| **Manual** | 编辑器中的运行按钮 | +| **Schedule** | 在计划模式中管理的计时器 | +| **Webhook** | 入站 HTTP 请求 | + +## 使用触发器 + +1. 将触发器模块放入启动槽中。 +2. 配置任何所需的模式或认证。 +3. 将模块连接到工作流的其余部分。 + +> 部署为每个触发器提供支持。更新工作流,重新部署,所有触发器入口点将获取新的快照。了解更多信息,请参阅[执行 → 部署快照](/execution)。 + +旧版启动模块仍适用于现有流程,但不再出现在新构建中。 diff --git a/apps/docs/content/docs/zh/triggers/input-form.mdx b/apps/docs/content/docs/zh/triggers/input-form.mdx new file mode 100644 index 000000000..4dd7b97e6 --- /dev/null +++ b/apps/docs/content/docs/zh/triggers/input-form.mdx @@ -0,0 +1,52 @@ +--- +title: 输入表单触发器 +description: 具有结构化输入模式的手动触发器 +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## 概述 + +当工作流需要从编辑器中以类型化字段开始时,请使用输入表单触发器。运行面板会准确显示您定义的字段,因此工作流始终接收干净的数据。 + +## 您需要定义的内容 + +在输入格式构建器中添加字段(文本、数字、布尔值、JSON 等)。对于每个字段: + +- 该值会作为 `` 出现在工作流中。 +- 为方便起见,完整的有效负载会镜像在 ``。 + +如果您将表单留空,触发器将没有输出。 + +## 手动运行 + +
    + 输入表单运行面板 +
    + +当您在编辑器中按下运行按钮时,面板会渲染表单。提交的值会直接输入到触发器输出中,因此下游模块可以直接引用它们而无需额外解析。数字会被转换为数字,布尔值会变为 true/false,JSON 字段在工作流看到它们之前会被解析。 + +## 子工作流 + +
    + 工作流输入映射 +
    + +输入表单触发器还支持工作流模块。当您嵌入子工作流时,映射步骤会显示子表单字段,以便您可以将变量从父级连接到子级。您映射的内容将成为子工作流的输入表单提交。 + + +需要一个没有字段的快速运行按钮?使用手动触发器。当您需要验证和可预测的结构时,请选择输入表单。 + diff --git a/apps/docs/content/docs/zh/triggers/manual.mdx b/apps/docs/content/docs/zh/triggers/manual.mdx new file mode 100644 index 000000000..10aaa94ab --- /dev/null +++ b/apps/docs/content/docs/zh/triggers/manual.mdx @@ -0,0 +1,41 @@ +--- +title: 手动触发器 +description: 无需输入即可按需运行工作流 +--- + +import { Callout } from 'fumadocs-ui/components/callout' +import { Image } from '@/components/ui/image' + +## 概述 + +手动触发器会在工作流顶部添加一个简单的运行按钮。当您希望立即执行工作流而无需收集额外数据时,可以使用它。 + +## 工作原理 + +
    + 手动触发器运行按钮 +
    + +- 使用活动的部署快照启动工作流 +- 不发送任何有效负载——下游模块仅看到它们已配置的内容 +- 非常适合快速检查、冒烟测试或仅依赖内部变量的流程 + +## 使用场景 + +- 在发布新部署后启动工作流,以确认一切仍然正常运行 +- 运行不需要外部输入的维护任务 +- 触发仅读取状态或环境变量的子工作流 + +## 与输入表单的比较 + +需要在运行时提供结构化值或类型验证?改用输入表单触发器——运行面板将在工作流开始前收集这些字段。 + + +手动触发器运行不会覆盖您的部署历史记录。每当需要上线画布更改时,请更新并重新部署。 + diff --git a/apps/docs/content/docs/zh/triggers/starter.mdx b/apps/docs/content/docs/zh/triggers/starter.mdx index a9c0d82d6..9506055ff 100644 --- a/apps/docs/content/docs/zh/triggers/starter.mdx +++ b/apps/docs/content/docs/zh/triggers/starter.mdx @@ -1,5 +1,5 @@ --- -title: 入门 +title: Starter(已弃用) --- import { Callout } from 'fumadocs-ui/components/callout' @@ -7,12 +7,16 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs' import { Image } from '@/components/ui/image' import { Video } from '@/components/ui/video' -入门模块允许您通过输入参数手动启动工作流执行,提供两种输入模式:结构化参数或对话式聊天。 + +Starter 模块已被弃用,并由更专业的核心触发器取代。请参阅[核心触发器文档](/triggers),了解新的 API、聊天、输入表单、手动、计划和 Webhook 触发器。 + + +Starter 模块允许您通过输入参数手动启动工作流执行,提供两种输入模式:结构化参数或对话式聊天。
    具有手动和聊天模式选项的入门模块
    • API 友好的结构化输入:定义特定参数(文本、数字、布尔值、JSON、文件、日期)
    • -
    • 在构建工作流时进行测试:调试工作流时快速迭代
    • +
    • 构建工作流时的测试:调试工作流时快速迭代
    @@ -49,14 +53,14 @@ import { Video } from '@/components/ui/video'
    -

    与您的工作流进行聊天,并访问输入文本、会话 ID 和上传的文件以实现上下文感知的响应。

    +

    与您的工作流对话,并访问输入文本、会话 ID 和上传的文件,以实现上下文感知的响应。

    ## 使用聊天变量 -在聊天模式下,通过特殊变量访问用户输入和会话上下文: +在聊天模式下,可以通过特殊变量访问用户输入和会话上下文: - **``** - 包含用户的消息文本 - **``** - 会话线程的唯一标识符 diff --git a/apps/docs/i18n.lock b/apps/docs/i18n.lock index c17dece0d..8dbc54ee6 100644 --- a/apps/docs/i18n.lock +++ b/apps/docs/i18n.lock @@ -200,16 +200,17 @@ checksums: content/32: 8e0e9217f80809b36efdd4f06c8b3407 content/33: 1bccc5c7c9c3faa39621204141b12194 7867ffa0477110b9224b5900cd88af64: - meta/title: d57ceb9ca36fb941537a29beddee5026 + meta/title: 5a2605bd1afd6ccfab7ab6bd25d25487 content/0: c0a142478cc5c515f87d368fa72da818 - content/1: 216126f06a18fe0345391a41cbf69d96 - content/2: 223436341e6581e88678f72dcb5ea8cd - content/3: f2c54965c634f66b5fa5f3406f28f863 - content/4: c8f62e98c3b901b6ddeaee9e97405a6f - content/5: 3515ae8970077219b243cc353d330fe9 - content/6: c693032e2e6c2d8baf72c1e9fe670597 - content/7: c6b79caea92149650904838f89939f40 - content/8: cbca5d806da167603e38e7dc90344e57 + content/1: 89a68227f96e1e2c0db0fdccf75f309c + content/2: 216126f06a18fe0345391a41cbf69d96 + content/3: 223436341e6581e88678f72dcb5ea8cd + content/4: f2c54965c634f66b5fa5f3406f28f863 + content/5: c8f62e98c3b901b6ddeaee9e97405a6f + content/6: 3515ae8970077219b243cc353d330fe9 + content/7: c693032e2e6c2d8baf72c1e9fe670597 + content/8: c6b79caea92149650904838f89939f40 + content/9: cbca5d806da167603e38e7dc90344e57 fb53ce2c1fc28db4c6c09f5296ff59c6: meta/title: a75428cb811bc50150cecde090a3a0d5 content/0: c0a142478cc5c515f87d368fa72da818 @@ -2647,7 +2648,7 @@ checksums: content/32: ebdbef07196127ef2c7ba23491f62578 0334b7b88d5f6e736984d25a5913ce74: meta/title: cbac4a3c721123cbc6a883560bf29800 - content/0: 4b92e97b7a206361bbc925f3ab1d7b19 + content/0: c2b41859d63a751682f0d9aec488e581 content/1: 029b6eaedb318e283ec616271b1c1f31 content/2: cd32f3f914c0d61277663080f084a6c5 content/3: d0884f6f30103599303dbc34ab978afb @@ -2668,16 +2669,20 @@ checksums: content/18: bce1e4e161b456fb087eced7989396da content/19: 5b3d24c353563247b9211822a871fef4 content/20: 1caf64b236828bfeebe960fc20a5ab73 - content/21: c80365afbb4bb97e47afb8046aca0e4d - content/22: bcd28da9c1dce1b1fcac124a44c6e3af - content/23: 6bc2fe9d10757bef1c729e6c2a8f641b - content/24: 4a83f87901c49d45be4db1acc8798fcf - content/25: b2a4a0c279f47d58a2456f25a1e1c6f9 - content/26: e268aec41ffc038e8a4c0c0f32df6ab7 - content/27: 3481ccd057c4b953509346ee2cc5b48e - content/28: 770a4b0d73650cffbaa78c819d6ab4d0 - content/29: d2f430ae2dc112f90bc63225b63e93dd - content/30: 03d809b3d2d99b8d5f18610859b64f01 + content/21: 7b6c8964f393e9314c294c602f25d408 + content/22: 4aea1808e27ec653c759cc117eea48d3 + content/23: 8f40b40057951bc518970c6693ac430a + content/24: f04172446018c863976118c67315433a + content/25: c80365afbb4bb97e47afb8046aca0e4d + content/26: bcd28da9c1dce1b1fcac124a44c6e3af + content/27: 6bc2fe9d10757bef1c729e6c2a8f641b + content/28: 4a83f87901c49d45be4db1acc8798fcf + content/29: b2a4a0c279f47d58a2456f25a1e1c6f9 + content/30: e268aec41ffc038e8a4c0c0f32df6ab7 + content/31: 3481ccd057c4b953509346ee2cc5b48e + content/32: 770a4b0d73650cffbaa78c819d6ab4d0 + content/33: d2f430ae2dc112f90bc63225b63e93dd + content/34: 03d809b3d2d99b8d5f18610859b64f01 93a12caff7a5c8e23c8945748341fb3a: meta/title: ce4f627ba9e60c4718e2441ce884f560 content/0: bdace12b4c85213012e88653277c2ebb @@ -2949,36 +2954,17 @@ checksums: content/8: ee7755c785324eed7080a9efb5937ba9 content/9: 4e37faf476573f26ccb9bc7f224662b1 e99baf6ea410c047444ec8592d7d54f3: - meta/title: 0240772c838117f1c837f4913fce9384 - content/0: d091aba168f368dcc4e9073c000f47af - content/1: d535b3ffe5440af56ae10210f6b2e637 - content/2: 0e302f592b5d0416346f35b7dbc30853 - content/3: 0b640cd2c679bdf3bc24885290042dce - content/4: 5e26527ccf8fddebe14c951e6c950b48 - content/5: aa55ef9b2a15c211fa509aa1d31534f4 - content/6: 3b1e4e2059ba01fc63a4bf4a6853d5c0 - content/7: ad8638a3473c909dbcb1e1d9f4f26381 - content/8: 7e519b11665ca706936276803d28ca9c - content/9: e513312f3c26e7b7011b3f1e5b15652f - content/10: b2e603592f9c01f26bd7bd067f52ccd5 - content/11: c85151df4d0c1de9189c7aae92963973 - content/12: 8662c5fb212a0392f9d81adb91e9ad4e - content/13: 39ff6f3fdd0c86fa68ef5b85e6011f63 - content/14: f78afc1b4d533d9fd57f39903387af2d - content/15: 7f6e1ef1a2fe004852ebf910f62a98e7 - content/16: 4b9041966542eebbf55ea4cfe082af5f - content/17: 045080b64ddf3d6c56d9023f49faab90 - content/18: d72903dda50a36b12ec050a06ef23a1b - content/19: 78eb14b27953674512e2957b7dbd68b6 - content/20: 9c2f91f89a914bf4661512275e461104 - content/21: 2c8be53af05636013555b8775bc0db15 - content/22: c03744f1e653869a773692d8334fd6b2 - content/23: 67f75b67ff5bb1e8a84393bfc5ab00b6 - content/24: 1469dec342ba22a92d5faf20b266936f - content/25: 754efe9696132b408f9b828967fa587c - content/26: 75f7c86d00c3b746e2e44e235a2f38b6 - content/27: b2a4a0c279f47d58a2456f25a1e1c6f9 - content/28: d2cfaf10c9d2909a6e83a67067c7e1dc + meta/title: 314cb19eb4fc168e662c3ac7e308f8c1 + meta/description: 064420321c795472e120795dd3866b6b + content/0: eb0ed7078f192304703144f4cac3442f + content/1: 4a2b79d74390a7f15a0493a5b9811aa6 + content/2: 51409378febc14a254bfd47909a470e4 + content/3: c470cddccf8e05421006bb87a1934a76 + content/4: c712a7c1712d32c3d539a42949437e74 + content/5: bbc6fc8324371b3f35d4b2482750627d + content/6: b5679e78347c7b56291bf29c07ea4894 + content/7: ad6e9b3e5268ebdc1aacbbe68f1d47d0 + content/8: 3d7cbdfdd9717209049859e503965ad0 2370c896de59e5d3a8abcb5a44e245f9: meta/title: c14965d732abc6e402c866dd7272a37f content/0: 1852345497a5d49c4c869b368b5d1612 @@ -3905,3 +3891,79 @@ checksums: content/46: f383a8845c0fe57f4eb82c1c69009925 content/47: b3f310d5ef115bea5a8b75bf25d7ea9a content/48: 5e1c856b28d30016198e90cda5b05e57 + 5d496ee293efcfeeabc8ba9cb5bea389: + meta/title: 48133ce7ab3a049b7627329f80a182fb + meta/description: 65f24f2782c9bb82cc5d40ff66d052b6 + content/0: eb0ed7078f192304703144f4cac3442f + content/1: 5e26527ccf8fddebe14c951e6c950b48 + content/2: 0d81ea82151104adc39c846ac8337431 + content/3: ad8638a3473c909dbcb1e1d9f4f26381 + content/4: 8c1a52f7cec852a5c7ff47c0e2930a73 + content/5: b4a8e39e816091b3964a92ae3bde42ff + content/6: 69140f7129fbf1c47dc5f3e11ed204e3 + content/7: 6457e9e8ad810111a17400e900884c93 + content/8: ef7204714a75ed639120dd4a6ba18090 + content/9: 749a5aa6304dae75fcb691ec5dd62020 + content/10: 6ae1fe8e296a5924538ba0468c4d1a6c + 4f4fc92cad5b98200e961f8c7e63b114: + meta/title: e3121231039423710489dc40385552ac + meta/description: b48763f2062aa535d0acd84e5a377b8a + content/0: eb0ed7078f192304703144f4cac3442f + content/1: 5e26527ccf8fddebe14c951e6c950b48 + content/2: c060b0c739bcb1b0e362e35913e6a021 + content/3: aaddc2922e87ac1a91a1c375d3873ef7 + content/4: 0caf16c2939919e4c7bcb65acaba4556 + content/5: fb1f31982f28c530d1f4a54225f8d69e + content/6: b46d3306465322aa484be51de951ecf0 + content/7: c7bac9990b48e0da1b2a14b047e2fed3 + content/8: 7f9f3edbc0dfa08d8215523b6dee3759 + content/9: 6942b610f6873ccc980ecb6e1317fe6b + content/10: 08e432baa1ebfbce144be785980c9ea3 + content/11: a7be0ff0273a72ba92fe57352fff9818 + content/12: fa99328ac89f35c19a8833b4a67aed2f + content/13: bcc75d48639b6962a931d0bd9b1964fd + 988d7dce2c886500665fbd2457d4cc4d: + meta/title: 66488f38662a4199fb8a18967239c992 + meta/description: 96d5e61577085aa1c1a6f1609ae5ebb4 + content/0: 0d82f8784f312f9ac51da136fd47e94a + content/1: da2b445db16c149f56558a4ea876a5f0 + content/2: 34fecbe521c3ea53e9f288437c36b9c3 + content/3: 3e192851df5121e4ee83754ce34be18d + content/4: 4c3a5708af82c1ee42a12d14fd34e950 + content/5: 196439ec46589bfee391896e4792f046 + content/6: cffe5b901d78ebf2000d07dc7579533e + content/7: 7627b5948da98a1c939540dcdbdac0d3 + content/8: 05aed1f03c5717f3bcb10de2935332e8 + content/9: 0093cc341f8b972ae8f69eec3452a501 + 0bf172ef4ee9a2c94a2967d7d320b81b: + meta/title: 330265974a03ee22a09f42fa4ece25f6 + meta/description: e3d54cbedf551315cf9e8749228c2d1c + content/0: eb0ed7078f192304703144f4cac3442f + content/1: 5e26527ccf8fddebe14c951e6c950b48 + content/2: 2ffa2ee71720895e73353a5e4034a46f + content/3: 78cfe3bc9c911dd9aa75f053f768707d + content/4: d5c510cc37588bf8f3d9a91543544721 + content/5: a09e8940e139c0b84886fa7f16f3e690 + content/6: 33f032ae58bee4c0e244491b110a22fe + content/7: ef92830705e75d566cb1c6bbc18a2c82 + content/8: 8f06e4f0147241cadfbae88fb2fc2057 + content/9: c2d4cc3ecf06ac3c07f57c83095e461b + content/10: 3d8114d48bbc82967b2e7c881f571dc0 + c1571f6a328a5083bc542ae1ffc98fac: + meta/title: 41fc753f4232b5628873660d94faba90 + meta/description: b108bba63132a8a2ddbff6b5264ef993 + content/0: eb0ed7078f192304703144f4cac3442f + content/1: 5e26527ccf8fddebe14c951e6c950b48 + content/2: 3c7457d4671bdca75eb8847e77b3d09a + content/3: b3c762557a1a308f3531ef1f19701807 + content/4: bf29da79344f37eeadd4c176aa19b8ff + content/5: ae52879ebefa5664a6b7bf8ce5dd57ab + content/6: 5e1cbe37c5714b16c908c7e0fe0b23e3 + content/7: ce487c9bc7a730e7d9da4a87b8eaa0a6 + content/8: e73f4b831f5b77c71d7d86c83abcbf11 + content/9: 07e064793f3e0bbcb02c4dc6083b6daa + content/10: a702b191c3f94458bee880d33853e0cb + content/11: ce110ab5da3ff96f8cbf96ce3376fc51 + content/12: 83f9b3ab46b0501c8eb3989bec3f4f1b + content/13: e00be80effb71b0acb014f9aa53dfbe1 + content/14: 847a381137856ded9faa5994fbc489fb