fix(endpoint): import ModelEndpoint from core database

ModelEndpoint is defined in core.database, not src.database. The wrong
import silently prevented the module from loading in deployment
configurations that do not have a src/database.py shim, resulting in an
ImportError at startup.

Also adds a warning log when resolve_endpoint finds no usable model
(all models hidden or the list is empty), making the otherwise-silent
failure visible in operator logs.

The test_auth_regressions stub for src.endpoint_resolver was missing the
build_models_url attribute, which caused test collection errors.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Giuseppe
2026-06-04 12:51:47 +02:00
committed by GitHub
parent 88754035ce
commit 68cb715914
2 changed files with 4 additions and 2 deletions

View File

@@ -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:

View File

@@ -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
# ---------------------------------------------------------------------------