U
    [Mh                     @   s>   d Z ddlmZ ddlmZmZmZ dd Zedkr:e  dS )zO
Debug ActivityWatch time calculation to understand why durations are so small
    )ActivityWatchClient)datetimetimezone	timedeltac                  C   s  t  } ttj}|jddddd}td td| d|  td zb| ||}tdt|  |s|td W d	S d}i }i }td
 td t	|d	d D ]\}}|d }	|	d }
||	7 }|
dd}|
dd}t|d dd|d d d|d	d dd|	dd|
dd|  ||kr:d||< ||  |	7  < ||kr\d||< ||  |	7  < qtd td|d d!|d d d"|d# d$d% td& td' t| d(d) d*d+D ]<\}}|d# }|d }td,|dd-|d.d/|d0d1 qtd2 td' t| d3d) d*d+d	d }|D ]D\}}|d# }|d }td,|d	d4 d5d-|d.d/|d0d1 q6td6 td' d7d8 |D }t|}t|}||  d# }td9|d  td:|d  td;|d$d% t|dkrd<|d# | d= d d>nd? d@d8 |D }tdAt| dBt| dCt|t| d= d dD dEd8 |D }tdFt| dBt| dCt|t| d= d dD W d*S  tk
r } z(tdG|  dd	l}|  W Y dHS d	}~X Y nX d	S )Iz$Debug ActivityWatch time calculationr   )ZhourZminutesecondZmicrosecondu-   🔍 DEBUGGING ACTIVITYWATCH TIME CALCULATIONu   📅 Date range: z to zP================================================================================u   📊 Total events fetched: u   ❌ No activity data found!Nu   
📋 SAMPLE EVENTS (first 10):zP--------------------------------------------------------------------------------
   duration<   Zapplication_nameZUnknowncategory   Z2dz. 	timestampz%H:%M:%Sz |    Z20sz6.1fzs (z5.1fzm) | u   
📈 TOTAL DURATION ANALYSIS:z   Raw total: z.1fz seconds = z minutes = i  z.2fz hoursu   
📊 DURATION BY CATEGORY:z2--------------------------------------------------c                 S   s   | d S Nr    xr   r   ./debug_activitywatch_time.py<lambda>@       z*debug_activitywatch_time.<locals>.<lambda>T)keyreversez   z: z6.2fzh (z7.1fzm)u   
🎯 TOP APPLICATIONS BY TIME:c                 S   s   | d S r   r   r   r   r   r   r   G   r      Z30su   
🔍 DATA QUALITY CHECK:c                 S   s   g | ]}|d  qS )r   r   ).0activityr   r   r   
<listcomp>R   s     z,debug_activitywatch_time.<locals>.<listcomp>z   First event: z   Last event:  z   Time span:   z   Coverage:    d   z% of time spanz   Coverage: N/Ac                 S   s   g | ]}|d  dk r|qS )r      r   r   ar   r   r   r   ]   s      z   Short events (<5s): /z (z%)c                 S   s   g | ]}|d  dkr|qS )r   i,  r   r   r   r   r   r   a   s      z   Long events (>5m): u   ❌ Error: F)r   r   Znowr   ZutcreplaceprintZget_activity_datalen	enumerategetstrftimesorteditemsminmaxZtotal_seconds	Exception	traceback	print_exc)Z	aw_clientendstartZactivity_dataZtotal_durationZduration_breakdownZapp_durationsir   Zduration_secZduration_minZappr
   r   ZhoursZminutesZsorted_appsZ
timestampsZearliestZlatestZ	time_spanZshort_eventsZlong_eventser+   r   r   r   debug_activitywatch_time   s    H

*&.,66r1   __main__N)__doc__Zactivitywatch_clientr   r   r   r   r1   __name__r   r   r   r   <module>   s
   d