fix(web-probe): report recent observe window
This commit is contained in:
@@ -7475,6 +7475,7 @@ function runNodeWebProbeObserveAnalyze(options: NodeWebProbeObserveOptions, spec
|
||||
"const slimSlowApi = (item) => { const v = objectOrNull(item) || {}; return { path: clip(v.path ?? v.route, 96), route: clip(v.route ?? v.path, 96), sampleCount: v.sampleCount ?? null, p95Ms: v.p95Ms ?? v.p95 ?? null, maxMs: v.maxMs ?? v.max ?? null, overFiveSecondCount: v.overFiveSecondCount ?? null }; };",
|
||||
"const slimFinding = (item) => { const v = objectOrNull(item) || {}; return { kind: clip(v.kind ?? v.code, 48), code: clip(v.code ?? v.kind, 48), severity: clip(v.severity ?? v.level, 24), level: clip(v.level ?? v.severity, 24), count: v.count ?? v.sampleCount ?? null, sampleCount: v.sampleCount ?? v.count ?? null, summary: clip(v.summary ?? v.message, 180), message: clip(v.message ?? v.summary, 180) }; };",
|
||||
"const slimDomGroup = (item) => { const v = objectOrNull(item) || {}; return { count: v.count ?? null, firstAt: v.firstAt ?? null, lastAt: v.lastAt ?? null, text: clip(v.text ?? v.preview, 180) }; };",
|
||||
"const slimNetworkGroup = (item) => { const v = objectOrNull(item) || {}; return { count: v.count ?? null, method: clip(v.method, 12), status: v.status ?? null, path: clip(v.path, 96), firstAt: v.firstAt ?? null, lastAt: v.lastAt ?? null, promptIndexes: Array.isArray(v.promptIndexes) ? v.promptIndexes.slice(0, 6) : [], failureKinds: Array.isArray(v.failureKinds) ? v.failureKinds.slice(0, 4).map((x) => clip(x, 48)) : [] }; };",
|
||||
"const slimDomSample = (item) => { const v = objectOrNull(item) || {}; return { seq: v.seq ?? null, ts: v.ts ?? null, source: clip(v.source, 32), diagnosticCode: clip(v.diagnosticCode, 48), traceId: clip(v.traceId, 64), httpStatus: v.httpStatus ?? null, idleSeconds: v.idleSeconds ?? null, waitingFor: clip(v.waitingFor, 48), lastEventLabel: clip(v.lastEventLabel, 80), text: clip(v.text ?? v.preview, 180) }; };",
|
||||
"const slimConsoleGroup = (item) => { const v = objectOrNull(item) || {}; return { count: v.count ?? null, type: clip(v.type, 24), status: v.status ?? null, path: clip(v.path, 96), lastAt: v.lastAt ?? v.firstAt ?? null, firstAt: v.firstAt ?? null, traceIds: Array.isArray(v.traceIds) ? v.traceIds.slice(0, 3).map((x) => clip(x, 64)) : [] }; };",
|
||||
"const slimConsoleSample = (item) => { const v = objectOrNull(item) || {}; return { ts: v.ts ?? null, type: clip(v.type, 24), status: v.status ?? null, path: clip(v.path, 96), traceId: clip(v.traceId, 64), text: clip(v.text, 180) }; };",
|
||||
@@ -7502,12 +7503,16 @@ function runNodeWebProbeObserveAnalyze(options: NodeWebProbeObserveOptions, spec
|
||||
"const compact = source ? {",
|
||||
" ok: analyzerExit === 0 && source.ok !== false,",
|
||||
" counts: source.counts ?? null,",
|
||||
" analysisWindow: objectOrNull(source.analysisWindow),",
|
||||
" archiveSummary: objectOrNull(source.archiveSummary),",
|
||||
" sampleMetrics: metrics,",
|
||||
" runtimeAlerts,",
|
||||
" pagePerformance,",
|
||||
" promptNetwork,",
|
||||
" pagePerformanceSlowApi: takeHead(source.pagePerformanceSlowApi, 5).map(slimSlowApi),",
|
||||
" findings: takeHead(source.findings, 8).map(slimFinding),",
|
||||
" httpErrorGroups: takeHead(source.httpErrorGroups, 8).map(slimNetworkGroup),",
|
||||
" requestFailedGroups: takeHead(source.requestFailedGroups, 8).map(slimNetworkGroup),",
|
||||
" domDiagnosticGroups: takeHead(source.domDiagnosticGroups, 5).map(slimDomGroup),",
|
||||
" domDiagnosticSamples: takeHead(source.domDiagnosticSamples, 5).map(slimDomSample),",
|
||||
" consoleAlertGroups: takeHead(source.consoleAlertGroups, 5).map(slimConsoleGroup),",
|
||||
@@ -7571,6 +7576,8 @@ function renderWebObserveAnalyzeTable(value: Record<string, unknown>): string {
|
||||
const analyzer = record(analysis?.analyzer);
|
||||
const result = record(value.result);
|
||||
const counts = record(analysis?.counts);
|
||||
const analysisWindow = record(analysis?.analysisWindow);
|
||||
const archiveSummary = record(analysis?.archiveSummary);
|
||||
const sampleMetrics = record(analysis?.sampleMetrics);
|
||||
const runtimeAlerts = record(analysis?.runtimeAlerts);
|
||||
const pagePerformance = record(analysis?.pagePerformance);
|
||||
@@ -7581,6 +7588,8 @@ function renderWebObserveAnalyzeTable(value: Record<string, unknown>): string {
|
||||
const turnColumnCount = Array.isArray(sampleMetrics?.turnColumns) ? sampleMetrics.turnColumns.length : sampleMetrics?.turnColumns;
|
||||
const slowApis = Array.isArray(analysis?.pagePerformanceSlowApi) ? analysis.pagePerformanceSlowApi.map(record).filter((item): item is Record<string, unknown> => item !== null).slice(0, 8) : [];
|
||||
const findings = Array.isArray(analysis?.findings) ? analysis.findings.map(record).filter((item): item is Record<string, unknown> => item !== null).slice(0, 8) : [];
|
||||
const httpErrorGroups = Array.isArray(analysis?.httpErrorGroups) ? analysis.httpErrorGroups.map(record).filter((item): item is Record<string, unknown> => item !== null).slice(0, 8) : [];
|
||||
const requestFailedGroups = Array.isArray(analysis?.requestFailedGroups) ? analysis.requestFailedGroups.map(record).filter((item): item is Record<string, unknown> => item !== null).slice(0, 8) : [];
|
||||
const domDiagnostics = Array.isArray(analysis?.domDiagnosticGroups) ? analysis.domDiagnosticGroups.map(record).filter((item): item is Record<string, unknown> => item !== null).slice(0, 5) : [];
|
||||
const domDiagnosticSamples = Array.isArray(analysis?.domDiagnosticSamples) ? analysis.domDiagnosticSamples.map(record).filter((item): item is Record<string, unknown> => item !== null).slice(0, 8) : [];
|
||||
const consoleAlertGroups = Array.isArray(analysis?.consoleAlertGroups) ? analysis.consoleAlertGroups.map(record).filter((item): item is Record<string, unknown> => item !== null).slice(0, 8) : [];
|
||||
@@ -7635,6 +7644,22 @@ function renderWebObserveAnalyzeTable(value: Record<string, unknown>): string {
|
||||
webObserveText(item.allowedIncreaseSeconds),
|
||||
webObserveShort(webObserveText(item.traceId), 24),
|
||||
]);
|
||||
const httpErrorRows = httpErrorGroups.map((item) => [
|
||||
webObserveText(item.count),
|
||||
webObserveText(item.method),
|
||||
webObserveText(item.status),
|
||||
webObserveShort(webObserveText(item.path), 52),
|
||||
webObserveShort(webObserveText(item.lastAt ?? item.firstAt), 24),
|
||||
webObserveShort(webObserveArray(item.failureKinds).join(",") || "-", 40),
|
||||
]);
|
||||
const requestFailedRows = requestFailedGroups.map((item) => [
|
||||
webObserveText(item.count),
|
||||
webObserveText(item.method),
|
||||
webObserveText(item.status),
|
||||
webObserveShort(webObserveText(item.path), 52),
|
||||
webObserveShort(webObserveText(item.lastAt ?? item.firstAt), 24),
|
||||
webObserveShort(webObserveArray(item.failureKinds).join(",") || "-", 40),
|
||||
]);
|
||||
const lines = [
|
||||
`hwlab nodes web-probe observe analyze (${webObserveText(value.status)})`,
|
||||
"",
|
||||
@@ -7665,6 +7690,18 @@ function renderWebObserveAnalyzeTable(value: Record<string, unknown>): string {
|
||||
webObserveText(counts?.artifacts),
|
||||
]]),
|
||||
"",
|
||||
"Analysis window:",
|
||||
webObserveTable(["WINDOW", "FROM", "TO", "SAMPLES", "NETWORK", "CONSOLE", "ARCHIVE_SAMPLES", "ARCHIVE_RED"], [[
|
||||
webObserveText(analysisWindow?.name ?? "recent-5m"),
|
||||
webObserveShort(webObserveText(analysisWindow?.fromAt), 24),
|
||||
webObserveShort(webObserveText(analysisWindow?.toAt), 24),
|
||||
webObserveText(analysisWindow?.samples),
|
||||
webObserveText(analysisWindow?.network),
|
||||
webObserveText(analysisWindow?.console),
|
||||
webObserveText(record(archiveSummary?.sampleMetrics)?.sampleCount ?? counts?.samples),
|
||||
webObserveText(archiveSummary?.redFindingCount),
|
||||
]]),
|
||||
"",
|
||||
"Reports:",
|
||||
webObserveTable(["KIND", "PATH", "SHA256"], [
|
||||
["json", webObserveShort(webObserveText(analysis?.reportJsonPath), 96), webObserveShort(webObserveText(analysis?.reportJsonSha256), 24)],
|
||||
@@ -7717,6 +7754,12 @@ function renderWebObserveAnalyzeTable(value: Record<string, unknown>): string {
|
||||
webObserveText(promptNetwork?.promptSegments),
|
||||
]]),
|
||||
"",
|
||||
"HTTP error groups:",
|
||||
webObserveTable(["COUNT", "METHOD", "STATUS", "PATH", "LAST", "FAILURE"], httpErrorRows.length > 0 ? httpErrorRows : [["-", "-", "-", "-", "-", "-"]]),
|
||||
"",
|
||||
"Request failed groups:",
|
||||
webObserveTable(["COUNT", "METHOD", "STATUS", "PATH", "LAST", "FAILURE"], requestFailedRows.length > 0 ? requestFailedRows : [["-", "-", "-", "-", "-", "-"]]),
|
||||
"",
|
||||
"Slow API (>5s):",
|
||||
webObserveTable(["PATH", "SAMPLES", "P95", "MAX", "OVER5S"], slowApis.length > 0 ? slowApis.map((item) => [
|
||||
webObserveShort(webObserveText(item.path ?? item.route), 52),
|
||||
|
||||
Reference in New Issue
Block a user