diff --git a/client/src/pages/AutomationRules.tsx b/client/src/pages/AutomationRules.tsx index dadac49..de70b16 100644 --- a/client/src/pages/AutomationRules.tsx +++ b/client/src/pages/AutomationRules.tsx @@ -374,23 +374,204 @@ export default function AutomationRules() { - {editingRule ? "Modifier la règle" : "Nouvelle règle"} + + {wizardMode && !editingRule ? ( +
+ Assistant de création + Étape {wizardStep}/3 +
+ ) : ( + editingRule ? "Modifier la règle" : "Nouvelle règle" + )} +
- Définissez les conditions (SI) et les actions (ALORS) pour le remplissage automatique + {wizardMode && !editingRule ? ( + wizardStep === 1 ? "Définissez les conditions pour déclencher la règle" : + wizardStep === 2 ? "Choisissez les champs à remplir automatiquement" : + "Vérifiez et validez votre règle" + ) : ( + "Définissez les conditions (SI) et les actions (ALORS) pour le remplissage automatique" + )}
- {/* Rule Name */} -
- - setRuleName(e.target.value)} - placeholder="Ex: Factures Microsoft CAPEX" - /> -
+ {wizardMode && !editingRule ? ( + // WIZARD MODE - Étapes guidées +
+ {wizardStep === 1 && ( + // ÉTAPE 1: Nom et conditions simples +
+
+ + setRuleName(e.target.value)} + placeholder="Ex: Factures Microsoft CAPEX" + /> +
+ +
+

Quand appliquer cette règle ?

+

Définissez les conditions pour déclencher la règle

+ +
+
+ +
+ + { + if (conditions.length === 0) { + setConditions([{ field: "supplierName", operator: "contains", value: e.target.value }]); + } else { + updateCondition(0, "value", e.target.value); + } + }} + placeholder="Ex: Microsoft, Amazon, etc." + className="flex-1" + /> +
+
+
+
+
+ )} + + {wizardStep === 2 && ( + // ÉTAPE 2: Actions +
+
+

Que voulez-vous remplir automatiquement ?

+

Sélectionnez les champs à compléter

+
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ )} + + {wizardStep === 3 && ( + // ÉTAPE 3: Révision +
+
+

Récapitulatif de la règle

+

Vérifiez les informations avant de créer

+
+ + + +
+
Nom
+
{ruleName || "(non défini)"}
+
+ +
+
Condition
+
+ Le fournisseur {conditions[0]?.operator === "contains" ? "contient" : conditions[0]?.operator === "equals" ? "est égal à" : "commence par"} "{conditions[0]?.value || "(vide)"}" +
+
+ +
+
Actions
+
+ {actions.typeAchat &&
• Type d'achat : {actions.typeAchat}
} + {actions.serviceConcerne &&
• Service : {actions.serviceConcerne}
} + {actions.ventilationComptable &&
• Ventilation : {actions.ventilationComptable}
} + {!actions.typeAchat && !actions.serviceConcerne && !actions.ventilationComptable && ( +
Aucune action définie
+ )} +
+
+
+
+
+ )} +
+ ) : ( + // MODE AVANCÉ - Formulaire complet +
+ {/* Rule Name */} +
+ + setRuleName(e.target.value)} + placeholder="Ex: Factures Microsoft CAPEX" + /> +
{/* Conditions */}
@@ -529,9 +710,50 @@ export default function AutomationRules() {
+ + )} + {wizardMode && !editingRule ? ( + // Navigation wizard + <> + + + + ) : ( + // Navigation mode avancé + <> - + + + )}
diff --git a/todo.md b/todo.md index 8abb834..ff4cfe5 100644 --- a/todo.md +++ b/todo.md @@ -325,3 +325,11 @@ - [x] Afficher les résultats du test (nombre de factures affectées) - [x] Ajouter le bouton "Dupliquer" dans la liste des règles - [x] Tester toutes les nouvelles fonctionnalités + +## Assistant de création guidée (interface différenciée) +- [x] Créer l'interface de l'assistant avec navigation par étapes (1/2/3) +- [x] Implémenter l'étape 1 : Questions simples pour les conditions +- [x] Implémenter l'étape 2 : Sélection des actions à appliquer +- [x] Implémenter l'étape 3 : Récapitulatif et validation +- [x] Ajouter la navigation Précédent/Suivant entre les étapes +- [x] Tester le parcours complet de l'assistant