Files
rpa_vision_v3/test_phase_a_b.py
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>
2026-01-29 11:23:51 +01:00

105 lines
3.3 KiB
Python
Executable File

#!/usr/bin/env python3
"""Test rapide pour valider Phase A (tests) + Phase B (GraphBuilder/NodeMatcher)."""
import sys
sys.path.insert(0, '.')
print("=" * 70)
print("TEST PHASE A + B - RPA Vision V3")
print("=" * 70)
# Test 1: FusionEngine
print("\n[1/5] Test FusionEngine...")
try:
from core.embedding.fusion_engine import FusionEngine
import numpy as np
engine = FusionEngine()
embeddings = {
'image': np.random.randn(512),
'text': np.random.randn(512)
}
fused = engine.fuse(embeddings)
norm = np.linalg.norm(fused)
assert abs(norm - 1.0) < 1e-5, f"Norm should be 1.0, got {norm}"
assert sum(engine.config.weights.values()) >= 0.99, "Weights should sum to ~1.0"
print("✓ FusionEngine OK - Property 17 validated")
except Exception as e:
print(f"✗ FusionEngine FAILED: {e}")
sys.exit(1)
# Test 2: FAISSManager
print("\n[2/5] Test FAISSManager...")
try:
from core.embedding.faiss_manager import FAISSManager
manager = FAISSManager(dimensions=512)
# Ajouter des embeddings
for i in range(10):
vec = np.random.randn(512).astype(np.float32)
vec = vec / np.linalg.norm(vec)
manager.add_embedding(f'emb_{i}', vec, {'id': i})
assert manager.index.ntotal == 10, "Should have 10 embeddings"
assert len(manager.metadata_store) == 10, "Should have 10 metadata entries"
print("✓ FAISSManager OK - Property 11 validated")
except Exception as e:
print(f"✗ FAISSManager FAILED: {e}")
sys.exit(1)
# Test 3: GraphBuilder
print("\n[3/5] Test GraphBuilder...")
try:
from core.graph.graph_builder import GraphBuilder
builder = GraphBuilder(min_pattern_repetitions=2)
# Test simple d'initialisation
assert builder.min_pattern_repetitions == 2
assert builder.clustering_eps == 0.15
print("✓ GraphBuilder OK - Phase 5 started")
except Exception as e:
print(f"✗ GraphBuilder FAILED: {e}")
sys.exit(1)
# Test 4: NodeMatcher
print("\n[4/5] Test NodeMatcher...")
try:
from core.graph.node_matcher import NodeMatcher
matcher = NodeMatcher(similarity_threshold=0.85)
# Test simple d'initialisation
assert matcher.similarity_threshold == 0.85
print("✓ NodeMatcher OK - Phase 5 started")
except Exception as e:
print(f"✗ NodeMatcher FAILED: {e}")
sys.exit(1)
# Test 5: Intégration
print("\n[5/5] Test Intégration...")
try:
# Test que tous les composants peuvent travailler ensemble
from core.embedding.state_embedding_builder import StateEmbeddingBuilder
builder_emb = StateEmbeddingBuilder()
# Vérifier que le builder est initialisé avec CLIP
assert builder_emb.clip_embedder is not None
print("✓ Intégration OK - CLIP embedder disponible")
except Exception as e:
print(f"✗ Intégration FAILED: {e}")
sys.exit(1)
print("\n" + "=" * 70)
print("✓ TOUS LES TESTS PASSENT")
print("=" * 70)
print("\nRésumé:")
print(" ✓ Phase 2: Tests property-based (FusionEngine, FAISSManager)")
print(" ✓ Phase 5: GraphBuilder et NodeMatcher implémentés")
print("\nProchaines étapes:")
print(" - Compléter tests unitaires avec pytest")
print(" - Intégrer CLIP réel dans StateEmbeddingBuilder")
print(" - Implémenter construction d'edges dans GraphBuilder")