#!/usr/bin/env python3
"""
Test script to verify all reports and analytics endpoints are working
"""
import requests
import json

def test_analytics_endpoints():
    """Test all analytics endpoints"""
    base_url = "http://localhost:5001"
    
    print("🧪 TESTING REPORTS & ANALYTICS ENDPOINTS")
    print("=" * 60)
    
    # Test User Analytics
    print("\n📊 Testing User Analytics...")
    try:
        response = requests.get(f"{base_url}/analytics/user-analytics")
        if response.status_code == 200:
            data = response.json()
            print(f"✅ User Analytics: {len(data['analytics'])} users found")
            for user in data['analytics']:
                print(f"   👤 {user['user_name']}: {user['total_days']} days, {user['attendance_rate']} attendance")
        else:
            print(f"❌ User Analytics failed: {response.status_code}")
    except Exception as e:
        print(f"❌ User Analytics error: {e}")
    
    # Test Recognition Logs
    print("\n🔍 Testing Recognition Logs...")
    try:
        response = requests.get(f"{base_url}/analytics/recognition-logs")
        if response.status_code == 200:
            data = response.json()
            print(f"✅ Recognition Logs: {len(data['logs'])} events found")
            unique_users = set(log['user'] for log in data['logs'])
            print(f"   👥 Unique users: {len(unique_users)}")
            print(f"   📅 Date range: {data['logs'][-1]['date']} to {data['logs'][0]['date']}")
        else:
            print(f"❌ Recognition Logs failed: {response.status_code}")
    except Exception as e:
        print(f"❌ Recognition Logs error: {e}")
    
    # Test System Performance
    print("\n⚙️ Testing System Performance...")
    try:
        response = requests.get(f"{base_url}/analytics/system-performance")
        if response.status_code == 200:
            data = response.json()
            print(f"✅ System Performance: {len(data['metrics'])} metrics found")
            for metric in data['metrics']:
                print(f"   📈 {metric['metric']}: {metric['value']} ({metric['status']})")
        else:
            print(f"❌ System Performance failed: {response.status_code}")
    except Exception as e:
        print(f"❌ System Performance error: {e}")
    
    # Test Attendance Data
    print("\n📋 Testing Attendance Data...")
    try:
        response = requests.get(f"{base_url}/attendance/data")
        if response.status_code == 200:
            data = response.json()
            print(f"✅ Attendance Data: {len(data['attendance'])} records found")
            unique_users = set(record['user'] for record in data['attendance'])
            print(f"   👥 Unique users: {len(unique_users)}")
        else:
            print(f"❌ Attendance Data failed: {response.status_code}")
    except Exception as e:
        print(f"❌ Attendance Data error: {e}")
    
    # Test Attendance Stats
    print("\n📊 Testing Attendance Stats...")
    try:
        response = requests.get(f"{base_url}/attendance/stats")
        if response.status_code == 200:
            data = response.json()
            print(f"✅ Attendance Stats: {data['today']} today, {data['thisWeek']} this week")
            print(f"   📈 Recent activity: {len(data['recentActivity'])} events")
        else:
            print(f"❌ Attendance Stats failed: {response.status_code}")
    except Exception as e:
        print(f"❌ Attendance Stats error: {e}")
    
    print("\n🎉 ALL TESTS COMPLETED!")
    print("\n📋 SUMMARY:")
    print("   • User Analytics: Shows detailed user statistics")
    print("   • Recognition Logs: Shows all face recognition events")
    print("   • System Performance: Shows system health metrics")
    print("   • Attendance Data: Shows clean attendance records")
    print("   • Attendance Stats: Shows summary statistics")
    print("\n✅ All reports should now be working in the frontend!")

if __name__ == "__main__":
    test_analytics_endpoints()





