Skip to content

BDD-135 — Ajout d’une source API dans un workflow

1. User Story

En tant qu’administrateur, je veux configurer un nœud source d’un workflow avec une connexion API (formulaire ou endpoint), afin de récupérer des données externes et les faire circuler dans mon pipeline de traitement.

2. Critères d’acceptance

#CritèreStatut
1Le nœud source du workflow permet de choisir entre Document (existant) ou Source API
2En mode API : sélection d’une connexion ACTIVE + formulaire ou endpoint
3Un aperçu des données API est affiché avant confirmation
4Le workflow charge les données de l’API et les fait circuler dans le pipeline
5La configuration est sauvegardée avec le workflow

3. Périmètre fonctionnel

Frontend

FichierRôle
front/src/components/workflows/WorkflowSourceSelectorPanel.vueSélecteur source (document vs API) avec toggle
front/src/components/workflows/WorkflowInputSourcePanel.vuePanneau de configuration API : connexion, formulaire/endpoint, preview
front/src/components/workflows/WorkflowApiSourcePreview.vueAperçu des données API (tableau, limité à N lignes)
front/src/components/workflows/WorkflowSourcePreviewTable.vueComposant réutilisable de tableau de preview
front/src/composables/useWorkflowActiveSourceBindings.tsGestion des liaisons source active et config API
front/src/pages/admin/workflows/useWorkflowSourcePreview.tsChargement des données de preview (document ou API)
front/src/stores/workflow-store.jsAction setWorkflowSourceConfig (unifiée document/API)
front/e2e/pages/admin/workflows/workflow-api-source.spec.jsTests E2E configuration source API

Backend

FichierRôle
back/src/api/workflows/workflow-source-api-config.tsService de résolution config API (connexion + formulaire)
back/src/api/workflows/workflow-canvas-api-bindings.tsMapping canvas → données API runtime
back/src/api/workflows/staging/workflow-api-input.service.tsChargement des données API au lancement (similaire à document staging)
back/src/api/workflows/staging/workflow-run-staging-execution.service.tsExécution du staging avec source API (unifiée document/API)
back/src/api/workflows/workflows.service.tssetWorkflowSourceConfig avec validation API
back/src/api/workflows/workflow.presenter.tsMapping sourceConfig (document vs API dans la réponse)
back/src/api/workflows/workflows.controller.tsEndpoint POST /workflows/:uuid/source-config (unifiée)

Base de données

ChangementDétail
Schema workflowssourceConfig JSONBStockage document ou API (XOR : documentUuid ou sourceApiConfig)
sourceApiConfig structure{ connectionUuid, formUuid, formTitle }

4. Endpoints API

MéthodeCheminGuardsDescription
POST/workflows/:uuid/source-configAuthGuard, AdminGuardConfigure la source (document ou API)
GET/workflows/:uuid/source-previewAuthGuard, AdminGuardAperçu des données (document ou API)

Corps POST /workflows/:uuid/source-config — mode document

json
{
  "sourceType": "document",
  "documentUuid": "uuid-doc"
}

Corps POST /workflows/:uuid/source-config — mode API

json
{
  "sourceType": "api",
  "connectionUuid": "uuid-connexion",
  "formUuid": "uuid-formulaire",
  "formTitle": "Réponses Formulaire"
}

Réponse GET /workflows/:uuid/source-preview?sourceType=api&connectionUuid=...&formUuid=...

json
{
  "columns": [
    { "name": "email", "type": "text" },
    { "name": "date_inscription", "type": "date" }
  ],
  "data": [
    { "email": "[email protected]", "date_inscription": "2026-01-15" },
    { "email": "[email protected]", "date_inscription": "2026-02-01" }
  ],
  "rowCount": 2,
  "isSample": true
}

Erreurs courantes

CodeCas
400sourceType manquant ou invalide, documentUuid / connectionUuid incohérent
401Jeton absent / invalide
403Rôle non admin
404Document, connexion ou formulaire introuvable

5. Règles métier implémentées

  • Périmètre entreprise
    • Administrateur : document / connexion limitée à son enterprise_id.
    • Super-admin : voit toutes les entreprises.
  • Modèle unifié :
    • workflows.sourceConfig JSONB contient exactement une source (document ou API).
    • Lors du lancement, le staging résout l’origine (document S3 ou API formulaire) et charge les données.
  • Validation au runtime :
    • Connexion doit être ACTIVE.
    • Formulaire doit contenir au moins une colonne.
    • Document doit exister et être accessible.
  • Preview limité :
    • Maximum N lignes (ex. 20) pour éviter les surcharges.
    • Permet l’affichage des colonnes et d’un échantillon de données.

6. Points de vérification

  • Éditeur workflow : accès au sélecteur source (Document vs API).
  • Bascule en mode API : liste des connexions ACTIVE chargée, sélection → liste des formulaires.
  • Sélection formulaire : preview affiché avec colonnes détectées.
  • Sauvegarde de la config : workflow persisté avec sourceConfig.connectionUuid, sourceConfig.formUuid.
  • Lancement workflow : données API chargées et circulant dans le pipeline (même comportement que document).
  • Erreurs : connexion ou formulaire introuvable → message explicite, workflow non sauvegardé.

7. Tests associés

Backend (unitaires)

  • back/src/api/workflows/workflow-source-api-config.spec.ts
    • Résolution connexion + formulaire : happy path, connexion introuvable, formulaire sans colonnes, connexion non ACTIVE.
    • Validation périmètre entreprise.
  • back/src/api/workflows/staging/workflow-api-input.service.spec.ts
    • Chargement des données API avec limite de preview.
    • Inférence des colonnes depuis réponses.
  • back/src/api/workflows/staging/workflow-run-staging-execution.service.spec.ts
    • Staging unifié document / API : chargement source, construction schema.
    • Cas erreur : connexion inactive, formulaire sans données.
  • back/src/api/workflows/workflows.service.spec.ts
    • setWorkflowSourceConfig document & API (validation, sauvegarde).

Backend (e2e)

  • back/test/e2e/workflows-controller.e2e-spec.ts
    • POST /workflows/:uuid/source-config mode document / API.
    • GET /workflows/:uuid/source-preview avec sourceType=api.
    • Erreurs : 400 (config invalide), 401, 403, 404.

Frontend (unitaires)

  • front/src/__tests__/components/workflows/WorkflowSourceSelectorPanel.spec.js
    • Toggle document / API.
    • Affichage conditionnel formulaires / endpoints.
  • front/src/__tests__/components/workflows/WorkflowInputSourcePanel.spec.js
    • Chargement connexions.
    • Sélection formulaire → appel preview.
    • Erreurs : connexion introuvable.
  • front/src/__tests__/composables/useWorkflowActiveSourceBindings.spec.js
    • Gestion état source active.
    • Synchronisation config document / API.
  • front/src/__tests__/pages/admin/workflows/useWorkflowSourcePreview.spec.js
    • Chargement preview document et API.
    • Limite de lignes respectée.

Frontend (e2e Playwright)

  • front/e2e/pages/admin/workflows/workflow-canvas.spec.js
    • Ouverture sélecteur source, bascule API, sélection formulaire, preview affiché.
    • Sauvegarde et relecture de la config API.
    • Lancement workflow avec source API : données circulant.

8. Documentation technique

9. Hors périmètre

  • Endpoint non-formulaire (API REST générique) — reporté.
  • Synchronisation périodique des sources API — reporté (ticket dédié).
  • Transformation des données API avant chargement — hors scope staging.