Fix replay fallback when model mapping is missing

This commit is contained in:
RWDai
2026-03-17 18:47:26 +08:00
committed by fawney19
parent a4505b1281
commit b90d5095f1
2 changed files with 56 additions and 13 deletions

View File

@@ -7,7 +7,11 @@ from typing import Any
import pytest
from src.api.admin.usage.routes import AdminUsageDetailAdapter, AdminUsageRecordsAdapter
from src.api.admin.usage.routes import (
AdminUsageDetailAdapter,
AdminUsageRecordsAdapter,
_resolve_replay_model_name,
)
class _FakeQuery:
@@ -273,3 +277,42 @@ async def test_admin_usage_detail_defers_large_body_columns_when_bodies_excluded
assert (
"ORM Path[Mapper[Usage(usage)] -> Usage.client_response_body_compressed]" in deferred_paths
)
@pytest.mark.asyncio
@pytest.mark.parametrize(
("same_provider", "same_endpoint"),
[
(True, False),
(False, False),
],
ids=["same-provider-cross-endpoint", "cross-provider"],
)
async def test_resolve_replay_model_name_falls_back_to_source_model_when_mapping_missing(
monkeypatch: pytest.MonkeyPatch,
same_provider: bool,
same_endpoint: bool,
) -> None:
class _FakeMapper:
def __init__(self, db: Any) -> None:
self.db = db
async def get_mapping(self, source_model: str, provider_id: str) -> None:
return None
monkeypatch.setattr("src.services.model.mapper.ModelMapperMiddleware", _FakeMapper)
resolved_model, mapping_source = await _resolve_replay_model_name(
SimpleNamespace(),
source_model="gpt-4o-mini",
original_target_model="provider-specific-model",
target_provider=SimpleNamespace(id="provider-2", name="OpenAI Compatible"),
target_endpoint=SimpleNamespace(id="endpoint-2", api_format="openai:responses"),
target_api_key=None,
same_provider=same_provider,
same_endpoint=same_endpoint,
force_remap=False,
)
assert resolved_model == "gpt-4o-mini"
assert mapping_source == "none"