Commit Graph

268 Commits

Author SHA1 Message Date
Dom
928b9e1065 feat: import Excel via chat Léa, suppression nœuds VWB, fix temperature 0.1
- Chat Léa : "importe patients.xlsx" → preview → confirmation → table SQLite
  Bouton 📎 pour upload fichier, "montre les tables", "info table X"
- VWB : suppression nœuds via touche Suppr/Backspace + bouton croix rouge
- Fix : toutes les températures VLM à 0.1 (qwen3-vl bloque à 0.0)
- Fix : capture VWB avec DISPLAY=:1

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 07:18:51 +01:00
Dom
97cb2957d5 feat: upload Excel via explorateur de fichier dans le VWB
- 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>
2026-03-16 23:17:05 +01:00
Dom
9da804bb6e feat: import Excel → SQLite + boucle données → UI dans le VWB
- 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>
2026-03-16 23:10:51 +01:00
Dom
5e3865d328 feat: DAG executor async + intégration IA/LLM dans le VWB
- DAGExecutor : exécution workflow par graphe de dépendances,
  étapes LLM parallèles, UI séquentielles, injection ${step.result}
- LLMActionHandler : analyze_text, translate, extract_data, generate_text
  via Ollama /api/chat (qwen3-vl:8b, temperature 0.1)
- VWB palette : catégorie "IA / LLM" avec 4 actions draggables
- VWB propriétés : éditeurs pour chaque action LLM (modèle, prompt, langue)
- VWB endpoint : POST /api/v3/workflow/<id>/execute-dag
- 37 tests unitaires DAG executor (tous passent)
- Fix log spam cache workflows (info → debug)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:58:44 +01:00
Dom
ad15237fe0 feat: smart systray Léa (plyer), preflight GPU, fix tests, support qwen3-vl
- Smart systray (pystray+plyer) remplace PyQt5 : notifications toast,
  menu dynamique avec workflows, chat "Que dois-je faire ?", icône colorée
- Preflight GPU : check_machine_ready() + @pytest.mark.gpu dans conftest
- Correction 63 tests cassés → 0 failed (1200 passed)
- Tests VWB obsolètes déplacés vers _a_trier/
- Support qwen3-vl:8b sur GPU (remplace qwen2.5vl:3b)
  - fix images < 32x32 (Ollama panic)
  - fix force_json=False (qwen3-vl incompatible)
  - fix temperature 0.1 (0.0 bloque avec images)
