#!/usr/bin/env python3 """Test de Construction de Workflow avec Session Synthétique""" import sys import logging from pathlib import Path from datetime import datetime sys.path.insert(0, str(Path(__file__).parent.parent)) from core.graph.graph_builder import GraphBuilder from core.models.raw_session import RawSession, Screenshot from core.embedding.faiss_manager import FAISSManager logging.basicConfig(level=logging.INFO, format='%(levelname)s - %(message)s') logger = logging.getLogger(__name__) def create_synthetic_session() -> RawSession: """Créer une session synthétique.""" session = RawSession( session_id="synthetic_001", agent_version="v3.0", environment={"os": "linux"}, user="test", context={}, started_at=datetime.now().isoformat() ) for i in range(12): screenshot = Screenshot( screenshot_id=f"screen_{i:03d}", relative_path=f"data/screenshots/screen_{i:03d}.png", captured_at=datetime.now().isoformat() ) session.screenshots.append(screenshot) return session def main(): logger.info("TEST WORKFLOW - SESSION SYNTHÉTIQUE") logger.info("=" * 60) session = create_synthetic_session() logger.info(f"Session créée: {len(session.screenshots)} screenshots") faiss_manager = FAISSManager(dimensions=512) builder = GraphBuilder( faiss_manager=faiss_manager, min_pattern_repetitions=2, clustering_eps=0.20 ) workflow = builder.build_from_session(session, "Synthetic Workflow") logger.info(f"\nRésultats:") logger.info(f" Nodes: {len(workflow.nodes)}") logger.info(f" Edges: {len(workflow.edges)}") logger.info(f" FAISS: {faiss_manager.index.ntotal} vectors") logger.info("\n✓ TEST RÉUSSI") return True if __name__ == "__main__": success = main() sys.exit(0 if success else 1)