INF-3 Поправил шапку с трейс ид

This commit is contained in:
2026-05-04 13:17:22 +03:00
parent 8cad1d00ec
commit e2b817f785
3 changed files with 65 additions and 35 deletions
+31 -12
View File
@@ -11,6 +11,9 @@ from app_runtime.control.base import TraceQueryRequest
from app_runtime.contracts.trace import TraceLevel, TraceLogRecord, TraceLogView
TRACE_SECTION_SEPARATOR = "=" * 30
class TraceRequestParser:
def parse(self, request: Request) -> TraceQueryRequest:
raw_levels = request.query_params.get("levels")
@@ -85,11 +88,13 @@ class TraceResponseRenderer:
def _render_text(self, trace_view: TraceLogView, request: TraceQueryRequest) -> PlainTextResponse:
lineage = [*trace_view.ancestors, trace_view]
lines: list[str] = []
lines = self._text_trace_summary_lines(trace_view)
for index, entry in enumerate(lineage):
if index > 0:
if index == 0:
lines.append("")
lines.extend(self._text_trace_lines(entry, request))
else:
lines.extend(["", ""])
lines.extend(self._text_trace_log_lines(entry, request))
return PlainTextResponse(content="\n".join(lines))
def _render_html(self, trace_view: TraceLogView, request: TraceQueryRequest) -> HTMLResponse:
@@ -183,11 +188,13 @@ class TraceResponseRenderer:
def _html_lines(self, trace_view: TraceLogView, request: TraceQueryRequest) -> str:
lineage = [*trace_view.ancestors, trace_view]
lines: list[str] = []
lines = self._html_trace_summary_lines(trace_view, request)
for index, entry in enumerate(lineage):
if index > 0:
if index == 0:
lines.append(self._html_plain_line(""))
lines.extend(self._html_trace_lines(entry, request))
else:
lines.extend([self._html_plain_line(""), self._html_plain_line("")])
lines.extend(self._html_trace_log_lines(entry, request))
return "".join(lines)
def _trace_payload(self, trace_view: TraceLogView, request: TraceQueryRequest) -> dict[str, object]:
@@ -198,12 +205,18 @@ class TraceResponseRenderer:
"messages": [record.as_dict(include_attrs_json=request.include_attrs_json) for record in trace_view.records],
}
def _text_trace_lines(self, trace_view: TraceLogView, request: TraceQueryRequest) -> list[str]:
lines = [
def _text_trace_summary_lines(self, trace_view: TraceLogView) -> list[str]:
return [
f"trace_id: {trace_view.trace_id}",
f"parent_id: {trace_view.parent_id or ''}",
*self._child_id_lines(trace_view.child_ids),
"------------------------------",
]
def _text_trace_log_lines(self, trace_view: TraceLogView, request: TraceQueryRequest) -> list[str]:
lines = [
TRACE_SECTION_SEPARATOR,
f"trace_id: {trace_view.trace_id}",
"",
]
previous_step: str | None = None
for record in trace_view.records:
@@ -217,13 +230,19 @@ class TraceResponseRenderer:
lines.append(self._text_message(record, request.include_attrs_json))
return lines
def _html_trace_lines(self, trace_view: TraceLogView, request: TraceQueryRequest) -> list[str]:
lines = [
def _html_trace_summary_lines(self, trace_view: TraceLogView, request: TraceQueryRequest) -> list[str]:
return [
self._html_plain_line(f"trace_id: {self._trace_link(trace_view.trace_id, request)}"),
self._html_plain_line(f"parent_id: {self._optional_trace_link(trace_view.parent_id, request)}"),
self._html_plain_line("child_ids:"),
*(self._html_plain_line(f" - {self._trace_link(child_id, request)}") for child_id in trace_view.child_ids),
self._html_plain_line("------------------------------"),
]
def _html_trace_log_lines(self, trace_view: TraceLogView, request: TraceQueryRequest) -> list[str]:
lines = [
self._html_plain_line(TRACE_SECTION_SEPARATOR),
self._html_plain_line(f"trace_id: {self._trace_link(trace_view.trace_id, request)}"),
self._html_plain_line(""),
]
previous_step: str | None = None
for record in trace_view.records: