Appearance
BDD-149 — Ajouter le type d'entrée "Sources Heriade" dans le bloc Entrée
1. User Story
En tant qu'utilisateur, je veux pouvoir sélectionner une source Heriade déjà configurée dans le menu Sources comme entrée de données d'un workflow, afin de réutiliser directement une source existante sans passer par un fichier ou un dossier.
2. Critères d'acceptance
| # | Critère | Statut |
|---|---|---|
| 1 | Un nouveau type d'entrée "Sources Heriade" est disponible dans le bloc Entrée, aux côtés de Fichier, Dossier et Connexion API | ✅ |
| 2 | L'utilisateur peut sélectionner une source parmi la liste des sources configurées dans le menu Sources | ✅ |
| 3 | La sélection est persistée et conservée entre les sessions | ✅ |
3. Périmètre fonctionnel
Frontend
| Fichier | Rôle |
|---|---|
front/src/components/workflows/WorkflowSourceSelectorPanel.vue | Ajout de l'option heriade_source dans le toggle de sélection du type d'entrée |
front/src/components/workflows/WorkflowHeriadeSourcePanel.vue | Nouveau panneau de sélection d'une source Heriade (liste filtrables via useSourceStore) |
front/src/composables/useWorkflowActiveSourceBindings.js | Ajout du binding activeSourceHeriadeInputUuid pour lire/écrire inputSourceUuid sur le nœud canvas |
front/src/components/workflows/WorkflowNodeConfigModal.vue | Propagation du prop activeSourceHeriadeInputUuid et de l'émission associée |
front/src/pages/admin/workflows/WorkflowEditorPage.vue | Destructuration et passage du binding au modal |
Backend
| Fichier | Rôle |
|---|---|
back/src/api/workflows/workflow-source-heriade-config.ts | Nouveau type WorkflowSourceHeriadeConfig et lecteur readSourceHeriadeFromNodeConfiguration |
back/src/api/workflows/dto/workflow.dto.ts | Activation du champ inputSourceUuid ; description sourceMode étendue à heriade_source |
back/src/api/workflows/workflows.service.ts | Nouvelle méthode resolveSourceIdByUuid ; résolution inputSourceUuid → input_source_id ; configuration JSON sourceHeriade persistée |
back/src/api/workflows/workflow.presenter.ts | Lecture du mode heriade_source dans la réponse canvas ; priorité sur api et document |
Base de données
Aucune migration nécessaire : le champ workflow_nodes.input_source_id (FK vers sources) existait déjà dans le schéma Prisma.
4. Flux de données
Utilisateur sélectionne une source dans WorkflowHeriadeSourcePanel
↓
inputSourceUuid stocké dans canvas node data (via activeSourceHeriadeInputUuid)
↓
Sauvegarde : POST /workflows/:uuid/canvas
↓
Backend : resolveSourceIdByUuid → vérifie accès (scope entreprise/super-admin)
↓
workflow_nodes.input_source_id = id de la source
workflow_nodes.configuration = { sourceHeriade: { sourceMode: 'heriade_source', inputSourceUuid } }
↓
Lecture : GET /workflows/:uuid
↓
presenter : readSourceHeriadeFromNodeConfiguration → sourceMode: 'heriade_source'
↓
Frontend : affiche le nom de la source sélectionnée5. Règles métier
- Périmètre entreprise : identique aux autres types de sources. Un administrateur ne voit que les sources de son entreprise ; un super-admin voit toutes les sources (via
prismaWhereHeriadeSourcesForWorkflowCanvas). - Source inaccessible : si la source n'est plus accessible lors de la sauvegarde, le champ
input_source_idest mis ànullet un warning est loggué (logger.warn). - Source supprimée (soft delete) :
toInputSourceSummaryfiltre les sources avecdeleted_atnon null —inputSourceest retournénulldans ce cas. - Priorité des modes : dans le presenter,
heriade_sourceest évalué avantapietdocument. - Persistance JSON : la configuration
sourceHeriadeest stockée en JSONB dansworkflow_nodes.configuration; elle est la source de vérité du mode.
6. Nouveaux éléments
Type WorkflowSourceHeriadeConfig
typescript
type WorkflowSourceHeriadeConfig = {
sourceMode: 'heriade_source';
inputSourceUuid: string | null;
};Configuration JSON stockée dans workflow_nodes.configuration
json
{
"sourceHeriade": {
"sourceMode": "heriade_source",
"inputSourceUuid": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"
}
}Réponse canvas — nœud source en mode heriade_source
json
{
"id": "node-uuid",
"type": "source",
"sourceMode": "heriade_source",
"inputSource": { "uuid": "src-uuid", "name": "RH Effectifs 2026" },
"inputDocument": null,
"inputFolder": null,
"apiConnection": null,
"apiConnectionUuid": null
}7. Tests associés
Backend (unitaires)
| Fichier | Couverture |
|---|---|
back/src/api/workflows/workflow-source-heriade-config.spec.ts | Lecture configuration JSON : happy path, valeurs manquantes, cas null, types invalides, sourceMode incorrect |
back/src/api/workflows/workflow-presenter.spec.ts | Mode heriade_source : sourceMode retourné, inputSource exposé, source soft-deletée, priorité sur api |
Frontend (unitaires)
| Fichier | Couverture |
|---|---|
front/src/__tests__/composables/useWorkflowActiveSourceBindings.spec.js | activeSourceHeriadeInputUuid : lecture, écriture, nœud non-source, valeur null |
8. Hors périmètre
- Exécution du workflow avec une source Heriade comme entrée (nécessite un ticket dédié côté staging/run).
- Prévisualisation des données de la source sélectionnée dans le panneau d'entrée.
9. Voir aussi
- BDD-159 :
WorkflowHeriadeSourcePanel.vueregroupe désormais les sources par dossier (heriadeFolder), avec un groupe "Sans dossier" pour les sources non classées.
