"""
Script pour nettoyer les anciens trades du fichier de logs
Garde seulement les 30 derniers jours
"""
import json
import os
from datetime import datetime, timedelta
import shutil

SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
TRADES_LOG = os.path.join(SCRIPT_DIR, 'trade_logs', 'trades_log.jsonl')
SIGNALS_LOG = os.path.join(SCRIPT_DIR, 'trade_logs', 'signals_log.jsonl')

def clean_log_file(filepath: str, days_to_keep: int = 30):
    """Nettoie un fichier de logs en gardant seulement les N derniers jours"""
    if not os.path.exists(filepath):
        print(f"❌ Fichier {filepath} introuvable")
        return
    
    # Créer backup
    backup_path = filepath + f'.backup_{datetime.now().strftime("%Y%m%d_%H%M%S")}'
    shutil.copy2(filepath, backup_path)
    print(f"✅ Backup créé: {os.path.basename(backup_path)}")
    
    # Calculer date limite
    cutoff_date = datetime.now() - timedelta(days=days_to_keep)
    
    # Lire et filtrer
    kept_entries = []
    removed_count = 0
    
    with open(filepath, 'r', encoding='utf-8') as f:
        for line in f:
            try:
                entry = json.loads(line.strip())
                entry_date = datetime.fromisoformat(entry['timestamp'])
                
                if entry_date >= cutoff_date:
                    kept_entries.append(line)
                else:
                    removed_count += 1
            except:
                # Garder les lignes invalides pour éviter corruption
                kept_entries.append(line)
    
    # Écrire le fichier nettoyé
    with open(filepath, 'w', encoding='utf-8') as f:
        f.writelines(kept_entries)
    
    print(f"✅ {os.path.basename(filepath)}: {len(kept_entries)} entrées gardées, {removed_count} supprimées")
    return len(kept_entries), removed_count

def main():
    print("=" * 60)
    print("🧹 NETTOYAGE DES ANCIENS TRADES")
    print("=" * 60)
    print()
    
    # Nettoyer trades_log.jsonl (garder 30 jours)
    print("📊 Nettoyage de trades_log.jsonl (garder 30 derniers jours)...")
    kept, removed = clean_log_file(TRADES_LOG, days_to_keep=30)
    print()
    
    # Nettoyer signals_log.jsonl (garder 7 jours seulement)
    print("📊 Nettoyage de signals_log.jsonl (garder 7 derniers jours)...")
    kept_sig, removed_sig = clean_log_file(SIGNALS_LOG, days_to_keep=7)
    print()
    
    print("=" * 60)
    print("✅ NETTOYAGE TERMINÉ")
    print(f"   Trades: {kept} gardés, {removed} supprimés")
    print(f"   Signaux: {kept_sig} gardés, {removed_sig} supprimés")
    print("=" * 60)
    print()
    print("💡 Les backups sont disponibles dans trade_logs/")
    print("   Rafraîchissez le dashboard pour voir les changements")

if __name__ == '__main__':
    main()
