
    i#                        d Z ddlZddlZddlmZ ddlmZ  ee      j                  Zg dg dg dg dg d	g d
g dg dddgg dg dg ddZ	h dZ
d Zd Zd Zedk(  r, ed      Zej#                         dk(  r e        y ed       yy)u   
Script de nettoyage intelligent du projet
=========================================

Analyse et déplace les fichiers obsolètes vers un dossier archive/
    N)datetime)Path)z	test_*.pyzquick_test.pyzminimal_test.htmlztest_debug.htmlztest_loading.htmlzrefresh.htmlztemp_*.jsonz	temp_*.js)zanalyze_6h.pyzanalyze_balance_history.pyzanalyze_bearish_context.pyzanalyze_improvements.pyzanalyze_js.pyzanalyze_performance.pyzanalyze_positions_config.pyzanalyze_quality.pyzanalyze_recent_trades.pyzanalyze_signals.pyzanalyze_signals_log.pyzanalyze_trades.pyzanalyze_trade_logs.pyzanalyze_trading_performance.pyzaudit_code.py)fix_binance_sync.pyzfix_cache_production.pyzfix_chars.pyzfix_dashboard.pyzfix_encoding.pyzfix_positions.pyzapply_enhancements.py)	zsell_dot.pyzsell_ltc.pyzsell_zec.pyzfinal_sell.pyzforce_sell_all.pyzforce_sell_remaining.pyzquick_sell_all.pyzsell_all_binance.pyzsell_all_positions.py)zdebug_ia_ready.pyzdebug_rotation.pyzdebug_traceback.pyzdiagnose_no_signals.pyzdiagnose_treasury_chart.pyzdiagnostic_selection.pyzdiag_ia_coherence.pyzdiag_rotation.pyzdiag_surveillance.pyzdiag_sync.pyztrace_ia_bot.py)zcheck_balance_simple.pyzcheck_balance_testnet.pyzcheck_binance_balances.pyzcheck_bot_buys.pyzcheck_bot_state.pyzcheck_bot_status.pyzcheck_coherence.pyzcheck_ia_status.pyzcheck_modules_status.pyzcheck_positions_binance.pyzcheck_signals.pyzcheck_sl_tp.pyzcheck_status_ascii.pyzcheck_test_symbol.pyzquick_check.py)zlaunch_all.pyzrestart_dashboard.pyzstart_all.pyzstart_dashboard.pyzstop_all.pyzReset_trading_old.py)zexplain_sync.pyzsync_binance.pyzsync_binance_fix.pyzsync_positions.pyr   zdemo_modules_ia.pyztest_integration_demo.py)zauto_cleanup.pyzclean_positions.pyzclose_positions_manual.pyzconvert_to_usdt.pyzdeep_clean.pyzforce_analysis_update.pyzforce_cache.pyzforce_disable_crash_mode.pyzinit_volatility_scores.pyzmaintenance_positions.pyzmonitor_achats.pyzmonitor_btc.pyzrapport_tracabilite.pyzreset_complete.pyzrun_backtest_comparison.pyzshow_balances.pyzshow_exclusions.pyzvalidate_positions.pyzcrypto_monitor.py)zdashboard_backup_broken.htmlzdashboard_corrupted.htmlzdashboard_server.py)z*.logz*.txtz*_backup_*.jsonzbot_err.logzbot_error.logzbot_out.logzbot_output.logzdashboard_err.logzdashboard_error.logzdashboard_out.logzdash_err.logzdash_out.logzdebug_calculate_next.txtzstatus_output.txtztest_output.txtztest_status_output.txt)tests_obsoletesanalyze_obsoletefix_scriptsmanual_sellsdebug_scriptscheck_scriptsold_starterssync_scriptsdemo_scriptsmisc_obsoleteold_dashboardslogs_backups>+   	config.pysell_all.pybacktesting.pytrading_bot.pyai_predictor.pybot_watchdog.pydynamic_sltp.pytrade_logger.pyReset_trading.pycheck_balance.pymarket_safety.pysmart_rotation.pytrain_ai_model.pycheck_positions.pyai_self_optimizer.pydynamic_blacklist.pytelegram_notifier.pyvolatility_scorer.pyai_advanced_scorer.pyensemble_predictor.pytechnical_analyzer.pyadvanced_strategies.pyai_realtime_service.pycrypto_data_fetcher.pyfeature_engineering.pyauto_updater_service.pycorrelation_analyzer.pydashboard_api_server.pyperformance_analyzer.pyrisk_adjusted_scorer.pysmart_entry_criteria.pyfetch_historical_data.pymonte_carlo_simulator.pytime_pattern_analyzer.pycleanup_obsolete_files.pyenhanced_signal_engine.pymarket_regime_detector.pyai_opportunity_selector.pyhistorical_data_updater.pyvolume_profile_analyzer.pylong_term_trend_analyzer.pymulti_timeframe_analyzer.pyadvanced_feature_engineering.pyc                      t        j                         j                  d      } t        d|  z  }t        j                         D ]  }||z  j                  dd        |S )u   Créer la structure d'archivagez%Y%m%d_%H%M%Sarchive_T)parentsexist_ok)r   nowstrftime
