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>
This commit is contained in:
@@ -0,0 +1 @@
|
||||
"""Actions de navigation VWB."""
|
||||
@@ -0,0 +1,70 @@
|
||||
"""
|
||||
Action Navigation Retour - Retourner à la page précédente
|
||||
Auteur : Dom, Alice, Kiro - 12 janvier 2026
|
||||
"""
|
||||
|
||||
from typing import Dict, Any
|
||||
from ..base_action import BaseVWBAction
|
||||
from ..contracts.evidence import VWBActionEvidence
|
||||
from ..contracts.error import VWBActionError
|
||||
|
||||
|
||||
class VWBBrowserBackAction(BaseVWBAction):
|
||||
"""Action pour retourner à la page précédente."""
|
||||
|
||||
def __init__(self, action_id: str, parameters: Dict[str, Any]):
|
||||
"""
|
||||
Initialise l'action de retour navigateur.
|
||||
|
||||
Args:
|
||||
action_id: Identifiant unique de l'action
|
||||
parameters: Paramètres de l'action
|
||||
"""
|
||||
super().__init__(action_id, parameters)
|
||||
|
||||
def validate_parameters(self) -> bool:
|
||||
"""
|
||||
Valide les paramètres de l'action.
|
||||
|
||||
Returns:
|
||||
True (pas de paramètres requis)
|
||||
"""
|
||||
return True
|
||||
|
||||
def execute(self) -> Dict[str, Any]:
|
||||
"""
|
||||
Exécute le retour à la page précédente.
|
||||
|
||||
Returns:
|
||||
Résultat de l'exécution
|
||||
"""
|
||||
try:
|
||||
# Simuler le retour navigateur (à implémenter avec selenium/playwright)
|
||||
import time
|
||||
|
||||
self.add_evidence(VWBActionEvidence(
|
||||
evidence_type="browser_back_start",
|
||||
data={"timestamp": datetime.now().isoformat()}
|
||||
))
|
||||
|
||||
# Simuler le temps de navigation
|
||||
time.sleep(0.5)
|
||||
|
||||
self.add_evidence(VWBActionEvidence(
|
||||
evidence_type="browser_back_complete",
|
||||
data={"success": True}
|
||||
))
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"action": "browser_back",
|
||||
"execution_time_ms": 500
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
error = VWBActionError(
|
||||
error_type="browser_back_failed",
|
||||
message=f"Échec retour navigateur: {str(e)}"
|
||||
)
|
||||
self.add_error(error)
|
||||
return {"success": False, "error": str(e)}
|
||||
@@ -0,0 +1,80 @@
|
||||
"""
|
||||
Action Navigation URL - Naviguer vers une URL spécifique
|
||||
Auteur : Dom, Alice, Kiro - 12 janvier 2026
|
||||
"""
|
||||
|
||||
from typing import Dict, Any, Optional
|
||||
from ..base_action import BaseVWBAction
|
||||
from ..contracts.evidence import VWBActionEvidence
|
||||
from ..contracts.error import VWBActionError
|
||||
|
||||
|
||||
class VWBNavigateToUrlAction(BaseVWBAction):
|
||||
"""Action pour naviguer vers une URL spécifique."""
|
||||
|
||||
def __init__(self, action_id: str, parameters: Dict[str, Any]):
|
||||
"""
|
||||
Initialise l'action de navigation URL.
|
||||
|
||||
Args:
|
||||
action_id: Identifiant unique de l'action
|
||||
parameters: Paramètres de l'action
|
||||
"""
|
||||
super().__init__(action_id, parameters)
|
||||
self.url = parameters.get('url', '')
|
||||
self.wait_for_load = parameters.get('wait_for_load', True)
|
||||
|
||||
def validate_parameters(self) -> bool:
|
||||
"""
|
||||
Valide les paramètres de l'action.
|
||||
|
||||
Returns:
|
||||
True si les paramètres sont valides
|
||||
"""
|
||||
if not self.url or not isinstance(self.url, str):
|
||||
self.add_error("URL manquante ou invalide")
|
||||
return False
|
||||
|
||||
if not self.url.startswith(('http://', 'https://')):
|
||||
self.add_error("URL doit commencer par http:// ou https://")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def execute(self) -> Dict[str, Any]:
|
||||
"""
|
||||
Exécute la navigation vers l'URL.
|
||||
|
||||
Returns:
|
||||
Résultat de l'exécution
|
||||
"""
|
||||
try:
|
||||
# Simuler la navigation (à implémenter avec selenium/playwright)
|
||||
import time
|
||||
|
||||
self.add_evidence(VWBActionEvidence(
|
||||
evidence_type="navigation_start",
|
||||
data={"url": self.url, "timestamp": datetime.now().isoformat()}
|
||||
))
|
||||
|
||||
# Simuler le temps de navigation
|
||||
time.sleep(1 if self.wait_for_load else 0.1)
|
||||
|
||||
self.add_evidence(VWBActionEvidence(
|
||||
evidence_type="navigation_complete",
|
||||
data={"url": self.url, "success": True}
|
||||
))
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"url": self.url,
|
||||
"navigation_time_ms": 1000 if self.wait_for_load else 100
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
error = VWBActionError(
|
||||
error_type="navigation_failed",
|
||||
message=f"Échec navigation vers {self.url}: {str(e)}"
|
||||
)
|
||||
self.add_error(error)
|
||||
return {"success": False, "error": str(e)}
|
||||
Reference in New Issue
Block a user