Keep trace summaries from breaking Logs and fix their counts

A failed trace-summary lookup now leaves the Logs page intact without
chips. Tool-call counts include only calls that ran, not their paused,
denied or skipped records. A local guardrail that fires unchanged on every
streamed segment is recorded once, so it cannot use up the span cap.
This commit is contained in:
arc53-machine committed 2026-09-23 22:09:58 +01:00
1 parent 24796ae61f
commit 9f7f0b2f1e
7 files changed
+134 -19

No files matched your search

+19
View File
@@ -193,3 +193,22 @@ class TestLogsTraceSummaries:
def test_unknown_event_type_is_rejected(self, app, pg_conn):
assert _logs(app, pg_conn, "owner", {"event_type": "bogus"}).status_code == 400
class TestSummaryFailure:
def test_page_survives_a_failed_trace_lookup(self, app, pg_conn):
from docsgpt.storage.db.repositories.user_logs import UserLogsRepository
UserLogsRepository(pg_conn).insert(
user_id="owner",
endpoint="stream_answer",
data={"question": "q", "request_id": "req-1"},
)
with patch(
"docsgpt.api.user.analytics.routes.RequestTracesRepository.summaries_for_refs",
side_effect=RuntimeError("statement timeout"),
):
response = _logs(app, pg_conn, "owner", {})
assert response.status_code == 200
(row,) = response.json["logs"]
assert "trace" not in row