import paramiko
import csv
from io import StringIO

HOST = "135.125.102.180"
USER = "ubuntu"
PASS = "BotPascal2026!"
REMOTE_BASE = "/var/www/html/repondeur_mail_grok"

def main():
    try:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(HOST, username=USER, password=PASS)
        
        # Get queue.csv
        stdin, stdout, stderr = ssh.exec_command(f"cat {REMOTE_BASE}/data/queue.csv")
        queue_content = stdout.read().decode()
        
        ssh.close()
        
        # Parse CSV
        reader = csv.DictReader(StringIO(queue_content))
        rows = list(reader)
        
        print(f"📊 Analyse de queue.csv")
        print("=" * 60)
        print(f"Total messages dans queue.csv: {len(rows)}")
        print()
        
        # Count by status
        status_counts = {}
        tag_counts = {}
        
        for row in rows:
            status = row.get('status', 'UNKNOWN')
            tag = row.get('tag_zimbra', 'UNKNOWN')
            
            status_counts[status] = status_counts.get(status, 0) + 1
            tag_counts[tag] = tag_counts.get(tag, 0) + 1
        
        print("📋 Par Statut:")
        for status, count in sorted(status_counts.items()):
            print(f"   - {status}: {count}")
        
        print("\n🏷️  Par Tag Zimbra:")
        for tag, count in sorted(tag_counts.items()):
            print(f"   - {tag}: {count}")
        
        # Messages that should be displayed on index.php (PENDING only)
        display_count = 0
        pending_msgs = []
        
        for row in rows:
            status = row.get('status', '')
            # index.php filters out PAYPLUG_AUTO and non-PENDING messages
            if status == 'PENDING' or status == '':
                display_count += 1
                pending_msgs.append({
                    'id': row.get('id'),
                    'email': row.get('email'),
                    'tag': row.get('tag_zimbra'),
                    'status': status
                })
        
        print(f"\n📺 Messages qui DEVRAIENT s'afficher sur index.php: {display_count}")
        
        if display_count < len(rows):
            print(f"\n⚠️  {len(rows) - display_count} message(s) masqué(s) car:")
            for row in rows:
                status = row.get('status', '')
                if status not in ['PENDING', '']:
                    print(f"   - ID {row.get('id')}: status='{status}'")
        
    except Exception as e:
        print(f"❌ Error: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    main()
