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:
Dom
2026-01-29 11:23:51 +01:00
parent 21bfa3b337
commit a27b74cf22
1595 changed files with 412691 additions and 400 deletions

145
scripts/validate_imports.sh Executable file
View File

@@ -0,0 +1,145 @@
#!/bin/bash
# Script de validation des imports pour la CI.
#
# Valide que:
# 1. Aucun import circulaire n'existe
# 2. Les interfaces abstraites sont correctes
# 3. Les lazy imports fonctionnent
# 4. Les composants critiques sont importables
#
# Auteur: Dom, Alice Kiro
# Date: 20 décembre 2024
set -e # Arrêter en cas d'erreur
echo "🔍 Validation des imports RPA Vision V3..."
# Couleurs pour l'affichage
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Fonction pour afficher les erreurs
error() {
echo -e "${RED}$1${NC}"
exit 1
}
# Fonction pour afficher les succès
success() {
echo -e "${GREEN}$1${NC}"
}
# Fonction pour afficher les infos
info() {
echo -e "${YELLOW} $1${NC}"
}
# Vérifier que nous sommes dans le bon répertoire
if [ ! -f "validate_circular_imports.py" ]; then
error "Script validate_circular_imports.py non trouvé. Exécuter depuis la racine du projet."
fi
# 1. Validation des imports circulaires
info "Étape 1: Validation des imports circulaires..."
python3 validate_circular_imports.py || error "Imports circulaires détectés"
success "Aucun import circulaire détecté"
# 2. Tests unitaires des imports
info "Étape 2: Tests unitaires des imports..."
python3 -m pytest tests/unit/test_circular_imports.py -v -q || error "Tests unitaires des imports échoués"
success "Tests unitaires des imports réussis"
# 3. Tests de propriété
info "Étape 3: Tests de propriété des imports..."
python3 -m pytest tests/property/test_circular_imports_property.py -v -q || error "Tests de propriété échoués"
success "Tests de propriété réussis"
# 4. Validation de la structure des imports
info "Étape 4: Validation de la structure des imports..."
python3 -c "
import sys
sys.path.insert(0, '.')
# Test des imports de base
from core.models import RawSession, ScreenState, UIElement
from core.models import get_workflow, get_action, get_target_spec
from core.interfaces import ITargetResolver, IActionExecutor, IErrorHandler
# Test des lazy imports
Workflow = get_workflow()
Action = get_action()
TargetSpec = get_target_spec()
# Vérifier que les interfaces sont abstraites
import inspect
assert inspect.isabstract(ITargetResolver)
assert inspect.isabstract(IActionExecutor)
assert inspect.isabstract(IErrorHandler)
print('Structure des imports validée')
" || error "Structure des imports invalide"
success "Structure des imports validée"
# 5. Validation que TYPE_CHECKING fonctionne
info "Étape 5: Validation TYPE_CHECKING..."
python3 -c "
from typing import TYPE_CHECKING
import core.models as models
# Vérifier que les imports conditionnels ne sont pas disponibles à l'exécution
assert not hasattr(models, 'Workflow')
assert not hasattr(models, 'Action')
# Mais que les lazy imports sont disponibles
assert hasattr(models, 'get_workflow')
assert hasattr(models, 'get_action')
print('TYPE_CHECKING fonctionne correctement')
" || error "TYPE_CHECKING ne fonctionne pas correctement"
success "TYPE_CHECKING validé"
# 6. Test de performance des imports
info "Étape 6: Test de performance des imports..."
python3 -c "
import time
import sys
sys.path.insert(0, '.')
start_time = time.time()
# Importer les modules de base
from core.models import RawSession, ScreenState, UIElement
from core.interfaces import ITargetResolver, IActionExecutor, IErrorHandler
# Utiliser les lazy imports
from core.models import get_workflow, get_action
Workflow = get_workflow()
Action = get_action()
end_time = time.time()
import_time = end_time - start_time
print(f'Temps d\'import: {import_time:.3f}s')
# Vérifier que les imports sont rapides (< 1 seconde)
if import_time > 1.0:
print(f'ATTENTION: Imports lents ({import_time:.3f}s)')
exit(1)
else:
print('Performance des imports acceptable')
" || error "Imports trop lents"
success "Performance des imports acceptable"
echo ""
echo -e "${GREEN}🎉 Validation des imports complète!${NC}"
echo ""
echo "Résumé:"
echo " ✅ Aucun import circulaire"
echo " ✅ Interfaces abstraites correctes"
echo " ✅ Lazy imports fonctionnels"
echo " ✅ TYPE_CHECKING configuré"
echo " ✅ Performance acceptable"
echo ""
echo -e "${GREEN}Le système respecte les bonnes pratiques d'imports Python.${NC}"