Fix: Mise à jour catalogue frontend pour actions database

Synchronisation des paramètres frontend avec le backend:
- db_save_data: modes cle_valeur, collection, sql
- db_read_data: modes cle_valeur, collection, sql, lister

Paramètres alignés avec l'implémentation SQLite.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Dom
2026-01-14 23:33:18 +01:00
parent 473ca84be5
commit 48a883d1e7

View File

@@ -923,141 +923,185 @@ export const STATIC_CATALOG_ACTIONS: StaticCatalogAction[] = [
// ═══════════════════════════════════════════════════════════════════════════
{
id: 'db_save_data',
name: 'Sauvegarder en BDD',
name: 'Sauvegarder Données',
category: 'database' as VWBActionCategory,
description: 'Enregistrer des données extraites dans une base de données',
description: 'Sauvegarder des données de manière persistante (SQLite)',
icon: '💾',
parameters: {
visual_anchor: {
type: 'VWBVisualAnchor',
required: false,
description: 'Zone source des données (optionnel si variable déjà définie)',
default: null,
},
source_variable: {
type: 'string',
required: false,
description: 'Variable contenant les données à sauvegarder',
default: '',
},
table_name: {
type: 'string',
required: true,
description: 'Nom de la table de destination',
default: '',
},
field_mapping: {
type: 'string',
required: false,
description: 'Mapping des champs (JSON): {"champ_source": "colonne_bdd"}',
default: '{}',
},
connection_name: {
type: 'string',
required: false,
description: 'Nom de la connexion BDD configurée',
default: 'default',
},
mode: {
type: 'string',
required: false,
description: 'Mode d\'insertion',
default: 'insert',
options: ['insert', 'upsert', 'update'],
description: 'Mode de sauvegarde',
default: 'cle_valeur',
options: ['cle_valeur', 'collection', 'sql'],
},
cle: {
type: 'string',
required: false,
description: 'Clé unique pour le mode clé-valeur (ex: config.nom_utilisateur)',
default: '',
},
valeur: {
type: 'string',
required: false,
description: 'Valeur à sauvegarder (texte, nombre, JSON)',
default: '',
},
nom_collection: {
type: 'string',
required: false,
description: 'Nom de la collection pour le mode collection',
default: '',
},
donnees: {
type: 'string',
required: false,
description: 'Données JSON pour la collection',
default: '{}',
},
requete_sql: {
type: 'string',
required: false,
description: 'Requête SQL pour le mode avancé (INSERT, UPDATE)',
default: '',
},
workflow_id: {
type: 'string',
required: false,
description: 'ID du workflow pour filtrage',
default: '',
},
},
examples: [
{
name: 'Enregistrer facture',
description: 'Sauvegarder les données d\'une facture extraite',
name: 'Sauvegarder configuration',
description: 'Stocker une valeur de configuration',
parameters: {
source_variable: 'facture_data',
table_name: 'factures',
field_mapping: '{"numero": "num_facture", "montant": "total_ttc", "date": "date_facture"}',
mode: 'insert'
mode: 'cle_valeur',
cle: 'config.derniere_execution',
valeur: '2026-01-14T10:30:00',
},
expectedResult: 'Une nouvelle ligne est créée dans la table factures',
expectedResult: 'La valeur est sauvegardée avec la clé',
},
{
name: 'Logger résultat extraction',
description: 'Ajouter un résultat à une collection',
parameters: {
mode: 'collection',
nom_collection: 'resultats_extraction',
donnees: '{"nb_lignes": 150, "erreurs": 0}',
},
expectedResult: 'Les données sont ajoutées à la collection',
},
],
documentation: 'Permet de persister des données extraites visuellement dans une base de données relationnelle.',
documentation: 'Sauvegarde persistante dans SQLite. Mode clé-valeur pour configs simples, collection pour historique, SQL pour avancé. Base par défaut: ~/.vwb/data.db',
metadata: {
version: '3.0.0',
author: 'Dom, Alice, Kiro',
createdAt: '2026-01-13',
updatedAt: '2026-01-13',
tags: ['database', 'save', 'persist', 'insert', 'data'],
complexity: 'advanced',
estimatedDuration: 3000,
version: '3.1.0',
author: 'Dom, Claude',
createdAt: '2026-01-14',
updatedAt: '2026-01-14',
tags: ['database', 'save', 'persist', 'sqlite', 'data'],
complexity: 'intermediate',
estimatedDuration: 500,
},
},
{
id: 'db_read_data',
name: 'Lire depuis BDD',
name: 'Charger Données',
category: 'database' as VWBActionCategory,
description: 'Lire des données depuis une base de données',
description: 'Charger des données sauvegardées précédemment',
icon: '📖',
parameters: {
table_name: {
type: 'string',
required: true,
description: 'Nom de la table à interroger',
default: '',
},
query_filter: {
mode: {
type: 'string',
required: false,
description: 'Filtre SQL WHERE (sans le mot-clé WHERE)',
default: '',
description: 'Mode de chargement',
default: 'cle_valeur',
options: ['cle_valeur', 'collection', 'sql', 'lister'],
},
columns: {
cle: {
type: 'string',
required: false,
description: 'Colonnes à récupérer (séparées par virgule, ou * pour tout)',
default: '*',
description: 'C à récupérer pour le mode clé-valeur',
default: '',
},
limit: {
valeur_defaut: {
type: 'string',
required: false,
description: 'Valeur par défaut si la clé n\'existe pas',
default: '',
},
nom_collection: {
type: 'string',
required: false,
description: 'Nom de la collection pour le mode collection',
default: '',
},
limite: {
type: 'number',
required: false,
description: 'Nombre maximum de lignes',
description: 'Nombre maximum de résultats',
default: 100,
min: 1,
max: 10000,
},
variable_name: {
type: 'string',
required: true,
description: 'Variable pour stocker les résultats',
default: 'db_results',
dernier_seulement: {
type: 'boolean',
required: false,
description: 'Récupérer uniquement le dernier enregistrement',
default: false,
},
connection_name: {
requete_sql: {
type: 'string',
required: false,
description: 'Nom de la connexion BDD configurée',
default: 'default',
description: 'Requête SQL SELECT pour le mode avancé',
default: '',
},
prefixe_cle: {
type: 'string',
required: false,
description: 'Préfixe pour lister les clés (mode lister)',
default: '',
},
variable_sortie: {
type: 'string',
required: false,
description: 'Variable pour stocker les résultats',
default: 'donnees_chargees',
},
},
examples: [
{
name: 'Récupérer client par email',
description: 'Chercher un client dans la base par son email',
name: 'Charger configuration',
description: 'Récupérer une valeur de configuration',
parameters: {
table_name: 'clients',
query_filter: "email = '${email_extrait}'",
columns: 'id, nom, prenom, telephone',
variable_name: 'client_info'
mode: 'cle_valeur',
cle: 'config.derniere_execution',
variable_sortie: 'date_derniere_exec',
},
expectedResult: 'Les données du client sont stockées dans la variable',
expectedResult: 'La valeur est chargée dans la variable',
},
{
name: 'Historique des extractions',
description: 'Récupérer les 10 derniers résultats',
parameters: {
mode: 'collection',
nom_collection: 'resultats_extraction',
limite: 10,
variable_sortie: 'historique',
},
expectedResult: 'Les derniers résultats sont chargés',
},
],
documentation: 'Permet de récupérer des données depuis la base pour les utiliser dans le workflow.',
documentation: 'Charge des données depuis SQLite. Mode clé-valeur pour valeurs simples, collection pour historique, SQL pour requêtes personnalisées, lister pour voir les clés disponibles.',
metadata: {
version: '3.0.0',
author: 'Dom, Alice, Kiro',
createdAt: '2026-01-13',
updatedAt: '2026-01-13',
tags: ['database', 'read', 'query', 'select', 'data'],
version: '3.1.0',
author: 'Dom, Claude',
createdAt: '2026-01-14',
updatedAt: '2026-01-14',
tags: ['database', 'read', 'load', 'sqlite', 'data'],
complexity: 'intermediate',
estimatedDuration: 2000,
estimatedDuration: 500,
},
},