U
    Sh                  
   @   s   d dl mZmZ d dlZd dlmZ d dlmZ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	timedelta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 f} t d | td}dd |D }t d|  t d | td}| }|d	 rt d
|d	   t d|d   t d|d   |d r|d  nd}t }|r||k r|| j}t d| d t d| d|  t d | td}|	 }|rt d t d |D ]B\}}	}
}|rJ|nd	}t d| d|	dd|
dd|d q4|d	 d	 }t }||k rt d t d| d t d |  t d!|| j d" nt d# t }|r|d	 d	 n|}t d$ t d%|  t d|  |r|d	 }| td&||d'}| }| td&||d'}| }t d(|  t d)| d*|d	  d+|d d,d- t d.| d*|d	  d+|d d/d- t d0 |r2|d	 d	 |k r2t d1 t d2 t d3 t d4|  t d5 t d6 t d7 t d8 t d9 nB|rl|d	 d	 |krlt d: t d; t d< t d= nt d> W 5 Q R X dS )?z)Check if the issue is with date filteringz%=== Checking Date-Related Issues ===
z"1. Getting actual developer IDs...z
            SELECT DISTINCT CAST(developer_id AS VARCHAR) as dev_id
            FROM activity_records
            WHERE developer_id IS NOT NULL
            ORDER BY 1
        c                 S   s   g | ]}|d  qS )r    ).0rowr   r   ./check_date_issue_fixed.py
<listcomp>'   s     z%check_date_issues.<locals>.<listcomp>z   Found developers: z"
2. Date range of activity data...z
            SELECT 
                MIN(timestamp) as earliest,
                MAX(timestamp) as latest,
                COUNT(DISTINCT DATE(timestamp)) as unique_days
            FROM activity_records
        r   z   Earliest: z   Latest:    z   Unique days:    Nu*   
   ⚠️ IMPORTANT: Latest data is from z
 days ago!z$   The dashboard defaults to today (z) but your data ends on z%
3. Activity count by recent dates...a~  
            SELECT 
                DATE(timestamp) as activity_date,
                COUNT(*) as record_count,
                COUNT(DISTINCT CAST(developer_id AS VARCHAR)) as developers,
                SUM(duration) / 3600 as total_hours
            FROM activity_records
            GROUP BY DATE(timestamp)
            ORDER BY activity_date DESC
            LIMIT 10
        z-   Date        | Records | Developers | Hoursz0   ---------------------------------------------z   z | 7Z10z5.1fu   
   ⚠️ PROBLEM FOUND!z   - Dashboard is looking for: z (today)z   - Your latest data is from: z
   - Gap: z daysz   No data found!z/
4. Comparing today vs latest date with data...z
   Today: z
                SELECT COUNT(*) as count, SUM(duration) / 3600 as hours
                FROM activity_records
                WHERE CAST(developer_id AS VARCHAR) = :dev_id
                AND DATE(timestamp) = :check_date
            )dev_idZ
check_datez
   Developer: z   - Today (z): z
 records, z.1f if today_row[1] else 0z hoursz   - Latest (z.1f if latest_row[1] else 0z
5. SOLUTION:uL      ✅ YOUR ISSUE: Dashboard is showing today's date but your data is older!z
   IMMEDIATE FIX:z>   1. In the dashboard, look for a date picker/calendar widgetz   2. Select the date: z<   3. You should immediately see hours and productivity dataz
   PERMANENT FIXES:z8   - Update your data sync to include today's activitieszA   - Modify the dashboard to default to the latest available datez5   - Add a 'Show Latest Data' button to the dashboardu      ✓ Data exists for todayz#   If still showing 0 hours, check:z    - Application name extractionz   - Dashboard query logicu$      ❌ No data found in the database)
printengineZconnectZexecuter   Zfetchoner   todayZdaysZfetchall)ZconnresultZdev_idsr   Zlatest_dater   Zdays_agoZdatesZact_datecountZdevsZhoursZ	hours_valZlatest_data_dater   Z	today_rowZ
latest_rowr   r   r   check_date_issues   s    
*


&&

r    __main__)Z
sqlalchemyr   r   osZdotenvr   r   r   r   getenvr   r	   r
   r   r   r   r   r    __name__r   r   r   r   <module>   s"   
" 