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>
This commit is contained in:
@@ -104,6 +104,10 @@ class TestTargetResolverCompositeHints:
|
||||
self.screen_state = Mock(spec=ScreenState)
|
||||
self.screen_state.ui_elements = self.ui_elements
|
||||
self.screen_state.screen_state_id = "test_screen"
|
||||
# Le TargetResolver accède à screen_state.window.screen_resolution
|
||||
mock_window = Mock()
|
||||
mock_window.screen_resolution = [1920, 1080]
|
||||
self.screen_state.window = mock_window
|
||||
|
||||
def test_fiche3_context_hints_triggers_composite_mode(self):
|
||||
"""
|
||||
@@ -146,8 +150,8 @@ class TestTargetResolverCompositeHints:
|
||||
|
||||
# Vérifier les détails de résolution
|
||||
details = result.resolution_details
|
||||
assert "context_hints" in details["criteria_used"], "context_hints devrait être dans criteria_used"
|
||||
assert details["criteria_used"]["context_hints"]["below_text"] == "Username"
|
||||
assert "hints" in details["criteria_used"], "hints devrait être dans criteria_used"
|
||||
assert "below_text" in details["criteria_used"]["hints"], "below_text devrait être dans hints"
|
||||
|
||||
def test_fiche3_context_hints_below_text_filtering(self):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user