- Fix captor Windows : Key.esc, _get_key_name()
- Fix LeaServerClient : check_connection, list_workflows format
- deploy_windows.py : packaging propre client Windows
- VWB : edges visibles (#607d8b) + fitView automatique

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 22:25:12 +01:00
Dom
cf495dd82f feat: chat unifié, GestureCatalog, Copilot, Léa UI, extraction données, vérification replay
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>
2026-03-15 10:02:09 +01:00
Dom
74a1cb4e03 feat(agent-libre): exécuter les plans LLM sur le PC cible via streaming server
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>
2026-03-15 08:41:53 +01:00
Dom
463f1dd95e fix(dashboard): corriger les routes mortes, parsing API et liens cassés
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>
2026-03-14 22:05:11 +01:00
Dom
8f31ba95d3 feat: extraction expressions math + workflow calculatrice paramétrable
- 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>
2026-03-14 18:39:56 +01:00
Dom
7df01f2642 fix(agent-chat): ne plus fallback local quand streaming server refuse
- 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>
2026-03-14 18:20:07 +01:00
Dom
599dd02399 fix(agent-chat): suivi replay distant + timeout 15s
- 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>
2026-03-14 17:43:49 +01:00
Dom
766c57e126 fix(agent-chat): execution_status.running manquant en mode local
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>
2026-03-14 17:31:36 +01:00
Dom
79c19c5e9d fix(agent-chat): ajouter handler QUERY pour les infos workflow
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>
2026-03-14 16:37:24 +01:00
Dom
148321dffd feat: WorkflowRunner, matching sémantique et replay distant (P0-4, P0-6, P0-7)
P0-4: WorkflowRunner — orchestrateur de replay intelligent
- Boucle capture → match FAISS → résolution sémantique → exécution
- Mode dry_run, substitution de variables, anti-boucle (max 200 steps)
- Découplé de pyautogui via executor_callback

P0-6: Unification des répertoires workflows
- SemanticMatcher scanne data/workflows/ + data/training/workflows/
- Auto-reload sur changement de répertoire (60s)

P0-7: Matching sémantique via Ollama
- Pré-filtrage Jaccard + re-ranking LLM (qwen2.5:7b)
- Score final : 40% Jaccard + 60% LLM, fallback si Ollama indisponible

Agent Chat: exécution distante via streaming server
- POST http://localhost:5005/api/v1/traces/stream/replay
- Fallback sur exécution locale si serveur indisponible

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 11:23:33 +01:00
Dom
de779af5a1 chore: nettoyage des fichiers legacy via .gitignore
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>
2026-03-14 11:22:10 +01:00
Dom
c2feca29c4 chore: add .gitignore 2026-03-05 00:37:31 +01:00
Dom
773ee78949 feat(vwb): Remplacer EasyOCR par docTR (Mindee) pour l'OCR
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>
2026-02-18 22:19:44 +01:00
Dom
786e640de9 Merge dev/ia-tools-improvement: audit phases 1-4 + outils IA
- refactor(audit): suppression code mort, config centralisée, thread-safety, logging
- feat(vwb): outils IA améliorés, validation workflow, suppression fallback statique
- feat(vwb-frontend): sélecteur modèle IA, validation, variables
- fix(vwb): suppression debug /tmp, correction import UIElement
v1.1
2026-02-17 11:05:23 +01:00
Dom
2cb53901a1 fix(vwb): Supprimer debug /tmp et corriger import UIElement
- 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>
2026-02-17 10:58:14 +01:00
Dom
75260e3254 feat(vwb-frontend): Sélecteur modèle IA, validation workflow et variables
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>
2026-02-17 10:56:40 +01:00
Dom
4c9a6d293f feat(vwb): Améliorer outils IA et supprimer fallback statique
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>
2026-02-17 10:56:17 +01:00
Dom
3ff36e3c79 refactor(audit): Nettoyage dette technique phases 1-4
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>
2026-02-17 08:11:45 +01:00
Dom
a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
v1.0-stable
2026-01-29 11:23:51 +01:00
Dom
21bfa3b337 feat(vwb): Ajouter SeeClick, Self-Healing interactif et Dashboard confiance
## 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>
2026-01-24 02:34:01 +01:00
Dom
f04f156144 fix(vision): Corriger les seuils CLIP/Template pour éviter les clics erronés
Problème résolu:
- Le workflow cliquait au mauvais endroit (200-500px de distance)
- Les seuils de matching étaient trop permissifs

Corrections apportées:
- CLIP: MAX_DISTANCE=120px, MIN_SCORE=0.55, MIN_COMBINED=0.5
- Template zonée: MAX_DISTANCE=150px
- Template global: MAX_DISTANCE=150px (était 500px)
- Ajout de logs détaillés pour debug des candidats rejetés
- Désactivation de l'overlay debug (polling intensif inutile)

Fichiers modifiés:
- intelligent_executor.py: Seuils stricts + logs
- execute.py: Logique d'exécution modes basic/intelligent/debug
- ui_detection_service.py: Backend UI-DETR-1
- App.tsx: Overlay désactivé
- ExecutionOverlay.tsx: URLs API corrigées

Documentation:
- docs/REFERENCE_VISION_RPA.md: Guide complet de référence

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 02:15:04 +01:00
Dom
d8d086dac5 feat(vwb): Intégration UI-DETR-1 + Toggle mode Basique/Intelligent/Debug
- 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>
2026-01-23 14:13:32 +01:00
Dom
483653a0b4 feat(vwb-v4): Frontend React Flow avec palette d'outils complète
- 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>
2026-01-23 12:54:08 +01:00
Dom
858e6007f9 feat(vwb-v3): Architecture Thin Client fonctionnelle
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>
2026-01-23 12:07:13 +01:00
Dom
a9a53991bc fix(vwb): Corriger auto-save et coordonnées miniature
- 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>
2026-01-20 21:38:47 +01:00
Dom
d2955ec1a1 fix(vwb): Corriger l'exécution VWB pour toutes les étapes
- 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>
2026-01-20 17:35:24 +01:00
Dom
7ea5d6b992 feat(agent_chat): Ajouter mode Agent Libre avec planification LLM
- 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>
2026-01-19 22:47:54 +01:00
Dom
2922b6dda8 feat(dashboard): Ajouter sections Sauvegardes, Système, Corrections et Apprentissage
- 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>
2026-01-19 19:23:15 +01:00
Dom
5a77b1a41e fix(security): Rendre validation permissive en développement
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>
2026-01-19 17:55:06 +01:00
Dom
35f0cb3461 docs(playbook): Mettre à jour Playbook DSI/RSSI v1.1
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>
2026-01-19 15:38:48 +01:00
Dom
275aace599 feat(dashboard): Ajouter API Backup, Version et Rollback
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>
2026-01-19 15:36:15 +01:00
Dom
4b96524964 feat(system): Ajouter gestionnaires backup et version pour Dashboard
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>
2026-01-19 15:34:51 +01:00
Dom
758e671732 fix(logging): Corriger système de logging avec format unifié et filtrage ANSI
- 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>
2026-01-19 15:34:34 +01:00
Dom
4460b63912 docs: Add comprehensive DSI/RSSI security playbook
Complete security documentation for IT Directors and Security Officers:
- Architecture overview with security layers
- Authentication (HMAC-SHA256 tokens, RBAC)
- Data protection (AES-256-CBC encryption)
- Audit logging (JSONL format, SIEM compatible)
- Network controls (IP allowlist, rate limiting)
- Attack protection (SQL/NoSQL injection, XSS, path traversal)
- Secure deployment guide
- Monitoring and alerting
- Emergency procedures (kill-switch, token revocation)
- Regulatory compliance (RGPD, HDS, ISO 27001)
- Validation checklist

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 09:01:03 +01:00
Dom
ae1cb72362 fix(faiss): Correct parameter name in factory functions
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>
2026-01-19 08:50:23 +01:00
Dom
47b215e639 chore: Update .gitignore with comprehensive exclusions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 08:44:25 +01:00
Dom
38a1a5ddd8 feat(coaching): Implement complete COACHING mode infrastructure
Add comprehensive COACHING mode system with:

Backend:
- core/coaching module with session persistence and metrics
- CoachingSessionPersistence for pause/resume sessions
- CoachingMetricsCollector with learning progress tracking
- REST API blueprint for coaching sessions management
- Execution integration with COACHING mode support

Frontend:
- CoachingPanel component with keyboard shortcuts
- Decision buttons (accept/reject/correct/manual/skip)
- Real-time stats display and correction editor
- CorrectionPacksDashboard for pack visualization
- WebSocket hooks for real-time COACHING events

Metrics & Monitoring:
- WorkflowLearningMetrics with confidence scoring
- GlobalCoachingMetrics for system-wide analytics
- AUTO mode readiness detection (85% acceptance threshold)
- Learning progress levels (OBSERVATION → COACHING → AUTO)

Tests:
- E2E tests for complete OBSERVATION → AUTO journey
- Session persistence and recovery tests
- Metrics threshold validation tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 08:40:54 +01:00
Dom
d6e2530f2a feat(execution): Implement complete COACHING mode in ExecutionLoop
- 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>
2026-01-18 19:14:47 +01:00
Dom
efb184fdb9 feat(corrections): Add automatic COACHING integration for Correction Packs
- 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>
2026-01-18 19:06:09 +01:00
Dom
d8756883c5 feat(corrections): Add Correction Packs system for cross-workflow learning
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>
2026-01-18 18:48:35 +01:00
Dom
fa57ecdbfd docs: Ajouter analyse MOAT complète RPA Vision V3
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>
2026-01-18 18:10:52 +01:00
Dom
61b03bc147 feat(dashboard): Ajouter panneau de contrôle des services pour démos
- 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>
2026-01-18 17:45:05 +01:00
Dom
848184db5c feat(agent_chat): Activer intégration LLM Ollama pour parsing intelligent
- 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>
2026-01-16 18:04:07 +01:00
Dom
152431803e fix(agent_chat): Corriger intégration exécution réelle
- 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>
2026-01-16 17:43:30 +01:00
Dom
87f2671920 feat(agent_chat): Intégration exécution réelle avec ActionExecutor
- 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>
2026-01-15 16:03:05 +01:00
Dom
855061c8ba fix(intent_parser): Améliorer détection intention LIST
- Ajout pattern 'liste des workflows'
- Ajout pattern 'voir les workflows'

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 15:46:52 +01:00