Skip to content

BDD-144 — Sélection de dossier hiérarchique (arborescence) dans le bloc Entrée

Contexte

La sélection de dossier dans le bloc Entrée (mode Dossier) affichait tous les dossiers et sous-dossiers dans un même menu déroulant plat. Il était impossible de distinguer la hiérarchie réelle : Salaires_mensuels et Salaires_mensuels / test apparaissaient au même niveau, rendant la navigation confuse.

Ce ticket remplace la liste plate par une arborescence interactive : cliquer sur un dossier parent révèle ses sous-dossiers, et la sélection reste possible à n'importe quel niveau.

Critères d'acceptance

#CritèreCouvert par
1Les dossiers racines sont affichés en premier niveauuseFolderTree — structure parent/enfant calculée depuis parentUuid
2Cliquer sur un dossier parent révèle ses sous-dossiers (expand/collapse)q-tree + v-model:expanded géré dans useFolderTree
3La sélection est possible à n'importe quel niveau de la hiérarchieWorkflowFolderTreeSelector — clic sur le label du nœud
4L'arborescence reflète fidèlement la structure réelle des dossiers en baseDonnées provenant de GET /folders/workflow-options (champ parentUuid)
5La liste plate est remplacée par l'arborescenceWorkflowDepotFolderSourcePanelq-select remplacé par WorkflowFolderTreeSelector

Architecture

Aucune modification backend

L'endpoint existant GET /folders/workflow-options retourne déjà le champ parentUuid pour chaque dossier. La construction de l'arborescence est entièrement réalisée côté frontend depuis cette liste plate.

Composable useFolderTree

front/src/composables/useFolderTree.js

Responsabilité unique : transformer une liste plate de WorkflowFolderOption en nœuds compatibles q-tree.

  • Regroupement : si plusieurs entreprises sont présentes, un nœud entreprise (isEnterprise: true) est créé au premier niveau. Pour une seule entreprise, les dossiers racine sont affichés directement.
  • Hiérarchie : construction récursive depuis parentUuid — chaque dossier enfant est attaché à son parent.
  • Recherche : filtre les nœuds dont le nom, l'entreprise ou le chemin correspond à la saisie. Les parents des nœuds correspondants sont conservés pour maintenir le chemin visible.
  • Expansion automatique : sans recherche, seuls les nœuds entreprise sont développés. Lors d'une recherche, tous les nœuds contenant une correspondance sont développés automatiquement.

Composant WorkflowFolderTreeSelector

front/src/components/workflows/WorkflowFolderTreeSelector.vue

  • Lit les options et l'état de chargement directement depuis folderStore (workflowFolderOptions, workflowFolderOptionsLoading).
  • Affiche le dossier sélectionné avec un bouton de réinitialisation.
  • Expose un champ de recherche avec filtrage temps réel (via useFolderTree).
  • Utilise q-tree (Quasar v2) avec v-model:expanded pour gérer l'expand/collapse.
  • Les nœuds entreprise ne sont pas sélectionnables.

Props : modelValue (uuid du dossier sélectionné), disabled
Émits : update:modelValue

Modification de WorkflowDepotFolderSourcePanel

front/src/components/workflows/WorkflowDepotFolderSourcePanel.vue

Changement minimal : remplacement du q-select par WorkflowFolderTreeSelector. Le chargement des données (fetchWorkflowFolderOptions), la gestion de l'en-tête, la prévisualisation et les bannières d'erreur restent inchangés.

Fichiers modifiés / créés

FichierTypeModification
front/src/composables/useFolderTree.jsNouveauComposable de construction de l'arborescence
front/src/components/workflows/WorkflowFolderTreeSelector.vueNouveauComposant arborescence de sélection de dossier
front/src/components/workflows/WorkflowDepotFolderSourcePanel.vueModifiéRemplacement du q-select par WorkflowFolderTreeSelector
front/src/__tests__/composables/useFolderTree.spec.jsNouveau11 tests unitaires Vitest du composable