U
    Shc                  
   @   s   d dl mZmZ d dlZd dlZd dlmZ d dlmZmZ e  e	dZ
e
se	ddZe	dd	Ze	d
dZe	ddZe	ddZde de de de de 
Z
ee
Zdd Zedkre  dS )    )create_enginetextN)load_dotenv)datetimedateDATABASE_URLDB_HOSTZ	localhostDB_PORTZ5432DB_NAMEZtimesheet_dbDB_USERZpostgresDB_PASSWORD zpostgresql://:@/c                  C   s  t d t } t d | td}| }t d|d   t d|d   t d|d	   t d
|d   |d r|d nd}|d r|d nd}t d|dd t d|dd t d | td}| }t|D ]\}}t d|d  d t d|d   t d|d   t d|d	  d t d|d   |d rzbt|d t	rzt
|d n|d }d|krt d|d   d|krd|krt d W q   Y qX qt d t }	| td d!|	i}| }
|
rV|
D ]P\}}}}|r|nd}|r&|nd}t d"| d#| d$|d%d&|d%d'	 qnt d( t d) | td*}|D ]\}zt|t	rt
|n|}t|trPd+}d|krt d,|d   d-}d.|krt|d. trd|d. krt d/|d. d   d-}d|kr,d0|kr,t d1 d-}|sPt d2 t d3t|   W n   Y nX qxt d4 |d dks|d	 dkrt d5 t d6 nt d7 t d8 W 5 Q R X d9S ):z$Debug why durations are showing as 0z!=== Debugging Duration Issue ===
z*1. Checking duration values in database...a  
            SELECT 
                COUNT(*) as total_records,
                COUNT(CASE WHEN duration IS NULL THEN 1 END) as null_durations,
                COUNT(CASE WHEN duration = 0 THEN 1 END) as zero_durations,
                COUNT(CASE WHEN duration > 0 THEN 1 END) as positive_durations,
                AVG(duration) as avg_duration,
                MAX(duration) as max_duration
            FROM activity_records
        z   Total records: r   z   NULL durations:    z   Zero durations:    z   Positive durations:          z   Average duration: z.2fz secondsz   Max duration: z(
2. Sample records with duration data...ab  
            SELECT 
                developer_id,
                application_name,
                duration,
                timestamp,
                activity_data
            FROM activity_records
            WHERE developer_id IN ('ankita gholap', 'RiddhiDhakhara', 'ankita_gholap')
            ORDER BY timestamp DESC
            LIMIT 10
        z
   Record r   z   Developer: z   App: z   Duration: z   Timestamp: Zdurationz   Duration in JSON: Z	timestampZ
start_timez.   Timestamps in JSON - can calculate durationz
3. Checking today's data...a,  
            SELECT 
                developer_id,
                COUNT(*) as count,
                SUM(duration) as total_duration,
                AVG(duration) as avg_duration
            FROM activity_records
            WHERE DATE(timestamp) = :today
            GROUP BY developer_id
        todayz   z: z
 records, z.0fz total seconds, z avg secondsz   No data for today!zD
4. Checking if duration needs to be extracted from activity_data...z
            SELECT activity_data
            FROM activity_records
            WHERE activity_data IS NOT NULL
            AND activity_data != '{}'
            LIMIT 5
        Fz   Found 'duration' in JSON: Tdataz$   Found 'duration' in nested data: Zend_timestampz2   Found timestamp fields - can calculate durationz'   No duration info in this JSON recordz   Keys available: z
5. SOLUTION:uA      ✅ Need to extract/calculate duration from activity_data JSONz#   Run: python fix_duration_data.pyu4      ❓ Duration data exists but may not be for todayz   Check your data sync processN)printengineZconnectZexecuter   ZfetchoneZfetchall	enumerate
isinstancestrjsonloadsr   r   dictlistkeys)ZconnresultZstatsZavg_durZmax_durZrecordsirecordr   r   Z
today_dataZdev_idcountZ	total_durZtotal_sZavg_sZdata_strZduration_found r&   ./debug_duration_issue.pydebug_duration_issue   s    &

	,

(

r(   __main__)Z
sqlalchemyr   r   r   osZdotenvr   r   r   getenvr   r   r	   r
   r   r   r   r(   __name__r&   r&   r&   r'   <module>   s$   
" 