# Espace Production

Chaque workflow dispose d'un back office pour l'opérer une fois en ligne. Ouvrez-le depuis **Production** dans la barre latérale gauche : un tableau liste vos workflows avec leur pastille de statut (vert Live / jaune Draft / rouge Error), le nombre de runs et la consommation de tokens — cliquez une ligne pour entrer dans l'espace production de cet agent sur `/agents/:id`.

## Mise en ligne

Un agent ne sert du trafic que lorsqu'il est **actif**. Un workflow nouvellement créé démarre en **Draft** (`is_active = false`) — vous devez le passer explicitement en **Live**, ce qui déclenche d'abord un contrôle de complétude. Le passage est bloqué si le graphe contient un Agent sans instructions, un nœud HTTP sans URL, un Send Email sans destinataire, ou un Sub-workflow sans cible. Basculez le toggle Live/Draft sur l'onglet **Overview** (ou dans **Settings**). Inactif, les surfaces publiées (API, widget, shared chat) et les triggers (planification, event listener) cessent de servir l'agent.

Il n'y a plus d'étape « publish » séparée — sauvegardez le workflow dans l'éditeur, puis activez-le et activez les surfaces nécessaires depuis les onglets **Deploy**.

## Les onglets

### Overview

L'état en un coup d'œil sur les 7 derniers jours :

- **Runs (7j)**, **Taux de succès (7j)**, **Latence p95 (7j)**, dernière mise à jour.
- Le badge **Live/Draft** et le toggle d'activation.
- **Erreurs récentes** — les runs échoués avec le nœud fautif et le message d'erreur ; cliquez une ligne pour ouvrir la trace complète.

### Conversations

Les sessions de chat sont **persistées sur toutes les surfaces** — API, widget et shared chat. L'onglet liste toutes les sessions avec :

- Un **filtre par surface** (API / widget / shared chat) et une recherche plein texte sur les messages.
- Cliquez une session pour lire la transcription complète, message par message.

### Traces

Chaque run de l'agent — manuel, planifié, déclenché ou chat. Cliquez un run pour ouvrir sa **timeline par nœud** : input, output, durée et erreur de chaque nœud, dans l'ordre d'exécution. Premier réflexe quand un run de production dérape.

La table Traces est aussi la source de vérité pour les exports de runs Production. Elle fusionne les runs asynchrones durables, les logs manuels de l'éditeur et les runs chat/channel publiés qui n'ont parfois que des événements de trace dans un flux JSON authentifié côté owner :

- `GET /api/v1/prod/{workflow_ref}/traces?limit=50&offset=0&status=failed` retourne les lignes de runs avec `run_id`, `kind`, `status`, `trigger_kind`, timestamps, durée, `failed_node_id`, erreur, et agrégats tokens/coût quand disponibles.
- `GET /api/v1/prod/{workflow_ref}/traces/{run_id}` retourne le résumé du run plus `node_events` avec `node_id`, `node_type`, `label`, `status`, `input_preview`, `output_preview`, erreur, durée, tentatives, et agrégats tokens/coût par nœud.
- `GET /api/v1/prod/{workflow_ref}/traces/export?format=json|csv` retourne une pièce jointe à télécharger. L'export reprend les filtres de la liste (`status`, `limit`, `offset`) et ajoute `node_limit` pour plafonner les événements de nœud embarqués.

Utilisez **Production > Traces** pour télécharger JSON ou CSV directement avec le filtre courant de la table, ou appelez l'endpoint d'export pour des rapports d'incident et jobs d'observabilité externes. La pièce jointe JSON contient `export.schema_version`, `workflow`, `filters`, `count`, `node_event_count`, `node_events_truncated` et `runs[]` ; chaque run reprend les mêmes champs run plus `node_events[]` assaini. Le CSV aplatit les colonnes run et nœud en une ligne par événement de nœud. L'export fichier est redigé et borné avant de sortir de l'API : clés ressemblant à des secrets, tokens, credentials, secrets de callback et valeurs sensibles de query/header/body sont remplacés par `[redacted]`, les previews longues sont tronquées, et le JSON indique `node_events_truncated` quand `node_limit` coupe le payload. Les `run_id` préfixés par `log:` sont des logs d'exécution manuelle ; les runs `chat:` peuvent être synthétisés depuis les événements de nœuds quand aucune ligne durable `WorkflowExecution` n'existe.

### Metrics

Un APM léger pour l'agent :

- **Taux de succès**, latences **p50** et **p95** sur la fenêtre choisie.
- **Statistiques par nœud** — volume d'appels, taux d'échec et latence par nœud, calculés depuis les événements de nœud enregistrés. Idéal pour repérer l'étape lente ou instable du graphe.

### Deploy

Trois sous-onglets, un par surface — voir [Déploiement](#/docs/deployment) pour la référence API complète :

- **API** — activez l'API publiée, générez/révoquez des clés d'agent, copiez un exemple `curl` prêt à l'emploi.
- **Widget** — activez le chat embarqué anonyme et copiez le snippet **iframe**.
- **Shared chat** — page de chat hébergée protégée par un username/mot de passe que vous définissez. Les visiteurs conservent leur **historique de conversation par navigateur** : une barre latérale d'historique sur la page de chat liste leurs sessions précédentes et permet de les reprendre.

### Settings

- **Status** — le même toggle Live/Draft.
- **Execution timeout** — secondes avant qu'un run échoue avec une erreur Timeout (vide = illimité).
- **Surface authentication** — activez/désactivez chaque surface et définissez le username et mot de passe du shared chat.

## Pièges

- La pastille de statut du tableau Production passe au **rouge** quand les derniers runs ont échoué — ouvrez Traces pour comprendre.
- Désactiver un agent ne supprime pas les clés API ; la réactivation les restaure.
- Conversations et traces sont conservées sans limite de rétention — cherchez plutôt que de faire défiler. Les **résultats de run**, en revanche, sont purgés **30 jours** après avoir atteint un état terminal (`completed`/`failed`/`dead`/`cancelled`) ; le `run_id` reste interrogeable jusque-là, après quoi les endpoints de poll renvoient `404`. Les runs `awaiting_approval` ou encore en cours ne sont jamais purgés.

---

*Source: https://agentbuilder.systalink.sn/docs/production — human documentation.*
*Other language: [/docs-md/en/production.md](/docs-md/en/production.md).*
*Machine-readable index: [/llms.txt](/llms.txt).*
