#!/usr/bin/env python3
"""
Verifica Blueprint Registration
================================

Controlla quali blueprint sono registrati e su quali URL
"""

import sys
import os

# Aggiungi path al sys.path se necessario
sys.path.insert(0, '/var/www/enigma.pooltech.it/enigma_inventario')

print("=" * 70)
print("VERIFICA BLUEPRINT REGISTRATION")
print("=" * 70)

try:
    print("\n[1] Importo app...")
    from app_init import create_app
    
    print("✓ app_init importato")
    
    print("\n[2] Creo app...")
    app = create_app()
    print("✓ App creata")
    
    print("\n[3] Blueprint registrati:")
    print("-" * 70)
    
    for blueprint_name, blueprint in app.blueprints.items():
        print(f"\n  Blueprint: {blueprint_name}")
        print(f"    URL prefix: {blueprint.url_prefix or '/'}")
        
        # Mostra le routes
        rules = [rule for rule in app.url_map.iter_rules() if rule.endpoint.startswith(blueprint_name)]
        if rules:
            print(f"    Routes:")
            for rule in rules:
                methods = ','.join(sorted(rule.methods - {'HEAD', 'OPTIONS'}))
                print(f"      {methods:6s} {rule.rule}")
    
    print("\n" + "-" * 70)
    print("\n[4] Tutte le routes disponibili:")
    print("-" * 70)
    
    for rule in sorted(app.url_map.iter_rules(), key=lambda x: x.rule):
        methods = ','.join(sorted(rule.methods - {'HEAD', 'OPTIONS'}))
        print(f"  {methods:6s} {rule.rule:50s} → {rule.endpoint}")
    
    print("\n" + "=" * 70)
    print("✓ Verifica completata")
    print("=" * 70)
    
    # Verifica endpoint specifici
    print("\n[5] Verifica endpoint critici:")
    print("-" * 70)
    
    critical_endpoints = [
        ('/login', 'Login page'),
        ('/auth/login', 'Login API'),
        ('/dashboard', 'Dashboard'),
        ('/inventory/scanner', 'Scanner'),
        ('/api/v1/inventory/health', 'Inventory health'),
        ('/api/v1/inventory/session/start', 'Start session'),
    ]
    
    with app.test_client() as client:
        for url, description in critical_endpoints:
            try:
                response = client.get(url)
                if response.status_code == 404:
                    print(f"  ✗ {url:40s} → 404 NOT FOUND")
                elif response.status_code == 405:
                    print(f"  ⚠ {url:40s} → 405 (prova POST)")
                else:
                    print(f"  ✓ {url:40s} → {response.status_code}")
            except Exception as e:
                print(f"  ✗ {url:40s} → ERROR: {e}")
    
    print("\n" + "=" * 70)

except ImportError as e:
    print(f"\n✗ Errore import: {e}")
    print("\nVerifica:")
    print("  1. Sei nella directory corretta?")
    print("  2. Virtual environment attivo?")
    print("  3. Dependencies installate?")
    sys.exit(1)
    
except Exception as e:
    print(f"\n✗ Errore: {e}")
    import traceback
    traceback.print_exc()
    sys.exit(1)
