#!/usr/bin/env python3
"""
Script para diagnosticar la integración de Notion
"""

import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent))

from config import settings
from notion_client import Client


def main():
    print("\n" + "=" * 70)
    print("🔍 DIAGNÓSTICO COMPLETO DE NOTION")
    print("=" * 70 + "\n")

    token = settings.NOTION_API_TOKEN
    database_id = settings.NOTION_DATABASE_ID

    print(f"Token: {token[:30]}..." if token else "❌ Token no configurado")
    print(f"Database ID: {database_id}\n")

    if not token:
        print("❌ Configura NOTION_API en .env\n")
        return

    client = Client(auth=token)

    # Test 1: Verificar que el token sea válido
    print("📝 Test 1: Verificando token...")
    try:
        # Intentar buscar páginas (cualquiera)
        results = client.search(query="", page_size=1)
        print("✅ Token válido - la integración está activa\n")

        # Ver si tiene acceso a alguna página
        pages = results.get("results", [])
        if pages:
            print(f"✅ La integración tiene acceso a {len(pages)} página(s)")
            for page in pages[:3]:
                page_id = page.get("id", "N/A")
                page_type = page.get("object", "N/A")
                print(f"   - {page_type}: {page_id}")
        else:
            print("⚠️  La integración NO tiene acceso a ninguna página aún")
            print("   Esto es normal si acabas de crear la integración.\n")

    except Exception as e:
        print(f"❌ Error con el token: {e}\n")
        return

    # Test 2: Verificar acceso a la base de datos específica
    print("\n📊 Test 2: Verificando acceso a la base de datos CBC...")
    try:
        database = client.databases.retrieve(database_id=database_id)
        print("✅ ¡ÉXITO! La integración puede acceder a la base de datos\n")

        title = database.get("title", [{}])[0].get("plain_text", "Sin título")
        print(f"   Título: {title}")
        print(f"   ID: {database['id']}")
        print(f"\n   Propiedades:")
        for prop_name in database.get("properties", {}).keys():
            print(f"   ✓ {prop_name}")

        print("\n" + "=" * 70)
        print("✅ TODO CONFIGURADO CORRECTAMENTE")
        print("=" * 70)
        print("\n🚀 Ejecuta: python test_notion_integration.py\n")

    except Exception as e:
        error_msg = str(e)
        print(f"❌ No se puede acceder a la base de datos")
        print(f"   Error: {error_msg}\n")

        if "Could not find database" in error_msg:
            print("=" * 70)
            print("⚠️  ACCIÓN REQUERIDA: Compartir la base de datos")
            print("=" * 70)
            print("\n📋 PASOS DETALLADOS:\n")
            print("1. Abre Notion en tu navegador")
            print("\n2. Ve a tu base de datos 'CBC'")
            print(f"   Opción A: Usa este link directo:")
            print(f"   → https://www.notion.so/{database_id.replace('-', '')}")
            print(f"\n   Opción B: Busca 'CBC' en tu workspace")
            print("\n3. En la página de la base de datos, busca el botón '...' ")
            print("   (tres puntos) en la esquina SUPERIOR DERECHA")
            print("\n4. En el menú que se abre, busca:")
            print("   • 'Connections' (en inglés)")
            print("   • 'Conexiones' (en español)")
            print("   • 'Connect to' (puede variar)")
            print("\n5. Haz click y verás un menú de integraciones")
            print("\n6. Busca tu integración en la lista")
            print("   (Debería tener el nombre que le pusiste al crearla)")
            print("\n7. Haz click en tu integración para activarla")
            print("\n8. Confirma los permisos cuando te lo pida")
            print("\n9. Deberías ver un mensaje confirmando la conexión")
            print("\n10. ¡Listo! Vuelve a ejecutar:")
            print("    python verify_notion_permissions.py\n")
            print("=" * 70)

            # Crear una página de prueba simple para verificar
            print("\n💡 ALTERNATIVA: Crear una nueva página de prueba\n")
            print("Si no encuentras la opción de conexiones en tu base de datos,")
            print("puedes crear una página nueva y compartirla con la integración:\n")
            print("1. Crea una nueva página en Notion")
            print("2. En esa página, click en 'Share' (Compartir)")
            print("3. Busca tu integración y agrégala")
            print("4. Luego convierte esa página en una base de datos")
            print("5. Usa el ID de esa nueva base de datos\n")


if __name__ == "__main__":
    main()
