fix: scope web-probe turn timing by page (#676)

Co-authored-by: Codex <codex@noreply.local>
This commit is contained in:
Lyon
2026-06-22 19:08:11 +08:00
committed by GitHub
parent ce4f373656
commit 0bb82ee822
@@ -3241,7 +3241,9 @@ function buildTurnTimingTable(samples, timeline) {
lastPromptIndex: metric.promptIndex ?? null,
traceId: metric.traceId ?? null,
messageId: metric.messageId ?? null,
domIndex: metric.domIndex ?? null
domIndex: metric.domIndex ?? null,
pageRole: metric.pageRole ?? sample.pageRole ?? null,
pageId: metric.pageId ?? sample.pageId ?? null
};
registry.set(metric.key, column);
columns.push(column);
@@ -3258,6 +3260,9 @@ function buildTurnTimingTable(samples, timeline) {
status: metric.status ?? null,
promptIndex: metric.promptIndex ?? null,
source: metric.source,
pageRole: metric.pageRole ?? sample.pageRole ?? null,
pageId: metric.pageId ?? sample.pageId ?? null,
sampleGroupSeq: sample.sampleGroupSeq ?? null,
traceId: metric.traceId ?? null,
messageId: metric.messageId ?? null,
textHash: metric.textHash ?? null
@@ -3266,6 +3271,9 @@ function buildTurnTimingTable(samples, timeline) {
rows.push({
ts: sample.ts ?? null,
seq: sample.seq ?? null,
sampleGroupSeq: sample.sampleGroupSeq ?? null,
pageRole: sample.pageRole ?? null,
pageId: sample.pageId ?? null,
promptIndex: timelineItem.promptIndex ?? 0,
routeSessionId: sample.routeSessionId ?? null,
activeSessionId: sample.activeSessionId ?? null,
@@ -3322,6 +3330,8 @@ function detectTurnTimingNonMonotonic(columns, rows) {
messageId: cell.messageId ?? column.messageId ?? null,
promptIndex: cell.promptIndex ?? row.promptIndex ?? null,
source: cell.source ?? column.source ?? null,
pageRole: cell.pageRole ?? column.pageRole ?? null,
pageId: cell.pageId ?? column.pageId ?? null,
valuesRedacted: true
};
anomalies.push(event);
@@ -3352,6 +3362,8 @@ function detectTurnTimingNonMonotonic(columns, rows) {
messageId: cell.messageId ?? column.messageId ?? null,
promptIndex: cell.promptIndex ?? row.promptIndex ?? null,
source: cell.source ?? column.source ?? null,
pageRole: cell.pageRole ?? column.pageRole ?? null,
pageId: cell.pageId ?? column.pageId ?? null,
valuesRedacted: true
});
}
@@ -3377,6 +3389,8 @@ function detectTurnTimingNonMonotonic(columns, rows) {
messageId: cell.messageId ?? column.messageId ?? null,
promptIndex: cell.promptIndex ?? row.promptIndex ?? null,
source: cell.source ?? column.source ?? null,
pageRole: cell.pageRole ?? column.pageRole ?? null,
pageId: cell.pageId ?? column.pageId ?? null,
valuesRedacted: true
});
}
@@ -3408,6 +3422,8 @@ function detectTurnTimingNonMonotonic(columns, rows) {
messageId: cell.messageId ?? column.messageId ?? null,
promptIndex: cell.promptIndex ?? row.promptIndex ?? null,
source: cell.source ?? column.source ?? null,
pageRole: cell.pageRole ?? column.pageRole ?? null,
pageId: cell.pageId ?? column.pageId ?? null,
valuesRedacted: true
});
if (increase < 0) {
@@ -3428,6 +3444,8 @@ function detectTurnTimingNonMonotonic(columns, rows) {
messageId: cell.messageId ?? column.messageId ?? null,
promptIndex: cell.promptIndex ?? row.promptIndex ?? null,
source: cell.source ?? column.source ?? null,
pageRole: cell.pageRole ?? column.pageRole ?? null,
pageId: cell.pageId ?? column.pageId ?? null,
valuesRedacted: true
});
}
@@ -3452,6 +3470,8 @@ function detectTurnTimingNonMonotonic(columns, rows) {
messageId: cell.messageId ?? column.messageId ?? null,
promptIndex: cell.promptIndex ?? row.promptIndex ?? null,
source: cell.source ?? column.source ?? null,
pageRole: cell.pageRole ?? column.pageRole ?? null,
pageId: cell.pageId ?? column.pageId ?? null,
valuesRedacted: true
});
}
@@ -3484,7 +3504,9 @@ function isTerminalTurnStatus(value) {
function turnMetricItems(sample, timelineItem) {
const promptIndex = timelineItem.promptIndex ?? 0;
const sessionKey = sample?.routeSessionId || sample?.activeSessionId || "unknown-session";
const pageRole = sample?.pageRole || "control";
const pageId = sample?.pageId || "unknown-page";
const sessionKey = pageRole + ":" + pageId + ":" + (sample?.routeSessionId || sample?.activeSessionId || "unknown-session");
const roundKey = String(promptIndex);
const items = [];
if (Array.isArray(sample?.turns) && sample.turns.length > 0) {
@@ -3503,6 +3525,8 @@ function turnMetricItems(sample, timelineItem) {
items.push({
key,
source: "turn",
pageRole,
pageId,
promptIndex,
traceId,
messageId,
@@ -3531,6 +3555,8 @@ function turnMetricItems(sample, timelineItem) {
? "message:" + sessionKey + ":id-" + stableId
: "message:" + sessionKey + ":round-" + roundKey + ":dom-index-" + String(domIndex),
source: "message",
pageRole,
pageId,
promptIndex,
traceId,
messageId,
@@ -3548,6 +3574,8 @@ function turnMetricItems(sample, timelineItem) {
return [{
key: "aggregate:" + sessionKey + ":round-" + roundKey,
source: "aggregate",
pageRole,
pageId,
promptIndex,
traceId: null,
messageId: null,