#!/usr/bin/env python3
"""
Script de test pour l'endpoint /api/patterns-performance
Teste que l'API retourne correctement les statistiques des patterns
"""

import requests
import json
from datetime import datetime

def test_patterns_endpoint():
    """Test de l'endpoint patterns-performance"""
    
    print("🧪 Test de l'endpoint /api/patterns-performance")
    print("=" * 60)
    
    try:
        # Call API
        url = "http://localhost:8889/api/patterns-performance"
        print(f"\n📡 Appel API: {url}")
        
        response = requests.get(url, timeout=10)
        
        print(f"   Status: {response.status_code}")
        
        if response.status_code != 200:
            print(f"   ❌ Erreur HTTP: {response.status_code}")
            print(f"   Response: {response.text}")
            return False
        
        # Parse JSON
        data = response.json()
        
        print(f"\n✅ Réponse JSON reçue")
        print(f"   Success: {data.get('success', False)}")
        
        if not data.get('success'):
            print(f"   ❌ API error: {data.get('error', 'Unknown')}")
            return False
        
        # Display global stats
        global_stats = data.get('global_stats', {})
        print(f"\n📊 Stats Globales:")
        print(f"   Total patterns: {global_stats.get('total_patterns', 0)}")
        print(f"   Total trades: {global_stats.get('total_trades', 0)}")
        print(f"   Win Rate Global: {global_stats.get('global_win_rate', 0):.1f}%")
        print(f"   P&L Total: {global_stats.get('total_pnl', 0):.2f}%")
        print(f"   P&L Moyen: {global_stats.get('avg_pnl', 0):.3f}%")
        
        # Display status counts
        status_counts = global_stats.get('status_counts', {})
        print(f"\n🎯 Status des Patterns:")
        print(f"   🟢 Excellent: {status_counts.get('excellent', 0)}")
        print(f"   🟢 Bon: {status_counts.get('good', 0)}")
        print(f"   🟡 Moyen: {status_counts.get('medium', 0)}")
        print(f"   🟠 Faible: {status_counts.get('weak', 0)}")
        print(f"   🔴 Critique: {status_counts.get('critical', 0)}")
        
        # Display patterns
        patterns = data.get('patterns', [])
        print(f"\n📋 Patterns ({len(patterns)}):")
        print("-" * 60)
        
        for i, pattern in enumerate(patterns[:10], 1):  # Top 10
            status_emoji = {
                'excellent': '🟢',
                'good': '🟢',
                'medium': '🟡',
                'weak': '🟠',
                'critical': '🔴'
            }.get(pattern.get('status', 'unknown'), '⚪')
            
            print(f"\n{i}. {status_emoji} {pattern.get('pattern', 'N/A')}")
            print(f"   Win Rate: {pattern.get('win_rate', 0):.1f}% ({pattern.get('wins', 0)}W / {pattern.get('losses', 0)}L)")
            print(f"   Total Trades: {pattern.get('count', 0)}")
            print(f"   P&L Moyen: {pattern.get('avg_pnl', 0):.3f}%")
            print(f"   Recommandation: {pattern.get('recommendation', 'N/A')}")
            
            if pattern.get('optimizations'):
                print(f"   Optimisations suggérées:")
                for opt in pattern['optimizations']:
                    print(f"      • {opt}")
        
        if len(patterns) > 10:
            print(f"\n   ... et {len(patterns) - 10} autres patterns")
        
        print("\n" + "=" * 60)
        print("✅ Test réussi!")
        return True
        
    except requests.exceptions.ConnectionError:
        print("\n❌ Erreur: Impossible de se connecter au serveur")
        print("   Vérifiez que dashboard_api_server.py est en cours d'exécution sur le port 8889")
        return False
        
    except requests.exceptions.Timeout:
        print("\n❌ Erreur: Timeout de la requête")
        return False
        
    except Exception as e:
        print(f"\n❌ Erreur inattendue: {e}")
        import traceback
        traceback.print_exc()
        return False

if __name__ == "__main__":
    success = test_patterns_endpoint()
    exit(0 if success else 1)
