"""
Script de redémarrage propre du bot avec toutes les optimizations
"""
import os
import signal
import subprocess
import time
import json

print("=" * 80)
print("🔄 REDÉMARRAGE DU BOT AVEC OPTIMISATIONS")
print("=" * 80)

# 1. Vérifier et arrêter le bot actuel
print("\n📌 Étape 1: Arrêt du bot actuel")
if os.path.exists('bot.pid'):
    with open('bot.pid', 'r') as f:
        pid = int(f.read().strip())
    try:
        os.kill(pid, signal.SIGTERM)
        print(f"   ✅ Bot PID {pid} arrêté")
        time.sleep(3)
    except ProcessLookupError:
        print(f"   ⚠️ Bot PID {pid} déjà arrêté")
else:
    print("   ℹ️ Aucun PID trouvé")

# 2. Résumé des optimisations appliquées
print("\n📌 Étape 2: Résumé des optimisations")
optimizations = [
    "✅ MOMENTUM_REVERSAL_MIN: 0.10% → 0.02% (détection précoce)",
    "✅ HIGH_SCORE_OVERRIDE: Désactivé (0% win rate)",
    "✅ POSSIBLE: Score requis 75 → 80 (bloq si <80)",
    "✅ EARLY_BREAKOUT: Momentum 0.5% → 1.0% (quasi-bloqué)",
    "✅ PULLBACK: Momentum 0.02% → 0.10% (strict)",
    "✅ SQUEEZE_WAITING: Bonus +15 → +22 (pattern viable)",
    "✅ CREUX_REBOUND_EARLY: Critères assouplis",
    "✅ Performance Blacklist: Seuil 25% → 20%",
    "✅ ETH retiré de la blacklist",
]
for opt in optimizations:
    print(f"   {opt}")

# 3. Vérifier blacklist actuelle
print("\n📌 Étape 3: État de la blacklist")
if os.path.exists('performance_blacklist.json'):
    with open('performance_blacklist.json', 'r') as f:
        data = json.load(f)
        blacklist = data.get('blacklist', [])
        if blacklist:
            print(f"   ⚠️ Blacklist active: {', '.join(blacklist)}")
        else:
            print("   ✅ Aucune crypto en blacklist")
else:
    print("   ℹ️ Fichier blacklist non trouvé")

# 4. Instructions de redémarrage
print("\n📌 Étape 4: Redémarrage manuel")
print("   Pour redémarrer le bot, exécutez:")
print("   > .venv\\Scripts\\python.exe trading_bot.py")
print("   Ou utilisez le script de démarrage habituel")

print("\n📌 Attendez 2-3 cycles (2-3 minutes) puis vérifiez:")
print("   - ETH sans réduction PERFORMANCE BLACKLIST")
print("   - Patterns POSSIBLE/HIGH_SCORE_OVERRIDE bloqués")
print("   - SQUEEZE_WAITING avec bonus +22")

print("\n" + "=" * 80)
print("✅ PRÉPARATION TERMINÉE - Prêt pour redémarrage")
print("=" * 80)
