168 lines
6.2 KiB
Python
168 lines
6.2 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Test Everything API Status - No Fallback
|
||
Script para verificar el estado de la API de Everything sin usar fallback
|
||
"""
|
||
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
# Agregar el directorio src al path
|
||
current_dir = Path(__file__).parent
|
||
src_dir = current_dir / "src"
|
||
sys.path.insert(0, str(src_dir))
|
||
|
||
from models.config_model import Config
|
||
from models.project_model import ProjectManager
|
||
from services.project_discovery_service import ProjectDiscoveryService
|
||
|
||
|
||
def print_section(title):
|
||
"""Imprimir una sección con formato"""
|
||
print(f"\n{'='*60}")
|
||
print(f" {title}")
|
||
print(f"{'='*60}")
|
||
|
||
|
||
def print_status_item(label, value, status=None):
|
||
"""Imprimir un item de estado con formato"""
|
||
if status is None:
|
||
status = "✅" if value else "❌"
|
||
print(f"{status} {label}: {value}")
|
||
|
||
|
||
def main():
|
||
"""Función principal"""
|
||
print_section("VERIFICACIÓN DE EVERYTHING API - SIN FALLBACK")
|
||
|
||
try:
|
||
# Cargar configuración
|
||
print("📋 Cargando configuración...")
|
||
config = Config()
|
||
print("✅ Configuración cargada")
|
||
|
||
# Inicializar Project Manager
|
||
print("📁 Inicializando Project Manager...")
|
||
project_manager = ProjectManager()
|
||
print("✅ Project Manager inicializado")
|
||
|
||
# Inicializar Project Discovery Service
|
||
print("🔍 Inicializando Project Discovery Service...")
|
||
discovery_service = ProjectDiscoveryService(config, project_manager)
|
||
print("✅ Project Discovery Service inicializado")
|
||
|
||
# Verificar estado de Everything API
|
||
print_section("ESTADO DE EVERYTHING API")
|
||
status = discovery_service.check_everything_api_status()
|
||
|
||
print_status_item("Habilitado en configuración", status["enabled_in_config"])
|
||
print_status_item("Ruta DLL", status["dll_path"], "📄")
|
||
print_status_item("DLL existe", status["dll_exists"])
|
||
print_status_item("Searcher inicializado", status["searcher_initialized"])
|
||
print_status_item("Everything disponible", status["everything_available"])
|
||
|
||
if status["error_message"]:
|
||
print_status_item("Error", status["error_message"], "❌")
|
||
|
||
# Mostrar diagnóstico detallado si está disponible
|
||
if status["everything_diagnosis"]:
|
||
print_section("DIAGNÓSTICO DETALLADO")
|
||
diagnosis = status["everything_diagnosis"]
|
||
|
||
for key, value in diagnosis.items():
|
||
if key == "exception":
|
||
print_status_item("Excepción", value, "⚠️")
|
||
else:
|
||
formatted_key = key.replace("_", " ").title()
|
||
print_status_item(formatted_key, value, "ℹ️")
|
||
|
||
# Test de búsqueda si Everything está disponible
|
||
if status["everything_available"]:
|
||
print_section("TEST DE BÚSQUEDA")
|
||
print("🔍 Ejecutando test de búsqueda de archivos .s7p...")
|
||
|
||
test_result = discovery_service.test_everything_api_search()
|
||
|
||
print_status_item("Test exitoso", test_result["success"])
|
||
print_status_item("Consulta", test_result["test_query"], "📝")
|
||
print_status_item(
|
||
"Archivos encontrados", test_result["results_count"], "📊"
|
||
)
|
||
print_status_item(
|
||
"Tiempo de ejecución (ms)", test_result["execution_time_ms"], "⏱️"
|
||
)
|
||
|
||
if test_result["error_message"]:
|
||
print_status_item("Error en test", test_result["error_message"], "❌")
|
||
|
||
# Mostrar algunos resultados
|
||
if test_result["results"]:
|
||
print("\n📋 Primeros resultados encontrados:")
|
||
for i, result in enumerate(test_result["results"][:5], 1):
|
||
print(f" {i}. {result}")
|
||
|
||
if test_result["results_count"] > 5:
|
||
remaining = test_result["results_count"] - 5
|
||
print(f" ... y {remaining} más")
|
||
|
||
# Test de descubrimiento sin fallback
|
||
print_section("TEST DE DESCUBRIMIENTO SIN FALLBACK")
|
||
print("🔍 Ejecutando descubrimiento usando SOLO Everything API...")
|
||
|
||
all_projects = []
|
||
observation_dirs = [
|
||
obs_dir
|
||
for obs_dir in config.observation_directories
|
||
if (obs_dir.get("enabled", True) and obs_dir.get("type") == "siemens_s7")
|
||
]
|
||
|
||
if not observation_dirs:
|
||
print("⚠️ No hay directorios de observación de Siemens S7")
|
||
else:
|
||
for obs_dir in observation_dirs:
|
||
print(f"📁 Escaneando: {obs_dir['path']}")
|
||
projects = discovery_service.discover_s7_projects_everything_only(
|
||
obs_dir
|
||
)
|
||
all_projects.extend(projects)
|
||
print(f" ✅ Encontrados {len(projects)} proyectos")
|
||
|
||
print_status_item("Total de proyectos encontrados", len(all_projects), "📊")
|
||
|
||
# Mostrar algunos proyectos
|
||
if all_projects:
|
||
print("\n📋 Proyectos encontrados:")
|
||
for i, project in enumerate(all_projects[:5], 1):
|
||
print(f" {i}. {project.name} ({project.path})")
|
||
|
||
if len(all_projects) > 5:
|
||
remaining = len(all_projects) - 5
|
||
print(f" ... y {remaining} más")
|
||
|
||
print_section("RESUMEN")
|
||
|
||
if status["everything_available"]:
|
||
print("✅ Everything API está funcionando correctamente")
|
||
projects_count = len(all_projects)
|
||
print(f"📊 Se encontraron {projects_count} proyectos sin fallback")
|
||
else:
|
||
print("❌ Everything API no está disponible")
|
||
if not status["enabled_in_config"]:
|
||
print("💡 Sugerencia: Habilitar Everything API en config")
|
||
elif not status["dll_exists"]:
|
||
print("💡 Sugerencia: Verificar que el DLL existe")
|
||
elif not status["searcher_initialized"]:
|
||
print("💡 Sugerencia: Verificar inicialización del searcher")
|
||
else:
|
||
print("💡 Sugerencia: Verificar que Everything esté ejecutándose")
|
||
|
||
except Exception as e:
|
||
print(f"\n❌ Error durante la verificación: {e}")
|
||
return 1
|
||
|
||
return 0
|
||
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(main())
|