U
    hZ                  
   @   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 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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 d} t d | td}| }|d dkrTt d W 5 Q R  dS t d|d  d t d	|d
  d t d|d  d|d   t d | td}| }|D ]\}}t d| d| d qt d | td}| }t d|d   t d|d
   t d|d   |d dkrZ|d
 dkrZt d t d t d | td}| }|r|d rzt|d trt	
|d n|d }t t	j|dd t d t|trvt d t|   d!}d"|ksd#|krd$}t d% nVd&|krHt|d& trHd"|d& krhd$}t d' n d(|ks\d)|krhd$}t d* |svt d+ W n2 tk
r }	 zt d,|	  W 5 d}	~	X Y nX t d- t  }
| td.d/|
i}| }|d dkr$t d0|d   t d1|d
   t d2|d d3 nt d4 t d5 |d dkrb|d
 dkrbt d6 t d7 nt d8 t d9 W 5 Q R X dS ):z1Quick diagnosis of why dashboard shows empty dataz'=== Dashboard Empty Data Diagnosis ===
z&1. Checking if activity data exists...z
            SELECT COUNT(*) as total,
                   COUNT(DISTINCT developer_id) as developers,
                   MIN(timestamp) as earliest,
                   MAX(timestamp) as latest
            FROM activity_records
        r   u-      ❌ No activity records found in database!Nu      ✓ Found z recordsu      ✓    z developersu      ✓ Date range:    z to    z
2. Developers in database:z
            SELECT DISTINCT developer_id, COUNT(*) as records
            FROM activity_records
            WHERE developer_id IS NOT NULL
            GROUP BY developer_id
            ORDER BY developer_id
        z   - z: z
3. Checking data format...aX  
            SELECT 
                COUNT(CASE WHEN activity_data IS NOT NULL AND activity_data != '{}' THEN 1 END) as has_json,
                COUNT(CASE WHEN application_name IS NOT NULL THEN 1 END) as has_app_name,
                COUNT(CASE WHEN window_title IS NOT NULL THEN 1 END) as has_title
            FROM activity_records
        z&   Records with activity_data (JSON): z"   Records with application_name: z   Records with window_title: uN   
   ⚠️ PROBLEM FOUND: Data is in JSON format but not extracted to columns!z4   The dashboard expects data in individual columns.z(
4. Sample activity_data JSON structure:z
            SELECT activity_data 
            FROM activity_records 
            WHERE activity_data IS NOT NULL 
            AND activity_data != '{}' 
            AND activity_data != ''
            LIMIT 1
           )indentz
5. JSON Structure Analysis:z   Top-level keys: FZappZapplicationTu$      ✓ Found app field at root leveldatau'      ✓ Found app field in nested 'data'fileZprojectu)      ✓ Found file/project based structureu-      ❌ No recognizable app/file fields found!z   Error parsing JSON: z
6. Checking today's data...z
            SELECT COUNT(*) as count,
                   COUNT(DISTINCT developer_id) as devs,
                   SUM(duration) / 3600 as hours
            FROM activity_records
            WHERE DATE(timestamp) = :today
        todayz   Today's records: z   Active developers: z   Total hours: z.1f if row[2] else 0u      ❌ No data for today!z
7. SOLUTION:uD      ✅ Run the flexible_dashboard_fix.py script to extract JSON dataz<   This will populate the required columns for the dashboardu.      ❓ Check your data collection/sync processuE      ❓ Verify the dashboard API is connecting to the correct database)printengineZconnectZexecuter   ZfetchoneZfetchall
isinstancestrjsonloadsdumpsdictlistkeys	Exceptionr   Znowdate)ZconnresultrowZ
developersZdev_idcountZstatsr   Zhas_apper    r(   ./quick_dashboard_diagnosis.pydiagnose_dashboard_issue   s    	&

 

r*   __main__)Z
sqlalchemyr   r   r   osZdotenvr   r   getenvr   r   r   r	   r
   r   r   r*   __name__r(   r(   r(   r)   <module>   s"   
"