
# Vue d'ensemble des automatisations

Les automatisations constituent le moteur de workflows de Sovrium. Chaque automatisation associe **un déclencheur** (l'événement qui la démarre) à une **liste ordonnée d'actions** (les étapes qu'elle exécute). Lorsque le déclencheur se déclenche, les actions s'exécutent séquentiellement — en transmettant les données vers l'avant via des variables de gabarit — jusqu'à ce que le workflow se termine, s'arrête ou échoue.

Les automatisations sont déclarées dans le tableau de premier niveau `app.automations[]`. Les déclencheurs réagissent aux changements d'enregistrements, aux planifications, aux webhooks entrants, aux événements d'authentification, aux soumissions de formulaires, aux boutons manuels, aux appels de sous-workflows, aux échecs d'autres automatisations et aux commentaires. Les actions couvrent plus de 20 familles : HTTP, CRUD d'enregistrements, e-mail, IA, opérations sur fichiers, contrôle de flux, approbations, et plus encore.

```yaml
automations:
  - name: new-order-alert
    label: Notify the team about new orders
    trigger:
      type: record
      table: orders
      events: [create]
    actions:
      - name: notifyTeam
        type: email
        operator: send
        props:
          to: '{{trigger.data.owner_email}}'
          subject: 'New order {{trigger.data.id}}'
          body: 'Amount: ${{trigger.data.amount}}'
    timeout: 60000
```

## Anatomie

Une automatisation possède exactement un `trigger` et au moins une entrée dans `actions`. Tout le reste — timeout, retry, concurrence, tags, permissions, exposition à l'IA — est optionnel.

| Propriété     | Description                                                                                                                                                                                                        |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `name`        | Identifiant unique en kebab-case (`^[a-z][a-z0-9-]*$`, max 100 caractères). Utilisé dans les URL de webhook et comme cible de `automation/call`.                                                                   |
| `label`       | Libellé lisible affiché dans l'interface d'administration.                                                                                                                                                         |
| `description` | Description en texte libre de ce que fait l'automatisation.                                                                                                                                                        |
| `enabled`     | Booléen. Lorsqu'il vaut `false`, l'automatisation est enregistrée mais ne se déclenche jamais. Vaut `true` par défaut.                                                                                             |
| `trigger`     | L'événement unique qui démarre ce workflow. Voir [Déclencheurs](/fr/docs/automation-triggers).                                                                                                                     |
| `actions`     | Tableau ordonné d'étapes d'action (minimum 1). Les étapes s'exécutent séquentiellement sauf si une action `path`/`loop` crée une branche. Voir [Vue d'ensemble des actions](/fr/docs/automation-actions-overview). |
| `retry`       | Politique de relance au niveau de l'automatisation appliquée à l'ensemble de l'exécution. Voir [Relance et échec](/fr/docs/automation-retry-failure).                                                              |
| `timeout`     | Timeout total de l'exécution en millisecondes (1000–900000, par défaut 300000).                                                                                                                                    |
| `concurrency` | `{ limit }` — nombre maximal d'exécutions simultanées de cette automatisation (1–50). Voir la note sur la concurrence ci-dessous.                                                                                  |
| `tags`        | Tableau de chaînes de caractères pour organiser et filtrer les automatisations.                                                                                                                                    |
| `permissions` | `{ trigger }` — qui peut invoquer manuellement cette automatisation (`all`, `authenticated`, ou un tableau de rôles).                                                                                              |
| `aiAccess`    | Déclare une automatisation à **déclenchement manuel** comme invocable via le serveur MCP de Sovrium. La définir sur un déclencheur non manuel est une erreur de décodage.                                          |

:::callout
**Les données circulent entre les étapes via des variables de gabarit.** Référencez la charge utile du déclencheur avec `{{trigger.data.fieldName}}`, la sortie d'une étape précédente avec `{{stepName.result}}`, un secret d'environnement avec `$env.VAR_NAME` (jamais journalisé), et une information d'identification stockée avec `$connection.NAME`. Voir [Helpers de gabarit](#variables-de-gabarit) ci-dessous.
:::

## Variables de gabarit

Chaque propriété de chaîne de caractères dans une action peut interpoler des valeurs à l'exécution. Les sources de résolution sont :

| Source                      | Syntaxe                    | Notes                                                                                                                                                     |
| --------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Charge utile du déclencheur | `{{trigger.data.field}}`   | Les données transportées par le déclencheur (ligne d'enregistrement, corps de webhook, valeurs de formulaire, …).                                         |
| Étape précédente            | `{{stepName.result}}`      | La sortie de toute action antérieure, référencée par son `name`.                                                                                          |
| Variable d'environnement    | `$env.VAR_NAME`            | Résolue depuis `app.env`. Masquée dans les journaux. Voir [Variables d'environnement](/fr/docs/automation-env-vars).                                      |
| Connexion                   | `$connection.NAME`         | Informations d'identification résolues pour un service externe. Voir [Connexions](/fr/docs/automation-connections).                                       |
| Fonctions helper            | `{{helperName arg "lit"}}` | Plus de 100 helpers de formatage (texte, nombre, date, logique, collection, encodage). Imbriquez avec des parenthèses : `{{uppercase (trim step.text)}}`. |

## Concurrence

Chaque automatisation possède un sémaphore FIFO indépendant. Lorsque `concurrency.limit` est défini, les déclencheurs entrants au-delà de la limite sont persistés en `queued` et promus en `running` à mesure que des créneaux en cours d'exécution se libèrent. Sans ce bloc, la variable d'environnement globale `AUTOMATION_CONCURRENCY_DEFAULT` (par défaut 5) s'applique. La mise en file d'attente est en mémoire et mono-processus — conçue pour le modèle de déploiement mono-locataire de Sovrium.

## Surface de configuration

Les automatisations côtoient trois blocs frères de premier niveau qu'elles référencent régulièrement :

| Bloc              | Objectif                                                                     | Page                                                               |
| ----------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| `app.automations` | Les workflows eux-mêmes.                                                     | cette page                                                         |
| `app.actions`     | Modèles d'action réutilisables référencés via l'action `ref`.                | [Vue d'ensemble des actions](/fr/docs/automation-actions-overview) |
| `app.connections` | Informations d'identification stockées pour les appels HTTP/IA authentifiés. | [Connexions](/fr/docs/automation-connections)                      |
| `app.env`         | Variables d'environnement / secrets déclarés.                                | [Variables d'environnement](/fr/docs/automation-env-vars)          |

## Pages connexes

- [Déclencheurs](/fr/docs/automation-triggers) — les 9 types de déclencheurs.
- [Vue d'ensemble des actions](/fr/docs/automation-actions-overview) — le modèle d'action et les ~22 familles.
- [Exécutions](/fr/docs/automation-runs) — surveillance de l'historique d'exécution et des statuts.
- [Relance et échec](/fr/docs/automation-retry-failure) — politiques de relance, timeouts, idempotence.
- [Connexions](/fr/docs/automation-connections) — informations d'identification OAuth2, clé API, basic, bearer.
- [Variables d'environnement](/fr/docs/automation-env-vars) — secrets pour les automatisations.
