From 23b4ecbf09fce44df705f5a879b32790cd5c1fa0 Mon Sep 17 00:00:00 2001 From: Lyon <88232613+pikasTech@users.noreply.github.com> Date: Tue, 23 Jun 2026 02:06:43 +0800 Subject: [PATCH] fix(otel): expose workbench resource timing columns (#713) Co-authored-by: Codex --- scripts/src/platform-infra-observability.ts | 27 ++++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/scripts/src/platform-infra-observability.ts b/scripts/src/platform-infra-observability.ts index 32f6e299..3b7aa652 100644 --- a/scripts/src/platform-infra-observability.ts +++ b/scripts/src/platform-infra-observability.ts @@ -825,10 +825,19 @@ function renderTraceTable(input: { const spanRows = uniqueSpanRecords(spanSource) .slice(0, 10) .map((span) => { + const attrs = asPlainRecord(span.attributes); return [ - shortenEnd(textValue(span.name), 48), - shortenEnd(textValue(span.service), 28), - spanDetail(span, 360), + shortenEnd(textValue(span.name), 40), + shortenEnd(textValue(span.service), 22), + shortenEnd(spanColumnAttr(attrs, ["http.route", "workbench.ui.route"]), 34), + spanColumnAttr(attrs, ["http.response.status_code", "http.status_code", "http.response.status_class"]), + spanColumnAttr(attrs, ["workbench.ui.value_ms"]), + spanColumnAttr(attrs, ["workbench.ui.resource_duration_ms"]), + spanColumnAttr(attrs, ["workbench.ui.resource_fetch_to_request_ms"]), + spanColumnAttr(attrs, ["workbench.ui.resource_request_wait_ms"]), + spanColumnAttr(attrs, ["workbench.ui.resource_response_transfer_ms"]), + shortenEnd(spanColumnAttr(attrs, ["workbench.ui.resource_next_hop_protocol"]), 14), + spanDetail(span, 220), ]; }); const countRows = asArray(input.result.spanNameCounts).slice(0, 8).map((item) => { @@ -856,7 +865,7 @@ function renderTraceTable(input: { formatTable(["FIELD", "VALUE"], identityRows.length > 0 ? identityRows : [["-", "-"]]), "", "Key spans:", - formatTable(["NAME", "SERVICE", "DETAIL"], spanRows.length > 0 ? spanRows : [["-", "-", "-"]]), + formatTable(["NAME", "SERVICE", "ROUTE", "STATUS", "VALUE_MS", "RES_MS", "FETCH_REQ", "REQ_WAIT", "RESP_XFER", "PROTO", "DETAIL"], spanRows.length > 0 ? spanRows : [["-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"]]), "", "Span name counts:", formatTable(["NAME", "COUNT"], countRows.length > 0 ? countRows : [["-", "-"]]), @@ -1037,6 +1046,16 @@ function uniqueSpanRecords(values: unknown[]): Record[] { return rows; } +function spanColumnAttr(attrs: Record | null, keys: string[]): string { + if (attrs === null) return "-"; + for (const key of keys) { + const value = attrs[key]; + const text = textValue(value); + if (text !== "-") return text; + } + return "-"; +} + function spanDetail(span: Record, maxLength: number): string { const attrs = asPlainRecord(span.attributes); const parts = [