fix: 强化 Workbench Kafka 重放探针

This commit is contained in:
Codex
2026-07-10 15:58:51 +02:00
parent d69b436226
commit 6297a2ea14
10 changed files with 619 additions and 55 deletions
+66 -23
View File
@@ -41,6 +41,7 @@ function renderWebObserveStatusTable(value: Record<string, unknown>): string {
const exactResult = record(exactCommand?.result);
const exactError = record(exactCommand?.error);
const exactErrorDetails = record(exactError?.details);
const exactReplayEvidence = exactResult ?? exactErrorDetails;
const tails = record(observer?.tails);
const result = record(value.result);
const samples = Array.isArray(tails?.samples) ? tails.samples.map(record).filter((item): item is Record<string, unknown> => item !== null).slice(-5) : [];
@@ -175,17 +176,12 @@ function renderWebObserveStatusTable(value: Record<string, unknown>): string {
]]),
"",
] : []),
...(exactCommand.type === "validateWorkbenchKafkaDebugReplay" && exactResult !== null ? [
"Workbench Kafka debug replay:",
webObserveTable(["TRACE", "TOPIC", "GROUP", "RECEIVED", "APPLIED", "TERMINAL", "SCREENSHOT_SHA"], [[
webObserveShort(webObserveText(exactResult.traceId), 28),
webObserveShort(webObserveText(exactResult.topic), 32),
webObserveShort(webObserveText(exactResult.groupId), 48),
exactResult.receivedCount,
exactResult.appliedCount,
exactResult.terminalStatus,
webObserveShort(webObserveText(record(exactResult.screenshot)?.sha256), 32),
]]),
...(exactCommand.type === "validateWorkbenchKafkaDebugReplay" && exactReplayEvidence !== null ? [
...renderWorkbenchKafkaDebugReplayEvidence(
exactReplayEvidence,
exactResult?.reportSha256 ?? exactErrorDetails?.reportSha256,
record(exactResult?.screenshot)?.sha256,
),
"",
] : []),
"Recent samples:",
@@ -232,6 +228,58 @@ function renderWebObserveStatusTable(value: Record<string, unknown>): string {
return lines.join("\n");
}
function renderWorkbenchKafkaDebugReplayEvidence(
evidence: Record<string, unknown>,
reportSha: unknown,
screenshotSha: unknown,
): string[] {
const layers = record(evidence.layerCounts);
const server = record(layers?.server);
const client = record(layers?.client);
const trace = record(evidence.traceTimeline);
const raw = record(evidence.rawHwlabEventWindow);
const rawCounts = record(raw?.counts);
return [
"Workbench Kafka debug replay:",
webObserveTable(["TRACE", "TOPIC", "GROUP", "PHASE", "CODE", "RECEIVED", "APPLIED", "TERMINAL", "REPORT_SHA", "SCREENSHOT_SHA"], [[
webObserveShort(webObserveText(evidence.traceId), 28),
webObserveShort(webObserveText(evidence.topic), 32),
webObserveShort(webObserveText(evidence.groupId), 48),
evidence.phase,
evidence.code,
evidence.receivedCount,
evidence.appliedCount,
evidence.terminalStatus,
webObserveShort(webObserveText(reportSha), 32),
webObserveShort(webObserveText(screenshotSha), 32),
]]),
"Replay layers:",
webObserveTable(["SERVER_SCANNED", "SERVER_MATCHED", "SERVER_DELIVERED", "CLIENT_RECEIVED", "CLIENT_DECODED", "CLIENT_APPLIED"], [[
server?.scanned,
server?.matched,
server?.delivered,
client?.received,
client?.decoded,
client?.applied,
]]),
"Trace and raw HWLAB Event:",
webObserveTable(["AUTHORITY", "SOURCE_ROWS", "READABLE_ROWS", "RAW_AVAILABLE", "SAME_PAGE", "UNFILTERED", "RAW_RECEIVED", "RAW_RETAINED", "RAW_REJECTED", "RAW_EVICTED", "RAW_BYTES", "EXTRA_PRODUCT_SSE"], [[
trace?.contract,
trace?.sourceAuthorityRowCount,
trace?.readableSourceRowCount,
raw?.available,
raw?.samePage,
raw?.unfilteredContractPresent,
rawCounts?.received,
rawCounts?.retained,
rawCounts?.rejected,
rawCounts?.evicted,
rawCounts?.bytes,
raw?.productEventSourceRequestCount,
]]),
];
}
function renderWebObserveCommandTable(value: Record<string, unknown>): string {
const observerCommand = record(value.observerCommand);
const observer = record(value.observer);
@@ -241,6 +289,7 @@ function renderWebObserveCommandTable(value: Record<string, unknown>): string {
const resultScreenshot = record(result?.screenshot);
const error = record(observer?.error);
const details = record(error?.details);
const replayEvidence = result ?? details;
const rawReadiness = record(error?.navigationReadiness) ?? record(details?.readiness) ?? record(details?.readinessAfterWait) ?? record(details?.readinessBeforeClick);
const readiness = record(rawReadiness?.snapshot) ?? rawReadiness;
const id = webObserveText(value.id);
@@ -259,19 +308,13 @@ function renderWebObserveCommandTable(value: Record<string, unknown>): string {
webObserveShort(webObserveText(asyncTurn?.traceId), 24),
webObserveShort(webObserveText(result?.mark ?? result?.currentUrl ?? observer?.error ?? observer?.queued), 80),
]]),
...(observerCommand?.type === "validateWorkbenchKafkaDebugReplay" && result !== null ? [
...(observerCommand?.type === "validateWorkbenchKafkaDebugReplay" && replayEvidence !== null ? [
"",
"Workbench Kafka debug replay:",
webObserveTable(["TRACE", "TOPIC", "GROUP", "RECEIVED", "APPLIED", "TERMINAL", "REPORT_SHA", "SCREENSHOT_SHA"], [[
webObserveShort(webObserveText(result.traceId), 28),
webObserveShort(webObserveText(result.topic), 32),
webObserveShort(webObserveText(result.groupId), 48),
result.receivedCount,
result.appliedCount,
result.terminalStatus,
webObserveShort(webObserveText(result.reportSha256), 32),
webObserveShort(webObserveText(resultScreenshot?.sha256), 32),
]]),
...renderWorkbenchKafkaDebugReplayEvidence(
replayEvidence,
result?.reportSha256 ?? details?.reportSha256,
resultScreenshot?.sha256,
),
] : []),
...(readiness !== null ? [
"",