SCRIPT_DIROBSOLETE_FILESkeysmkdir)	timestamparchive_dircategorys      ./cleanup_obsolete_files.pycreate_archive_structurerK      sc    ''8I)55K"'') D	x	&&td&CD     c                     ||z  | j                   z  }	 t        j                  t        |       t        |             y# t        $ r%}t        d| j                    d|        Y d}~yd}~ww xY w)u#   Déplacer un fichier vers l'archiveTu#   ❌ Erreur lors du déplacement de : NF)nameshutilmovestr	Exceptionprint)	file_pathrI   rH   destes        rJ   move_to_archiverX      sa    !INN2DC	NCI. 3INN3C2aSIJs   (= 	A+A&&A+c                     t        d       t        d       t        d       t                t               } t        d| j                          t                t        j	                         D ci c]  }|d }}t        j                         D ]  \  }}t        d|        |D ]  }d|v r|j                  dd      }t        j                  |      D ]Y  }|j                         s|j                  t        vs't        |||       s5||xx   dz  cc<   t        d	|j                          [ t        |z  }|j                         s|j                         st        |||       s||xx   dz  cc<   t        d	|         t                 t        d       t        d
       t        d       t        |j                               }|j                         D ]  \  }}	|	dkD  st        d|dd|	dd       ! t        d| d       t        d|         t                t        t!        t        j                  d                  }
t        d|
        t                t        d       t        d       t        d       yc c}w )u+   Scanner et archiver les fichiers obsolèteszP================================================================================u$   🧹 NETTOYAGE INTELLIGENT DU PROJETu   📁 Archive créée: r   u   🔍 Traitement: *    u     ✅ u   📊 RÉSUMÉ DU NETTOYAGEz  30srN   3dz	 fichiersz

  TOTAL: u    fichiers archivésu   
  📁 Archive: z*.pyu!     📄 Fichiers Python restants: u   ✅ Nettoyage terminé !N)rT   rK   rO   rD   rE   itemsreplacerC   globis_file
KEEP_FILESrX   existssumvalueslenlist)rH   rI   statspatternspatternbase_patternfilerU   total_movedcountremaining_pys              rJ   scan_and_archiverq   	  s=   	(O	
01	(O	G*,K	";#3#3"4
56	G)7)<)<)>?XXq[?E? -224 (!(,- 	2Gg~&sB7&OOG4 8D||~$)):*E*4;G!(Oq0O!F499+"67	8 '0	##%)*;*;*=&y(KHh1,wi01	2" 	). 
(O	
&'	(Oelln%K ;;= <%19BxnBuRj	:;< 
K}$7
89	{m
,-	G tJOOF345L	-l^
<=	G	(O	
$%	(O[ @s   .
J__main__uK   
⚠️  Ce script va archiver les fichiers obsolètes.
Continuer ? (O/N): Ou   ❌ Opération annulée)__doc__osrP   r   pathlibr   __file__parentrC   rD   rc   rK   rX   rq   __name__inputresponseupperrT    rL   rJ   <module>r~      s    
   (^""

	&
& 	".edN;
z8t zdeH~~3'( rL   