merge: reconcile latest spend-log trace fixes

This commit is contained in:
moe-berri 2026-11-06 16:08:53 +08:00
commit 07bbc4fefe
2 changed files with 23 additions and 1 deletions

View file

@ -705,6 +705,19 @@ def test_sql_routes_need_the_lens_service_when_traces_come_from_spend_logs(
assert "Lens service" in response.json()["detail"]
@pytest.mark.parametrize(("allowed_routes", "status_code"), ((["llm_api_routes"], 403), (None, 200)))
def test_spend_log_traces_need_the_same_route_access_as_the_logs_page(
client: TestClient, allowed_routes: list[str] | None, status_code: int
) -> None:
spend_logs: Final = TraceReceiver(storage=SpendLogTraceStorage(lambda: None))
client.app.dependency_overrides[tracing_endpoints.provide_receiver] = lambda: spend_logs
client.app.dependency_overrides[user_api_key_auth] = lambda: UserAPIKeyAuth(
user_id="user", token="hashed-key", allowed_routes=allowed_routes
)
response: Final = client.get("/v1/traces")
assert response.status_code == status_code, response.text
def test_disabled_receiver_precedes_read_scope_rejection(client: TestClient) -> None:
client.app.dependency_overrides[user_api_key_auth] = lambda: UserAPIKeyAuth(
user_role=LitellmUserRoles.INTERNAL_USER

View file

@ -28,6 +28,7 @@ def row(
error: str | None = None,
spend: float = 0.01,
agent_id: str | None = None,
request: Mapping[str, object] | None = None,
) -> SpendLogRow:
metadata: Final = {
"user_agent": user_agent,
@ -48,7 +49,7 @@ def row(
request_tags=json.dumps(list(tags)),
metadata=json.dumps(metadata),
messages="{}",
proxy_server_request=json.dumps({"messages": messages, "tags": list(tags)}),
proxy_server_request=json.dumps(request or {"messages": messages, "tags": list(tags)}),
response=json.dumps(response or {}),
)
@ -402,3 +403,11 @@ def test_request_agent_name_groups_calls_without_tags_or_registered_identity() -
assert trace["summary"]["agent_names"] == ("Support agent",)
assert trace["summary"]["llm_calls"] == 2
assert {span["agent"] for span in trace["spans"]} == {"Support agent"}
def test_responses_api_input_is_read_from_the_stored_request() -> None:
trace: Final = build_trace(
(row("r1", "00.000", "01.000", tags=("agent:triage",), request={"model": "gpt-5", "input": "refund me"}),)
)
assert trace["summary"]["input_preview"] == "refund me"