
    i                        d Z ddlmZmZ ddlZddlZ G d d      Zedk(  r e       Zej                         Z	 e
d        e
d        e
d	        e
d
e	d            e
de	d            e
de	d            e
de	d            e
de	d    d        e
d        e
dej                                  e
d       yy)u%  
Affichage simple des cycles de rotation de l'IA
================================================

Affiche clairement où en est le bot dans son cycle d'analyse:
- Cycle en cours (barre de progression)
- Temps écoulé / Durée totale
- Prochaine rotation prévue

Comme une route qui tourne!
    )datetime	timedeltaNc                   (    e Zd ZdZd Zd Zd Zd Zy)CycleDisplayu.   Affichage simple et compréhensible des cyclesc                      d| _         d| _        y )N   zia_surveillance_cache.json)cycle_duration
cache_file)selfs    ./cycle_display.py__init__zCycleDisplay.__init__   s     6    c                    d}t         j                  j                  | j                        r]	 t	        | j                  d      5 }t        j                  |      }|j                  d      }|rt        j                  |      }ddd       t        j                         }|r||z
  j                         dkD  rddddd	d
dddS ||z
  j                         }| j                  dz  }t        ||z        dz   }||z  }	|	|z  dz  }
||	z
  }t        |	dz        }t        |	dz        }| d| d}t        |dz        }t        |dz        }|dkD  r
d| d| d}nd| d}|
dk  rd}d}d}n|
dk  rd}d}d}n|
dk  rd}d}d}nd}d }d!}||t        |
      ||||d"| d#| |r|j                  d$      d&	S d%d&	S # 1 sw Y   5xY w#  Y =xY w)'z"Retourne le statut du cycle actuelNrlast_updatei  z
En attente   r   z0m 0su   Démarrage imminentu   ⚪⚪⚪⚪u   🔵z!Initialisation du cycle d'analyse)statuscycle_numberprogress_pcttime_in_cyclenext_rotationvisualemojimessage<   d   zm szDans    u   🟢⚪⚪⚪u   🟢u   Début de cycle2   u   🟢🟡⚪⚪u   🟡zMi-cycleK   u   🟢🟡🟠⚪u   🟠zFin de cycleu   🟢🟡🟠🔴u   🔴zRotation imminentezCycle #z - z%H:%M:%SInconnu)	r   r   r   r   r   r   r   r   r   )ospathexistsr
   openjsonloadgetr   fromisoformatnowtotal_secondsr	   intstrftime)r   r   fcachelast_update_strr*   elapsedcycle_duration_secr   time_in_current_cycler   time_to_nextminssecsr   	next_mins	next_secsr   r   r   r   s                        r   get_cycle_statuszCycleDisplay.get_cycle_status   s^    77>>$//*$//3/ N1 IIaLE&+ii&>O&&.&<&<_&M	N lln s[0??ADH& ! !!(!6(?	 	 $335!0025 7%7781< !(*< <-0BBcI *,AA (2-.(2-.&4&* r)*	r)*	q=#I;b1=M#I;a0M "$FE&FB%FEFB&FE#F'FE)F (-** c&:?J;//
;

 
	
 QZ

 
	
IN N
s#   G >F4G 4F>9G Gc                 T    | j                         }|d    d|d    d|d    d|d    S )z.Affichage ultra-simple pour la barre de statutr   z Cycle #r   u    • r   r   )r9   r   r   s     r   get_simple_displayzCycleDisplay.get_simple_displayp   sI    &&( /"(6.+A*B%H_G``eflm|f}e~r   c           	          | j                         }| j                         |d   |d    d|d   |d   |d   |d   |d   d	d
S )u&   Affichage détaillé pour le dashboardr   r   %r   r   r   r   r   )
visual_barprogressr   cycler1   nextr   )simpledetailed)r9   r<   r;   s     r   get_detailed_displayz!CycleDisplay.get_detailed_displayw   sm    &&( --/$X.%n56a8 */!/2/!),
 	
r   N)__name__
__module____qualname____doc__r   r9   r<   rE    r   r   r   r      s    87U
n@
r   r   __main__z=
============================================================u!   🔄 STATUT DU CYCLE D'ANALYSE IAz<============================================================z
  r   u   
  📊 r   u     ⏱️  Temps dans le cycle: r   u     ⏰ Prochaine rotation: r   u     📈 Progression: r   r>   u   
  📱 Affichage simple: z=============================================================
)rI   r   r   r&   r"   r   rF   displayr9   r   printr<   rJ   r   r   <module>rN      s   
 )  	t
 t
l znG%%'F	-	
-.	&M	D!"
#$	IfY'(
)*	+F?,C+D
EF	&vo'>&?
@A	 !7 8
:;	-	'(B(B(D'E
FG	- r   