import logging
import sys
import uvicorn
import os
from pathlib import Path
from dotenv import load_dotenv

# Cargar .env base para obtener APP_ENV y demás variables del servidor
_base = Path(__file__).parent

# Agregar rutas al path: raíz (para config/) y app/ (para api/, agent/, core/, etc.)
_app_dir = str(_base / "app")
if str(_base) not in sys.path:
    sys.path.insert(0, str(_base))
if _app_dir not in sys.path:
    sys.path.insert(1, _app_dir)

# Propagar a subprocesos de uvicorn (reload mode)
os.environ["PYTHONPATH"] = f"{_app_dir}:{_base}:{os.environ.get('PYTHONPATH', '')}"

load_dotenv(dotenv_path=_base / ".env")

APP_ENV = os.getenv("APP_ENV", "")

# Cargar overrides del entorno (.env.development o .env.production)
_env_file = _base / f".env.{APP_ENV}"
if _env_file.exists():
    load_dotenv(dotenv_path=_env_file, override=True)

if __name__ == "__main__":
    from config.logging_config import setup_logging
    setup_logging()
    logger = logging.getLogger(__name__)
    host = os.getenv("API_HOST", "")
    port = int(os.getenv("API_PORT", ""))
    logger.info(f"🚀 Iniciando Servidor API [{APP_ENV.upper()}] en {host}:{port}")
    uvicorn.run(
        "api.api_service:app",
        host=host,
        port=port,
        reload=(APP_ENV == "production"),  # hot-reload solo en desarrollo
    )
