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', id: 'db_save_data',
name: 'Sauvegarder en BDD', name: 'Sauvegarder Données',
category: 'database' as VWBActionCategory, 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: '💾', icon: '💾',
parameters: { 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: { mode: {
type: 'string', type: 'string',
required: false, required: false,
description: 'Mode d\'insertion', description: 'Mode de sauvegarde',
default: 'insert', default: 'cle_valeur',
options: ['insert', 'upsert', 'update'], 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: [ examples: [
{ {
name: 'Enregistrer facture', name: 'Sauvegarder configuration',
description: 'Sauvegarder les données d\'une facture extraite', description: 'Stocker une valeur de configuration',
parameters: { parameters: {
source_variable: 'facture_data', mode: 'cle_valeur',
table_name: 'factures', cle: 'config.derniere_execution',
field_mapping: '{"numero": "num_facture", "montant": "total_ttc", "date": "date_facture"}', valeur: '2026-01-14T10:30:00',
mode: 'insert'
}, },
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: { metadata: {
version: '3.0.0', version: '3.1.0',
author: 'Dom, Alice, Kiro', author: 'Dom, Claude',
createdAt: '2026-01-13', createdAt: '2026-01-14',
updatedAt: '2026-01-13', updatedAt: '2026-01-14',
tags: ['database', 'save', 'persist', 'insert', 'data'], tags: ['database', 'save', 'persist', 'sqlite', 'data'],
complexity: 'advanced', complexity: 'intermediate',
estimatedDuration: 3000, estimatedDuration: 500,
}, },
}, },
{ {
id: 'db_read_data', id: 'db_read_data',
name: 'Lire depuis BDD', name: 'Charger Données',
category: 'database' as VWBActionCategory, 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: '📖', icon: '📖',
parameters: { parameters: {
table_name: { mode: {
type: 'string',
required: true,
description: 'Nom de la table à interroger',
default: '',
},
query_filter: {
type: 'string', type: 'string',
required: false, required: false,
description: 'Filtre SQL WHERE (sans le mot-clé WHERE)', description: 'Mode de chargement',
default: '', default: 'cle_valeur',
options: ['cle_valeur', 'collection', 'sql', 'lister'],
}, },
columns: { cle: {
type: 'string', type: 'string',
required: false, required: false,
description: 'Colonnes à récupérer (séparées par virgule, ou * pour tout)', description: 'C à récupérer pour le mode clé-valeur',
default: '*', 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', type: 'number',
required: false, required: false,
description: 'Nombre maximum de lignes', description: 'Nombre maximum de résultats',
default: 100, default: 100,
min: 1, min: 1,
max: 10000, max: 10000,
}, },
variable_name: { dernier_seulement: {
type: 'string', type: 'boolean',
required: true, required: false,
description: 'Variable pour stocker les résultats', description: 'Récupérer uniquement le dernier enregistrement',
default: 'db_results', default: false,
}, },
connection_name: { requete_sql: {
type: 'string', type: 'string',
required: false, required: false,
description: 'Nom de la connexion BDD configurée', description: 'Requête SQL SELECT pour le mode avancé',
default: 'default', 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: [ examples: [
{ {
name: 'Récupérer client par email', name: 'Charger configuration',
description: 'Chercher un client dans la base par son email', description: 'Récupérer une valeur de configuration',
parameters: { parameters: {
table_name: 'clients', mode: 'cle_valeur',
query_filter: "email = '${email_extrait}'", cle: 'config.derniere_execution',
columns: 'id, nom, prenom, telephone', variable_sortie: 'date_derniere_exec',
variable_name: 'client_info'
}, },
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: { metadata: {
version: '3.0.0', version: '3.1.0',
author: 'Dom, Alice, Kiro', author: 'Dom, Claude',
createdAt: '2026-01-13', createdAt: '2026-01-14',
updatedAt: '2026-01-13', updatedAt: '2026-01-14',
tags: ['database', 'read', 'query', 'select', 'data'], tags: ['database', 'read', 'load', 'sqlite', 'data'],
complexity: 'intermediate', complexity: 'intermediate',
estimatedDuration: 2000, estimatedDuration: 500,
}, },
}, },