- Bouton "Parcourir..." ouvre l'explorateur natif du navigateur
- Upload vers /api/v3/upload-excel, sauvegarde dans data/uploads/
- Nom de table auto-suggéré depuis le nom du fichier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ExcelImporter : import .xlsx → SQLite auto (détection types, batch insert)
- DBIterator : lecture ligne par ligne avec filtre/tri/limite
- VWB actions : "Importer Excel" + "Pour chaque ligne" dans la palette
- DAG executor : pré-exécution import, boucle foreach avec injection
${current_row.colonne} dans les étapes dépendantes
- 36 tests unitaires Excel/DB (tous passent)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Refonte majeure du système Agent Chat et ajout de nombreux modules :
- Chat unifié : suppression du dual Workflows/Agent Libre, tout passe par /api/chat
avec résolution en 3 niveaux (workflow → geste → "montre-moi")
- GestureCatalog : 38 raccourcis clavier universels Windows avec matching sémantique,
substitution automatique dans les replays, et endpoint /api/gestures
- Mode Copilot : exécution pas-à-pas des workflows avec validation humaine via WebSocket
(approve/skip/abort) avant chaque action
- Léa UI (agent_v0/lea_ui/) : interface PyQt5 pour Windows avec overlay transparent
pour feedback visuel pendant le replay
- Data Extraction (core/extraction/) : moteur d'extraction visuelle de données
(OCR + VLM → SQLite), avec schémas YAML et export CSV/Excel
- ReplayVerifier (agent_v0/server_v1/) : vérification post-action par comparaison
de screenshots, avec logique de retry (max 3)
- IntentParser durci : meilleur fallback regex, type GREETING, patterns améliorés
- Dashboard : nouvelles pages gestures, streaming, extractions
- Tests : 63 tests GestureCatalog, 47 tests extraction, corrections tests existants
- Dépréciation : /api/agent/plan et /api/agent/execute retournent HTTP 410,
suppression du code hardcodé _plan_to_replay_actions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Le mode "Agent Libre" envoyait les actions localement (Linux) au lieu
du PC Windows. Maintenant les plans LLM sont convertis en actions
normalisées et envoyés au streaming server via POST /replay/raw.
L'Agent V1 les exécute sur la bonne machine.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Audit et corrections du Web Dashboard (port 5001) :
- Désactiver le bouton "Restaurer" (rollback) car la route /api/version/rollback
n'est pas implémentée côté serveur
- Corriger le parsing de /api/version : les données sont dans version.version (dict),
pas directement dans version (string)
- Corriger le parsing de /api/version/system-info : données imbriquées dans
system_info.system, pas directement à la racine
- Corriger le parsing de /api/backup/stats : utiliser stats.*.file_count au lieu
de categories.*.count qui n'existe pas
- Corriger le fallback correction packs pour utiliser le bon format de stats
- Corriger le parsing de faiss.total_vectors dans l'onglet Apprentissage
- Remplacer les données simulées dans loadActionTypeStats() par un placeholder honnête
- Corriger le HTML invalide (double attribut style sur configTestResults)
- Rendre switchTab() plus robuste avec event.target.closest('.tab')
- Réduire le polling services de 5s à 15s pour limiter la charge
- Mettre à jour SERVICES_CONFIG (ports corrects, .venv/ au lieu de venv_v3/)
- Ajouter le proxy streaming et 4 services manquants dans la config
- Ajouter 19 tests unitaires pour les routes du dashboard
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- IntentParser: ajout pattern "expression" pour capturer 5+2, 100*3, etc.
- demo_calculator.json: text "${expression}=" avec default "2+2"
→ l'utilisateur peut dire "calcule 5+2" et le paramètre est injecté
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Distinguer serveur injoignable (fallback local OK) vs serveur UP mais
refus (pas de session Agent V1, workflow inconnu) → message d'erreur
explicite au lieu d'ouvrir un navigateur sur Linux
- _try_streaming_server_replay retourne {"error": ...} au lieu de None
quand le serveur répond avec un code d'erreur HTTP
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Session ID vide pour auto-détection de la session Agent V1 active
- Timeout augmenté de 5s à 15s pour la requête replay
- Ajout _poll_replay_progress : suit la progression réelle du replay
(polling /replay/{id} toutes les 2s, max 120s) au lieu de marquer
faussement "terminé avec succès" immédiatement
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Le fallback d'exécution locale ne mettait pas execution_status["running"]
à True, ce qui causait l'arrêt immédiat de la boucle d'exécution avec
"Exécution annulée par l'utilisateur" dès la première étape.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Le chat listait les workflows mais répondait "Je n'ai pas d'information"
quand l'utilisateur demandait des détails. Le handler QUERY utilise
maintenant SemanticMatcher.find_workflow() + get_workflow_help() pour
retourner description, tags et paramètres supportés.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Suppression de 472 fichiers temporaires, scripts de test one-shot,
fichiers de status/progress, et documentation auto-générée qui
n'auraient jamais dû être commités.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
docTR est plus performant et mieux maintenu. Crée un service OCR
partagé (singleton paresseux) utilisé par verify_text_content et
extraire_tableau, avec les mêmes signatures et fallbacks.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Supprimer le bloc debug qui écrivait dans /tmp/vwb_debug.log
- Corriger l'import UIElement (core.models.ui_element au lieu de
screen_state) — supprime le warning au démarrage
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Nouveaux composants:
- AIModelSelector: sélection du modèle Ollama avec détection auto
- WorkflowValidation: validation des étapes avant exécution
- ollamaService: service de communication avec Ollama (liste modèles)
Améliorations:
- PropertiesPanel: intégration sélecteur IA, champs prompt/température
- VariableManager: support variables runtime et substitution {{var}}
- ConfidenceDashboard: refactoring et simplification
- App.tsx: routing et intégration des nouveaux composants
- api.ts: endpoints validate et export-training
- types.ts: types pour modèles IA et validation
- styles.css: styles pour les nouveaux composants
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend:
- analyser_avec_ia.py: centraliser URL Ollama via os.environ.get()
- action_contracts.py: assouplir le contrat ai_analyze_text (mode texte
sans ancre visuelle, accepter prompt ou analysis_prompt)
- intelligent_executor.py: supprimer le fallback coordonnées statiques
quand la vision échoue — renvoyer not_found pour self-healing
- workflow.py: ajouter endpoints validate et export-training
run.sh:
- Corriger les ports (3000 → 3002) et le venv (venv_v3 → .venv)
- Lancer run_v4.sh au lieu de l'ancien run.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 1 — Code mort et duplication :
- Supprimer catalog_routes.py (-1832 lignes, doublon de v2_vlm)
- Mettre à jour app.py et app_lightweight.py vers catalog_routes_v2_vlm
- Nettoyer 9 imports inutilisés dans catalog_routes_v2_vlm.py
- Supprimer get_required_params inutilisé dans execute.py
Phase 2 — Centraliser la configuration :
- Ollama URL via os.environ.get() dans verify_text_content.py et extraire_tableau.py
- MODEL_PATH relatif au projet + var env UI_DETR_MODEL_PATH dans ui_detection_service.py
Phase 3 — Thread-safety de l'exécution :
- Ajouter _execution_lock (RLock) pour protéger _execution_state
- Remplacer le polling self-healing par threading.Event
- Initialiser 'variables' dans le dict initial (plus de création dynamique)
- Corriger bare except → except Exception as db_err avec message
Phase 4 — Logging minimal :
- Ajouter logger dans execute.py, remplacer print() critiques par logger
- Configurer RotatingFileHandler (5MB, 3 backups) dans app.py
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
## Nouvelles fonctionnalités
### 1. SeeClick Adapter (visual grounding fallback)
- Nouvel adapter pour le modèle SeeClick (HuggingFace)
- Intégré dans la chaîne de fallback: CLIP → Template → SeeClick → Static
- Localise les éléments GUI à partir de descriptions textuelles
### 2. Self-Healing Interactif
- Dialogue qui propose des alternatives quand l'ancre n'est pas trouvée
- L'utilisateur peut choisir: candidat alternatif, coords statiques, ou sauter
- Nouveaux endpoints: /healing/status, /healing/choose, /healing/candidates
- État "waiting_for_choice" pour mettre l'exécution en pause
### 3. Dashboard Confiance (temps réel)
- Affiche les scores de confiance pendant l'exécution
- Montre: méthode utilisée, distance, taux de succès
- Interface pliable en bas à droite
- Visible uniquement en mode intelligent/debug
## Fichiers ajoutés
- core/detection/seeclick_adapter.py
- frontend_v4/src/components/SelfHealingDialog.tsx
- frontend_v4/src/components/ConfidenceDashboard.tsx
## Fichiers modifiés
- core/detection/__init__.py
- backend/services/intelligent_executor.py
- backend/api_v3/execute.py
- frontend_v4/src/App.tsx
- frontend_v4/src/services/api.ts
- docs/VISION_RPA_INTELLIGENT.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Toggle 3 modes dans le header: Basique (coords fixes), Intelligent (vision IA), Debug (overlay)
- Service UI-DETR-1 pour détection d'éléments UI (510MB model, ~800ms/image)
- API endpoints: /api/ui-detection/detect, /preload, /status, /find-element
- Overlay des bboxes détectées en mode Debug (miniature + plein écran)
- Clic sur élément détecté pour le sélectionner comme ancre
- Document de vision produit: docs/VISION_RPA_INTELLIGENT.md
- Configuration CORS étendue pour ports locaux
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Interface style n8n avec React Flow pour le canvas
- 22 actions organisées en 7 catégories (souris, clavier, attente, données, logique, IA, validation)
- 4 points d'accroche par nœud (haut, bas, droite, gauche) pour workflows complexes
- Panel de propriétés complet avec tous les paramètres pour chaque type d'action
- Capture d'écran plein écran avec sélection d'ancre
- Thème sombre professionnel
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
API = Source de vérité unique (SQLite + Flask)
- Backend: API v3 avec session, workflow, capture, execute
- Frontend: Vanilla TypeScript, pas de state local
- Contrats stricts pour les actions RPA
- Drag & drop pour réorganiser les étapes
- Insertion d'étapes entre deux existantes
- Bibliothèque de captures (sessionStorage)
- Exécution avec coordonnées statiques (pyautogui)
Fonctionne mais fragile (coordonnées fixes, pas de détection visuelle)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Ajouter méthode updateWorkflow (PUT) dans apiClient pour les
workflows existants
- Utiliser PUT au lieu de POST pour l'auto-sauvegarde des workflows
- Ajouter tracking du scale dans VisualSelector pour convertir les
coordonnées du canvas vers l'image originale
- Corriger le bounding_box pour correspondre aux dimensions réelles
de l'image capturée
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Ajouter liste des 20 types d'actions VWB connus pour détection fiable
- Corriger isVWBStep() pour vérifier step.type en priorité
- Corriger extraction actionId (step.type au lieu de "unknown")
- Résoudre problème stale closure en passant steps en paramètre
- Ajouter logs de débogage détaillés pour suivi exécution
Les étapes type_text sont maintenant correctement exécutées au lieu
d'être simulées.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Nouveau module autonomous_planner.py pour planification intelligente
- Utilise Qwen via Ollama pour décomposer les tâches en actions
- Actions supportées: open_url, click, type_text, hotkey, scroll, wait
- Intégration OWL-v2 et VLM pour détection visuelle intelligente
- Nouvelle interface chat conversationnelle (chat.html)
- Prompt LLM générique adaptable à toute demande
- Endpoints API: /api/agent/plan, /api/agent/execute, /api/agent/status
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Section Sauvegardes: export par catégorie (workflows, corrections, modèles, config) et backup complet
- Section Système: infos version, Python, OS, points de restauration, upload packages mise à jour
- Section Corrections: gestion des Correction Packs (liste, création, export, stats)
- Section Apprentissage: stats corpus FAISS, sessions traitées, graphiques évolution, top corrections
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changements:
- Ajouter ensure_dev_config() qui génère des clés temporaires en dev
- Ajouter paramètre strict=True/False à validate_production_security()
- En développement: génère auto ENCRYPTION_PASSWORD et SECRET_KEY
- En production: comportement inchangé (bloque si config invalide)
server/api_upload.py:
- Utilise strict=is_production_environment()
- En dev: warning seulement, continue le démarrage
- En prod: sys.exit(1) si config invalide
Résout les problèmes de démarrage en développement sans config manuelle.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Clarifications modèle de déploiement:
- Solution 100% on-premise ("boîte noire")
- Aucune connexion externe, aucun service cloud
- Compatible air-gap (environnements déconnectés)
- Accès bases de données en lecture seule uniquement
Nouvelle section 11 - Continuité de service et sauvegardes:
- SLA simple (pas de PCA/PRA - produit non vital)
- Responsabilité client pour les sauvegardes
- API backup Dashboard documentées (workflows, correction packs, config, logs)
- Export modèles entraînés opt-in (anonymisés)
- Procédure mise à jour hors-ligne
- Procédure rollback
Précisions conformité:
- Plan d'Assurance Sécurité (PAS) mentionné
- IA Act européen ajouté aux certifications visées
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
API Backup (/api/backup/*):
- GET /stats - Statistiques des données disponibles
- POST /full - Backup complet (avec option modèles)
- GET /workflows - Export workflows uniquement
- GET /correction-packs - Export correction packs
- GET /trained-models - Export modèles entraînés (opt-in, anonymisés)
- GET /config - Export configuration (sanitisée)
API Version (/api/version/*):
- GET / - Version actuelle du système
- GET /system-info - Information système complète
- GET /check-update - Vérifier les mises à jour
- GET /backups - Lister les backups de version
- POST /create-backup - Créer point de restauration
- POST /upload-update - Uploader un package de mise à jour
Ces API permettent aux clients de:
- Télécharger leurs sauvegardes depuis le Dashboard
- Vérifier et installer les mises à jour
- Créer des points de restauration et rollback
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
BackupExporter (backup_exporter.py):
- Export complet (workflows, correction packs, coaching sessions, configs)
- Export sélectif (workflows only, configs only, etc.)
- Export modèles entraînés opt-in (embeddings, FAISS anonymisés)
- Sanitisation des configs (masquage des secrets)
- Statistiques de backup disponibles
VersionManager (version_manager.py):
- Suivi de version avec composants
- Vérification des mises à jour (manifest local)
- Vérification intégrité packages (SHA-256)
- Création/restauration de backups pour rollback
- Information système complète
Ces modules supportent les fonctionnalités Dashboard:
- Téléchargement sauvegardes par le client
- Mise à jour du système
- Rollback en cas de problème
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Réécrire logger.py avec format cohérent: "timestamp | level | component | message"
- Ajouter ANSIStripFilter pour nettoyer les codes couleur des logs
- Implémenter _clean_component_name() pour éviter les noms de fichiers corrompus
- Configurer rotation des fichiers (10MB, 5 backups)
- Rendre imports Prometheus optionnels dans __init__.py
- Réduire bruit des librairies externes (werkzeug, urllib3, etc.)
Corrige les problèmes de fichiers logs corrompus (!0.log, #0.log, %0.log, etc.)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fix TypeError in create_flat_index() and create_ivf_index():
- Line 678: dimension= → dimensions=
- Line 692: dimension= → dimensions=
The FAISSManager.__init__() expects 'dimensions' (plural), not 'dimension'.
This bug prevented using the factory functions to create FAISS indexes.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CoachingDecision enum (ACCEPT, REJECT, CORRECT, EXECUTE_MANUAL, SKIP)
- Add CoachingResponse dataclass for user decisions
- Add WAITING_COACHING state to ExecutionState
- Implement _request_coaching_decision() with callback or polling support
- Implement submit_coaching_decision() for external API/UI submission
- Implement _apply_coaching_correction() for applying user corrections
- Implement _record_coaching_feedback() integrating with:
- TrainingDataCollector for session recording
- FeedbackProcessor for statistics
- CorrectionPackIntegration for automatic correction capture
- Add get_coaching_stats() for session statistics
- Add 17 unit tests for COACHING functionality
COACHING mode now:
1. Suggests actions to user
2. Waits for user decision (accept/reject/correct/manual/skip)
3. Applies corrections if provided
4. Records all feedback for learning
5. Propagates corrections to Correction Packs automatically
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CorrectionPackIntegration class to bridge learning components
- Modify TrainingDataCollector to auto-propagate corrections to packs
- Modify FeedbackProcessor to capture corrections on INCORRECT/PARTIAL feedback
- Add convenience functions: get_correction_pack_integration(), capture_coaching_correction()
- Add 19 integration tests (all passing)
Corrections made during COACHING mode are now automatically captured
into a dedicated "auto_captured_corrections" pack for cross-workflow reuse.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement a complete system for capitalizing user corrections across multiple
workflows and sessions. This enables automatic application of learned fixes
when similar failures occur in different contexts.
New components:
- core/corrections/models.py: CorrectionKey, Correction, CorrectionPack models
- core/corrections/correction_repository.py: JSON storage with atomic writes
- core/corrections/aggregator.py: Aggregation by hash and quality filtering
- core/corrections/correction_pack_service.py: CRUD, export/import, versioning
- backend/api/correction_packs.py: REST API with 15 endpoints
Features:
- MD5-based key hashing for correction deduplication
- Export/import in JSON and YAML formats
- Version history with rollback support
- Cross-workflow pattern detection
- Integration with SelfHealingEngine for automatic application
- 29 unit tests (all passing)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document de référence avec :
- Évaluation des 3 moats (Techno 85%, Data 60%, Déploiement 50%)
- Inventaire fonctionnel complet (179 fichiers core)
- Points de friction identifiés
- Actions requises court/moyen/long terme
- Références techniques (ports, commandes, structure)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Ajouter API /api/services pour lister/démarrer/arrêter les services
- Ajouter nouvel onglet "Services" comme page d'accueil du dashboard
- Indicateurs visuels (vert=actif, rouge=arrêté) pour chaque service
- Boutons: Démarrer, Arrêter, Redémarrer, Ouvrir dans navigateur
- Support: Agent Chat, VWB Backend, VWB Frontend, Dashboard
- Actions groupées: Tout Démarrer / Tout Arrêter
- Notifications visuelles pour les actions
- Rafraîchissement auto toutes les 5 secondes
Services gérés:
- Agent Chat (LLM) - port 5002
- VWB Backend - port 5000
- VWB Frontend - port 3000
- Dashboard - port 5001
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Activer use_llm=True par défaut dans app.py
- Améliorer le prompt LLM avec contexte des workflows disponibles
- Ajouter endpoints /api/llm/status et /api/llm/model pour configuration
- Permettre injection dynamique des workflows dans IntentParser
- Supporter changement de modèle à chaud
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Importer les vraies classes Action, TargetSpec, WorkflowEdge, ActionType
- Convertir le type d'action en ActionType Enum au lieu de string
- Créer un ScreenState complet avec tous les niveaux (raw, perception, context)
- Corriger _serialize_state dans error_handler.py pour accès compatibles
- Ajouter import os pour manipulation des fichiers
- Sauvegarder les screenshots dans data/temp/
L'exécution réelle fonctionne maintenant - les erreurs "Target not found"
sont attendues car il faut une vraie interface utilisateur à l'écran.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Import des composants d'exécution (ActionExecutor, ExecutionLoop, etc.)
- Initialisation complète du pipeline d'exécution au démarrage
- Remplacement de la simulation par exécution réelle :
- Capture d'écran avec ScreenCapturer
- Exécution des actions avec ActionExecutor
- Gestion des erreurs et fallback en mode simulé
- Mode dégradé automatique si composants non disponibles
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>