diff --git a/src/endpoint_resolver.py b/src/endpoint_resolver.py index c9002ce..073f8d7 100644 --- a/src/endpoint_resolver.py +++ b/src/endpoint_resolver.py @@ -11,7 +11,7 @@ import subprocess from typing import Optional, Tuple, Dict from urllib.parse import urlparse, urlunparse -from src.database import SessionLocal, ModelEndpoint +from core.database import SessionLocal, ModelEndpoint from src.llm_core import _detect_provider, _host_match logger = logging.getLogger(__name__) @@ -285,6 +285,8 @@ def resolve_endpoint( # If no (usable) model specified, pick the first enabled chat model. if not model: model = _first_chat_model(_endpoint_enabled_models(ep)) or "" + if not model and not fallback_model: + logger.warning('[resolve_endpoint] no usable model (all models hidden or list empty)') return chat_url, model or fallback_model, headers except Exception as e: diff --git a/tests/test_auth_regressions.py b/tests/test_auth_regressions.py index 8b46753..b16966e 100644 --- a/tests/test_auth_regressions.py +++ b/tests/test_auth_regressions.py @@ -81,13 +81,13 @@ def _auth_regressions_stubs(monkeypatch): resolve_endpoint=MagicMock(return_value=("", "", {})), normalize_base=MagicMock(), build_chat_url=MagicMock(), + build_models_url=MagicMock(), build_headers=MagicMock(), ) monkeypatch.setitem(sys.modules, "core.database", db) monkeypatch.setitem(sys.modules, "core.auth", auth) monkeypatch.setitem(sys.modules, "src.endpoint_resolver", ep) - from fastapi import HTTPException # ---------------------------------------------------------------------------