mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-09-10 18:22:20 +02:00
fix(models): align API model checkbox state (#6087)
This commit is contained in:
@@ -2342,9 +2342,7 @@ def setup_model_routes(model_discovery):
|
||||
else:
|
||||
response.headers["X-Model-Refresh-Status"] = "failed"
|
||||
response.headers["X-Model-Refresh-Warning"] = "Model refresh failed or returned no models; kept cached models."
|
||||
pinned = _normalize_model_ids(getattr(ep, "pinned_models", None))
|
||||
if picker_requires_pinning and not _has_explicit_pinned_models(ep):
|
||||
pinned = _legacy_visible_api_models(ep)
|
||||
_, pinned = _picker_models_for_endpoint(ep, base, kind)
|
||||
pinned_set = set(pinned)
|
||||
return [
|
||||
{
|
||||
|
||||
@@ -1107,6 +1107,47 @@ def test_get_api_models_marks_picker_as_pinned_only(monkeypatch):
|
||||
assert by_id["anthropic/claude-sonnet-4"]["is_pinned"] is False
|
||||
|
||||
|
||||
def test_get_fresh_api_models_does_not_mark_cached_inventory_as_pinned(monkeypatch):
|
||||
ep = _make_endpoint(
|
||||
base_url="https://api.example.test/v1",
|
||||
cached_models=json.dumps(["openai/gpt-image-1", "anthropic/claude-sonnet-4"]),
|
||||
pinned_models=None,
|
||||
)
|
||||
db = _PinnedFakeDb([ep])
|
||||
monkeypatch.setattr(model_routes, "SessionLocal", lambda: db)
|
||||
monkeypatch.setattr(model_routes, "require_admin", lambda request: None)
|
||||
endpoint = _get_route("/api/model-endpoints/{ep_id}/models", "GET")
|
||||
|
||||
result = endpoint("ep1", _PinnedFakeRequest(), SimpleNamespace(headers={}))
|
||||
|
||||
assert [row["id"] for row in result] == [
|
||||
"openai/gpt-image-1",
|
||||
"anthropic/claude-sonnet-4",
|
||||
]
|
||||
assert all(row["picker_requires_pinning"] is True for row in result)
|
||||
assert all(row["is_pinned"] is False for row in result)
|
||||
|
||||
|
||||
def test_get_legacy_api_models_preserves_hidden_selection_as_pinned(monkeypatch):
|
||||
ep = _make_endpoint(
|
||||
base_url="https://api.example.test/v1",
|
||||
cached_models=json.dumps(["m1", "m2", "m3"]),
|
||||
hidden_models=json.dumps(["m2"]),
|
||||
pinned_models=None,
|
||||
)
|
||||
db = _PinnedFakeDb([ep])
|
||||
monkeypatch.setattr(model_routes, "SessionLocal", lambda: db)
|
||||
monkeypatch.setattr(model_routes, "require_admin", lambda request: None)
|
||||
endpoint = _get_route("/api/model-endpoints/{ep_id}/models", "GET")
|
||||
|
||||
result = endpoint("ep1", _PinnedFakeRequest(), SimpleNamespace(headers={}))
|
||||
|
||||
by_id = {row["id"]: row for row in result}
|
||||
assert by_id["m1"]["is_pinned"] is True
|
||||
assert by_id["m2"]["is_pinned"] is False
|
||||
assert by_id["m3"]["is_pinned"] is True
|
||||
|
||||
|
||||
def test_reprobe_preserves_pinned_models(monkeypatch):
|
||||
ep = _make_endpoint(pinned_models=json.dumps(["deploy-1"]))
|
||||
db = _PinnedFakeDb([ep])
|
||||
|
||||
Reference in New Issue
Block a user