"""Verification rapide: les optimisations IA sont-elles actives dans le bot ?"""
import sys, os
os.chdir(os.path.dirname(os.path.abspath(__file__)))

from config import (
    STOP_LOSS_PERCENT, TAKE_PROFIT_PERCENT, ENABLE_TRAILING_STOP,
    TRAILING_STOP_DISTANCE, TRAILING_STOP_ACTIVATION,
    MAX_OPEN_POSITIONS, MIN_AI_SCORE_FOR_BUY, MIN_BUY_SIGNALS,
    MIN_SELL_SIGNALS, STRATEGY_CONSENSUS_THRESHOLD, ML_CONFIDENCE_THRESHOLD
)

print("=" * 60)
print("  VERIFICATION INTEGRATION IA → BOT")
print("=" * 60)

# Valeurs attendues depuis ai_optimized_config.py (mises à jour FIX 08/03)
try:
    import ai_optimized_config as _ai_ref
    expected = {
        'MIN_BUY_SIGNALS': (getattr(_ai_ref, 'MIN_BUY_SIGNALS', 3), MIN_BUY_SIGNALS),
        'MIN_AI_SCORE_FOR_BUY': (getattr(_ai_ref, 'MIN_AI_SCORE_FOR_BUY', 65), MIN_AI_SCORE_FOR_BUY),
        'STRATEGY_CONSENSUS_THRESHOLD': (getattr(_ai_ref, 'STRATEGY_CONSENSUS_THRESHOLD', 70), STRATEGY_CONSENSUS_THRESHOLD),
        'ML_CONFIDENCE_THRESHOLD': (getattr(_ai_ref, 'ML_CONFIDENCE_THRESHOLD', 0.56), ML_CONFIDENCE_THRESHOLD),
        'STOP_LOSS_PERCENT': (getattr(_ai_ref, 'STOP_LOSS_PERCENT', 1.5), STOP_LOSS_PERCENT),
        'TAKE_PROFIT_PERCENT': (getattr(_ai_ref, 'TAKE_PROFIT_PERCENT', 3.0), TAKE_PROFIT_PERCENT),
        'TRAILING_STOP_DISTANCE': (getattr(_ai_ref, 'TRAILING_STOP_DISTANCE', 0.8), TRAILING_STOP_DISTANCE),
        'MAX_OPEN_POSITIONS': (getattr(_ai_ref, 'MAX_OPEN_POSITIONS', 10), MAX_OPEN_POSITIONS),
    }
except ImportError:
    expected = {
        'MIN_BUY_SIGNALS': (3, MIN_BUY_SIGNALS),
        'MIN_AI_SCORE_FOR_BUY': (65, MIN_AI_SCORE_FOR_BUY),
        'STRATEGY_CONSENSUS_THRESHOLD': (70, STRATEGY_CONSENSUS_THRESHOLD),
        'ML_CONFIDENCE_THRESHOLD': (0.56, ML_CONFIDENCE_THRESHOLD),
        'STOP_LOSS_PERCENT': (1.5, STOP_LOSS_PERCENT),
        'TAKE_PROFIT_PERCENT': (3.0, TAKE_PROFIT_PERCENT),
        'TRAILING_STOP_DISTANCE': (0.8, TRAILING_STOP_DISTANCE),
        'MAX_OPEN_POSITIONS': (10, MAX_OPEN_POSITIONS),
    }

ok_count = 0
fail_count = 0
for key, (ia_val, actual) in expected.items():
    match = actual == ia_val
    icon = "OK" if match else "FAIL"
    if match:
        ok_count += 1
    else:
        fail_count += 1
    print(f"  [{icon:4s}] {key:35s} = {actual}  (IA attend {ia_val})")

print()
print("=" * 60)
print("  MODULES DEPENDANTS")
print("=" * 60)

# enhanced_signal_engine
try:
    from enhanced_signal_engine import STRATEGY_CONSENSUS_THRESHOLD as esc, ML_CONFIDENCE_THRESHOLD as mlc
    esc_ok = esc == 70
    mlc_ok = mlc == 0.56
    print(f"  [{'OK' if esc_ok else 'FAIL':4s}] enhanced_signal_engine  CONSENSUS = {esc}")
    print(f"  [{'OK' if mlc_ok else 'FAIL':4s}] enhanced_signal_engine  ML_CONF   = {mlc}")
    if esc_ok: ok_count += 1
    else: fail_count += 1
    if mlc_ok: ok_count += 1
    else: fail_count += 1
except Exception as e:
    print(f"  [FAIL] enhanced_signal_engine: {e}")
    fail_count += 2

# dynamic_sltp
try:
    from dynamic_sltp import STOP_LOSS_PERCENT as dsl, TAKE_PROFIT_PERCENT as dtp
    dsl_ok = dsl == expected['STOP_LOSS_PERCENT'][0]
    dtp_ok = dtp == expected['TAKE_PROFIT_PERCENT'][0]
    print(f"  [{'OK' if dsl_ok else 'FAIL':4s}] dynamic_sltp            SL = {dsl}")
    print(f"  [{'OK' if dtp_ok else 'FAIL':4s}] dynamic_sltp            TP = {dtp}")
    if dsl_ok: ok_count += 1
    else: fail_count += 1
    if dtp_ok: ok_count += 1
    else: fail_count += 1
except Exception as e:
    print(f"  [FAIL] dynamic_sltp: {e}")
    fail_count += 2

# crypto_data_fetcher
try:
    from crypto_data_fetcher import MIN_AI_SCORE_FOR_BUY as cdf_ai, MIN_BUY_SIGNALS as cdf_bs
    cai_ok = cdf_ai == expected['MIN_AI_SCORE_FOR_BUY'][0]
    cbs_ok = cdf_bs == expected['MIN_BUY_SIGNALS'][0]
    print(f"  [{'OK' if cai_ok else 'FAIL':4s}] crypto_data_fetcher     AI_SCORE = {cdf_ai}")
    print(f"  [{'OK' if cbs_ok else 'FAIL':4s}] crypto_data_fetcher     BUY_SIGNALS = {cdf_bs}")
    if cai_ok: ok_count += 1
    else: fail_count += 1
    if cbs_ok: ok_count += 1
    else: fail_count += 1
except Exception as e:
    print(f"  [FAIL] crypto_data_fetcher: {e}")
    fail_count += 2

print()
print("=" * 60)
total = ok_count + fail_count
if fail_count == 0:
    print(f"  RESULTAT: {ok_count}/{total} checks OK")
else:
    print(f"  RESULTAT: {ok_count}/{total} OK, {fail_count} ECHEC(S)")
print("=" * 60)
