fix: align sentinel monitor checks with trend counts
This commit is contained in:
@@ -2266,10 +2266,11 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
const detailHeader = detailPane?.querySelector(".pane-header");
|
||||
const checksHeader = checksPanel?.querySelector(".pane-header");
|
||||
const internalTextPattern = /水合|投影|Trace|trace|Shell|API|DOM|Console|console|Runner|runner|JSONL|steer|facts|分页|HTTP|http|requestfailed|pageerror|Final Response|Code Agent|web-probe|observe|analyzer|终态/u;
|
||||
const cards = Array.from(document.querySelectorAll(".finding-card")).slice(0, 8).map((card) => ({
|
||||
code: String(card.querySelector(".check-code")?.textContent || "").trim(),
|
||||
title: String(card.querySelector("strong")?.textContent || "").trim(),
|
||||
body: String(card.textContent || "").replace(/\s+/g, " ").trim().slice(0, 180),
|
||||
const checkRows = Array.from(document.querySelectorAll("[data-check-row='true']"));
|
||||
const cards = checkRows.slice(0, 8).map((row) => ({
|
||||
code: String(row.querySelector(".check-code")?.textContent || "").trim(),
|
||||
title: String(row.querySelector(".check-title-cell strong")?.textContent || row.querySelector("strong")?.textContent || "").trim(),
|
||||
body: String(row.textContent || "").replace(/\s+/g, " ").trim().slice(0, 180),
|
||||
}));
|
||||
const badCardTitles = cards.filter((card) => internalTextPattern.test(card.title));
|
||||
const badCardBodies = cards.filter((card) => internalTextPattern.test(card.body));
|
||||
@@ -2280,9 +2281,9 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
return match ? Number(match[1]) : null;
|
||||
};
|
||||
const chartCounts = {
|
||||
error: legendNumber("错误"),
|
||||
warning: legendNumber("警告"),
|
||||
total: legendNumber("错误+警告合计"),
|
||||
error: legendNumber("最新点错误"),
|
||||
warning: legendNumber("最新点告警"),
|
||||
total: legendNumber("错误+告警合计"),
|
||||
};
|
||||
chartCounts.ok = typeof chartCounts.error === "number" && typeof chartCounts.warning === "number" && typeof chartCounts.total === "number"
|
||||
? chartCounts.total === chartCounts.error + chartCounts.warning
|
||||
@@ -2302,9 +2303,13 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
const latestRunCounts = {
|
||||
runId: latestRun?.id || latestRun?.runId || null,
|
||||
typeCount: numberValue(latestRun?.findingTypeCount ?? latestRun?.findingCount ?? latestRun?.finding_count),
|
||||
error: errorSampleCount(latestCounts),
|
||||
warning: warningSampleCount(latestCounts),
|
||||
total: errorSampleCount(latestCounts) + warningSampleCount(latestCounts),
|
||||
error: 0,
|
||||
warning: 0,
|
||||
total: 0,
|
||||
all: 0,
|
||||
errorSamples: errorSampleCount(latestCounts),
|
||||
warningSamples: warningSampleCount(latestCounts),
|
||||
alertSamples: errorSampleCount(latestCounts) + warningSampleCount(latestCounts),
|
||||
allSamples: allSampleCount(latestCounts),
|
||||
};
|
||||
const latestDetailPayload = latestRunCounts.runId
|
||||
@@ -2325,6 +2330,8 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
const sum = (items) => items.reduce((total, row) => total + sampleCount(row), 0);
|
||||
return {
|
||||
typeCount: rows.length,
|
||||
errorTypeCount: errorRows.length,
|
||||
warningTypeCount: warningRows.length,
|
||||
alertTypeCount: errorRows.length + warningRows.length,
|
||||
errorSamples: sum(errorRows),
|
||||
warningSamples: sum(warningRows),
|
||||
@@ -2332,6 +2339,11 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
};
|
||||
};
|
||||
const latestDetailSummary = summarizeRows(latestDetailRows);
|
||||
latestRunCounts.typeCount = latestDetailSummary.typeCount;
|
||||
latestRunCounts.error = latestDetailSummary.errorTypeCount;
|
||||
latestRunCounts.warning = latestDetailSummary.warningTypeCount;
|
||||
latestRunCounts.total = latestDetailSummary.alertTypeCount;
|
||||
latestRunCounts.all = latestDetailSummary.typeCount;
|
||||
const workspaceRect = workspace?.getBoundingClientRect();
|
||||
const checksRect = checksPanel?.getBoundingClientRect();
|
||||
const heightSummary = (rect) => {
|
||||
@@ -2368,30 +2380,46 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
scope: checksPanel?.getAttribute("data-check-scope") || null,
|
||||
runId: checksPanel?.getAttribute("data-check-run-id") || null,
|
||||
typeCount: numberValue(checksPanel?.getAttribute("data-check-type-count")),
|
||||
errorTypeCount: numberValue(checksPanel?.getAttribute("data-check-error-type-count")),
|
||||
warningTypeCount: numberValue(checksPanel?.getAttribute("data-check-warning-type-count")),
|
||||
alertTypeCount: numberValue(checksPanel?.getAttribute("data-check-alert-type-count")),
|
||||
errorSamples: numberValue(checksPanel?.getAttribute("data-check-error-samples")),
|
||||
warningSamples: numberValue(checksPanel?.getAttribute("data-check-warning-samples")),
|
||||
alertSamples: numberValue(checksPanel?.getAttribute("data-check-alert-samples")),
|
||||
visibleCardCount: document.querySelectorAll(".finding-list .finding-card").length,
|
||||
visibleRowCount: document.querySelectorAll("[data-check-row='true']").length,
|
||||
visibleAlertSamples: numberValue(checksPanel?.getAttribute("data-visible-check-alert-samples")),
|
||||
matchesLatestRun: false,
|
||||
matchesRunDetail: false,
|
||||
belowWorkspace: Boolean(workspaceRect && checksRect && checksRect.top >= workspaceRect.bottom - 2),
|
||||
fullWidth: Boolean(workspaceRect && checksRect && checksRect.width >= workspaceRect.width - 2),
|
||||
};
|
||||
const selectedRunRow = document.querySelector(".run-list .run-row.selected");
|
||||
const selectedRunTags = {
|
||||
error: numberValue(String(selectedRunRow?.querySelector("[data-run-error-tag='true']")?.textContent || "").match(/(\\d+)/u)?.[1]),
|
||||
warning: numberValue(String(selectedRunRow?.querySelector("[data-run-warning-tag='true']")?.textContent || "").match(/(\\d+)/u)?.[1]),
|
||||
errorVisible: Boolean(selectedRunRow?.querySelector("[data-run-error-tag='true']")),
|
||||
warningVisible: Boolean(selectedRunRow?.querySelector("[data-run-warning-tag='true']")),
|
||||
matchesRunDetail: false,
|
||||
};
|
||||
selectedRunTags.matchesRunDetail = selectedRunTags.error === latestDetailSummary.errorTypeCount
|
||||
&& selectedRunTags.warning === latestDetailSummary.warningTypeCount
|
||||
&& selectedRunTags.errorVisible === (latestDetailSummary.errorTypeCount > 0)
|
||||
&& selectedRunTags.warningVisible === (latestDetailSummary.warningTypeCount > 0);
|
||||
checkScope.matchesLatestRun = checkScope.present === true
|
||||
&& checkScope.scope === "run"
|
||||
&& checkScope.runId === latestRunCounts.runId
|
||||
&& checkScope.errorSamples === latestRunCounts.error
|
||||
&& checkScope.warningSamples === latestRunCounts.warning
|
||||
&& checkScope.alertSamples === latestRunCounts.total;
|
||||
&& checkScope.errorTypeCount === latestRunCounts.error
|
||||
&& checkScope.warningTypeCount === latestRunCounts.warning
|
||||
&& checkScope.alertTypeCount === latestRunCounts.total;
|
||||
checkScope.matchesRunDetail = checkScope.present === true
|
||||
&& checkScope.typeCount === latestDetailSummary.typeCount
|
||||
&& checkScope.errorTypeCount === latestDetailSummary.errorTypeCount
|
||||
&& checkScope.warningTypeCount === latestDetailSummary.warningTypeCount
|
||||
&& checkScope.alertTypeCount === latestDetailSummary.alertTypeCount
|
||||
&& checkScope.errorSamples === latestDetailSummary.errorSamples
|
||||
&& checkScope.warningSamples === latestDetailSummary.warningSamples
|
||||
&& checkScope.alertSamples === latestDetailSummary.alertSamples
|
||||
&& checkScope.visibleCardCount === latestDetailSummary.alertTypeCount
|
||||
&& checkScope.visibleRowCount === latestDetailSummary.alertTypeCount
|
||||
&& checkScope.visibleAlertSamples === latestDetailSummary.alertSamples;
|
||||
const overviewCounts = overviewPayload?.severityCounts && typeof overviewPayload.severityCounts === "object" && !Array.isArray(overviewPayload.severityCounts)
|
||||
? overviewPayload.severityCounts
|
||||
@@ -2406,6 +2434,32 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
&& chartCounts.error === latestRunCounts.error
|
||||
&& chartCounts.warning === latestRunCounts.warning
|
||||
&& chartCounts.total === latestRunCounts.total;
|
||||
const trendPanel = document.querySelector(".trend-panel");
|
||||
const trendLegend = document.querySelector(".trend-panel .trend-legend");
|
||||
const trendPanelRect = trendPanel?.getBoundingClientRect();
|
||||
const trendLegendRect = trendLegend?.getBoundingClientRect();
|
||||
const trendPanelCompact = {
|
||||
present: Boolean(trendPanelRect && trendLegendRect),
|
||||
bottomSlackPx: trendPanelRect && trendLegendRect ? Math.round(trendPanelRect.bottom - trendLegendRect.bottom) : null,
|
||||
ok: Boolean(trendPanelRect && trendLegendRect && trendPanelRect.bottom - trendLegendRect.bottom <= 28),
|
||||
};
|
||||
const firstCheckRow = document.querySelector("[data-check-row='true']");
|
||||
let checkDialog = { opened: false, title: "", width: null, height: null, large: false };
|
||||
if (firstCheckRow instanceof HTMLElement) {
|
||||
firstCheckRow.click();
|
||||
await new Promise((resolve) => window.setTimeout(resolve, 80));
|
||||
const dialog = document.querySelector("[data-check-dialog='true'] .check-dialog");
|
||||
const rect = dialog?.getBoundingClientRect();
|
||||
checkDialog = {
|
||||
opened: Boolean(dialog),
|
||||
title: String(dialog?.querySelector("#check-dialog-title")?.textContent || "").trim(),
|
||||
width: rect ? Math.round(rect.width) : null,
|
||||
height: rect ? Math.round(rect.height) : null,
|
||||
large: Boolean(rect && rect.width >= Math.min(900, window.innerWidth * 0.7) && rect.height >= Math.min(460, window.innerHeight * 0.5)),
|
||||
};
|
||||
const close = dialog?.querySelector("button[aria-label='关闭监测项详情']");
|
||||
if (close instanceof HTMLElement) close.click();
|
||||
}
|
||||
const datasetSentinelId = root?.getAttribute("data-sentinel-id") || "";
|
||||
const finalPath = new URL(window.location.href).pathname.replace(/\/+$/u, "") || "/";
|
||||
const expectedPath = expectedRoutePrefix.replace(/\/+$/u, "") || "/";
|
||||
@@ -2470,7 +2524,7 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
subtitle: text(".subtitle"),
|
||||
summaryText: text(".status-strip"),
|
||||
runRows: document.querySelectorAll(".run-list .run-row").length,
|
||||
findingItems: document.querySelectorAll(".finding-list .finding-card").length,
|
||||
checkRows: document.querySelectorAll("[data-check-row='true']").length,
|
||||
badCardTitleCount: badCardTitles.length,
|
||||
badCardBodyCount: badCardBodies.length,
|
||||
trendCurve: Boolean(trend),
|
||||
@@ -2481,6 +2535,9 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
latestRunCounts,
|
||||
latestDetailSummary,
|
||||
checkScope,
|
||||
selectedRunTags,
|
||||
trendPanelCompact,
|
||||
checkDialog,
|
||||
overviewSamples,
|
||||
panelHeights,
|
||||
scopeLabels: {
|
||||
@@ -2515,7 +2572,7 @@ const dom = await page.evaluate(async ({ expectedRoutePrefix, expectedSentinelId
|
||||
return {
|
||||
visible: Boolean(element && body.length > 0),
|
||||
text: body.slice(0, 240),
|
||||
hasValues: /错误\s+\d+/u.test(body) && /警告\s+\d+/u.test(body) && /合计\s+\d+/u.test(body),
|
||||
hasValues: /错误\s+\d+/u.test(body) && /告警\s+\d+/u.test(body) && /合计\s+\d+/u.test(body),
|
||||
hasTime: /UTC/u.test(body) || /\d{4}-\d{2}-\d{2}/u.test(body),
|
||||
};
|
||||
}
|
||||
@@ -2573,6 +2630,8 @@ const runFilterProbe = await page.evaluate(async ({ expectedRoutePrefix }) => {
|
||||
const sum = (items) => items.reduce((total, row) => total + sampleCount(row), 0);
|
||||
return {
|
||||
typeCount: rows.length,
|
||||
errorTypeCount: errorRows.length,
|
||||
warningTypeCount: warningRows.length,
|
||||
alertTypeCount: errorRows.length + warningRows.length,
|
||||
errorSamples: sum(errorRows),
|
||||
warningSamples: sum(warningRows),
|
||||
@@ -2581,16 +2640,21 @@ const runFilterProbe = await page.evaluate(async ({ expectedRoutePrefix }) => {
|
||||
};
|
||||
const panelCounts = () => {
|
||||
const panel = document.querySelector("[data-monitor-checks='true']");
|
||||
const selectedRunRow = document.querySelector(".run-list .run-row.selected");
|
||||
return {
|
||||
present: Boolean(panel),
|
||||
runId: panel?.getAttribute("data-check-run-id") || null,
|
||||
typeCount: numberValue(panel?.getAttribute("data-check-type-count")),
|
||||
errorTypeCount: numberValue(panel?.getAttribute("data-check-error-type-count")),
|
||||
warningTypeCount: numberValue(panel?.getAttribute("data-check-warning-type-count")),
|
||||
alertTypeCount: numberValue(panel?.getAttribute("data-check-alert-type-count")),
|
||||
errorSamples: numberValue(panel?.getAttribute("data-check-error-samples")),
|
||||
warningSamples: numberValue(panel?.getAttribute("data-check-warning-samples")),
|
||||
alertSamples: numberValue(panel?.getAttribute("data-check-alert-samples")),
|
||||
visibleCardCount: document.querySelectorAll(".finding-list .finding-card").length,
|
||||
visibleRowCount: document.querySelectorAll("[data-check-row='true']").length,
|
||||
visibleAlertSamples: numberValue(panel?.getAttribute("data-visible-check-alert-samples")),
|
||||
selectedRunErrorTag: numberValue(String(selectedRunRow?.querySelector("[data-run-error-tag='true']")?.textContent || "").match(/(\\d+)/u)?.[1]),
|
||||
selectedRunWarningTag: numberValue(String(selectedRunRow?.querySelector("[data-run-warning-tag='true']")?.textContent || "").match(/(\\d+)/u)?.[1]),
|
||||
};
|
||||
};
|
||||
const waitForRun = async (runId) => {
|
||||
@@ -2620,12 +2684,16 @@ const runFilterProbe = await page.evaluate(async ({ expectedRoutePrefix }) => {
|
||||
const observed = panelCounts();
|
||||
const matchesRunDetail = observed.runId === targetRunId
|
||||
&& observed.typeCount === expected.typeCount
|
||||
&& observed.errorTypeCount === expected.errorTypeCount
|
||||
&& observed.warningTypeCount === expected.warningTypeCount
|
||||
&& observed.alertTypeCount === expected.alertTypeCount
|
||||
&& observed.errorSamples === expected.errorSamples
|
||||
&& observed.warningSamples === expected.warningSamples
|
||||
&& observed.alertSamples === expected.alertSamples
|
||||
&& observed.visibleCardCount === expected.alertTypeCount
|
||||
&& observed.visibleAlertSamples === expected.alertSamples;
|
||||
&& observed.visibleRowCount === expected.alertTypeCount
|
||||
&& observed.visibleAlertSamples === expected.alertSamples
|
||||
&& observed.selectedRunErrorTag === expected.errorTypeCount
|
||||
&& observed.selectedRunWarningTag === expected.warningTypeCount;
|
||||
return {
|
||||
ok: panelReady === true && matchesRunDetail === true,
|
||||
requestedRunId,
|
||||
@@ -2657,6 +2725,7 @@ const ok = !navigationError
|
||||
&& dom.chartCounts?.matchesLatestRun === true
|
||||
&& dom.checkScope?.matchesLatestRun === true
|
||||
&& dom.checkScope?.matchesRunDetail === true
|
||||
&& dom.selectedRunTags?.matchesRunDetail === true
|
||||
&& dom.runFilterProbe?.ok === true
|
||||
&& dom.runFilterProbe?.requestedOptionPresent === true
|
||||
&& dom.checkScope?.belowWorkspace === true
|
||||
@@ -2664,6 +2733,10 @@ const ok = !navigationError
|
||||
&& dom.scopeLabels?.latestPointLegend === true
|
||||
&& dom.scopeLabels?.historicalSamples === true
|
||||
&& (dom.trendDotCount === 0 || (dom.trendTooltip?.visible === true && dom.trendTooltip?.hasValues === true && dom.trendTooltip?.hasTime === true))
|
||||
&& dom.trendPanelCompact?.ok === true
|
||||
&& dom.checkRows > 0
|
||||
&& dom.checkDialog?.opened === true
|
||||
&& dom.checkDialog?.large === true
|
||||
&& dom.badCardTitleCount === 0
|
||||
&& dom.badCardBodyCount === 0
|
||||
&& dom.timelineVisible === true
|
||||
@@ -4966,6 +5039,9 @@ function renderDashboardResult(result: Record<string, unknown>): string {
|
||||
const latestRunCounts = record(dom.latestRunCounts);
|
||||
const latestDetailSummary = record(dom.latestDetailSummary);
|
||||
const checkScope = record(dom.checkScope);
|
||||
const selectedRunTags = record(dom.selectedRunTags);
|
||||
const trendPanelCompact = record(dom.trendPanelCompact);
|
||||
const checkDialog = record(dom.checkDialog);
|
||||
const runFilterProbe = record(dom.runFilterProbe);
|
||||
const runFilterObserved = record(runFilterProbe.observed);
|
||||
const runFilterExpected = record(runFilterProbe.expected);
|
||||
@@ -4982,11 +5058,11 @@ function renderDashboardResult(result: Record<string, unknown>): string {
|
||||
"",
|
||||
table(["NODE", "LANE", "SENTINEL", "STATUS", "URL"], [[result.node, result.lane, result.sentinelId, result.ok === true ? "pass" : "blocked", result.publicUrl]]),
|
||||
"",
|
||||
table(["HTTP", "SHELL", "RUN_ROWS", "FINDINGS", "TABS", "ERRORS", "CONSOLE_ERR", "REQ_FAIL"], [[
|
||||
table(["HTTP", "SHELL", "RUN_ROWS", "CHECK_ROWS", "TABS", "ERRORS", "CONSOLE_ERR", "REQ_FAIL"], [[
|
||||
page.httpStatus ?? "-",
|
||||
dom.shell,
|
||||
dom.runRows,
|
||||
dom.findingItems,
|
||||
dom.checkRows,
|
||||
dom.detailTabs,
|
||||
page.pageErrorCount,
|
||||
page.consoleErrorCount,
|
||||
@@ -4995,7 +5071,7 @@ function renderDashboardResult(result: Record<string, unknown>): string {
|
||||
"",
|
||||
table(["TITLE", "STATUS_TEXT", "CONTRACT", "BASE_PATH"], [[dom.title, dom.statusText, dataset.contractVersion, dataset.basePath ?? "-"]]),
|
||||
"",
|
||||
table(["TREND_ERROR", "TREND_WARNING", "TREND_TOTAL", "TREND_EXACT", "MATCH_LATEST", "BAD_TITLE", "BAD_BODY"], [[
|
||||
table(["TREND_ERR_TYPES", "TREND_ALERT_TYPES", "TREND_TOTAL_TYPES", "TREND_EXACT", "MATCH_LATEST", "BAD_TITLE", "BAD_BODY"], [[
|
||||
chartCounts.error ?? "-",
|
||||
chartCounts.warning ?? "-",
|
||||
chartCounts.total ?? "-",
|
||||
@@ -5005,36 +5081,46 @@ function renderDashboardResult(result: Record<string, unknown>): string {
|
||||
dom.badCardBodyCount ?? "-",
|
||||
]]),
|
||||
"",
|
||||
table(["LATEST_RUN", "TYPE_COUNT", "LATEST_ERR", "LATEST_WARN", "LATEST_TOTAL", "LATEST_ALL", "HIST_ERR", "HIST_WARN"], [[
|
||||
table(["LATEST_RUN", "TYPE_COUNT", "ERR_TYPES", "ALERT_TYPES", "TOTAL_TYPES", "SAMPLE_TOTAL", "HIST_ERR", "HIST_ALERT"], [[
|
||||
latestRunCounts.runId ?? "-",
|
||||
latestRunCounts.typeCount ?? "-",
|
||||
latestRunCounts.error ?? "-",
|
||||
latestRunCounts.warning ?? "-",
|
||||
latestRunCounts.total ?? "-",
|
||||
latestRunCounts.allSamples ?? "-",
|
||||
latestRunCounts.alertSamples ?? "-",
|
||||
overviewSamples.error ?? "-",
|
||||
overviewSamples.warning ?? "-",
|
||||
]]),
|
||||
"",
|
||||
table(["CHECK_SCOPE", "CHECK_RUN", "CHECK_TYPES", "CHECK_ALERT_TYPES", "CHECK_ERR", "CHECK_WARN", "CHECK_TOTAL", "CHECK_MATCH_LATEST", "CHECK_MATCH_DETAIL"], [[
|
||||
table(["CHECK_SCOPE", "CHECK_RUN", "CHECK_TYPES", "CHECK_ERR_TYPES", "CHECK_ALERT_TYPES", "SAMPLE_ERR", "SAMPLE_ALERT", "CHECK_MATCH_LATEST", "CHECK_MATCH_DETAIL"], [[
|
||||
checkScope.scope ?? "-",
|
||||
checkScope.runId ?? "-",
|
||||
`${checkScope.typeCount ?? "-"}/${latestDetailSummary.typeCount ?? "-"}`,
|
||||
`${checkScope.errorTypeCount ?? "-"}/${latestDetailSummary.errorTypeCount ?? "-"}`,
|
||||
`${checkScope.alertTypeCount ?? "-"}/${latestDetailSummary.alertTypeCount ?? "-"}`,
|
||||
checkScope.errorSamples ?? "-",
|
||||
checkScope.warningSamples ?? "-",
|
||||
checkScope.alertSamples ?? "-",
|
||||
checkScope.matchesLatestRun ?? "-",
|
||||
checkScope.matchesRunDetail ?? "-",
|
||||
]]),
|
||||
"",
|
||||
table(["CHECK_VISIBLE", "CHECK_VISIBLE_ALERT", "BELOW_WORKSPACE", "FULL_WIDTH"], [[
|
||||
checkScope.visibleCardCount ?? "-",
|
||||
table(["CHECK_VISIBLE_ROWS", "CHECK_VISIBLE_ALERT", "RUN_TAG_ERR", "RUN_TAG_ALERT", "RUN_TAG_MATCH", "BELOW_WORKSPACE", "FULL_WIDTH"], [[
|
||||
checkScope.visibleRowCount ?? "-",
|
||||
checkScope.visibleAlertSamples ?? "-",
|
||||
selectedRunTags.error ?? "-",
|
||||
selectedRunTags.warning ?? "-",
|
||||
selectedRunTags.matchesRunDetail ?? "-",
|
||||
checkScope.belowWorkspace ?? "-",
|
||||
checkScope.fullWidth ?? "-",
|
||||
]]),
|
||||
"",
|
||||
table(["TREND_PANEL_SLACK", "TREND_PANEL_COMPACT", "DETAIL_DIALOG", "DIALOG_LARGE"], [[
|
||||
trendPanelCompact.bottomSlackPx ?? "-",
|
||||
trendPanelCompact.ok ?? "-",
|
||||
checkDialog.opened ?? "-",
|
||||
checkDialog.large ?? "-",
|
||||
]]),
|
||||
"",
|
||||
table(["WORKSPACE_H", "WORKSPACE_RATIO", "WORKSPACE_80", "CHECKS_H", "CHECKS_RATIO", "CHECKS_80", "PANES_80"], [[
|
||||
`${workspaceHeight.heightPx ?? "-"}/${workspaceHeight.targetPx ?? "-"}`,
|
||||
workspaceHeight.ratio ?? "-",
|
||||
@@ -5045,13 +5131,13 @@ function renderDashboardResult(result: Record<string, unknown>): string {
|
||||
panelHeights.workspacePaneBounded ?? "-",
|
||||
]]),
|
||||
"",
|
||||
table(["FILTER_RUN", "FILTER_OPTION", "FILTER_TYPES", "FILTER_ALERT_TYPES", "FILTER_ERR", "FILTER_WARN", "FILTER_TOTAL", "FILTER_MATCH_DETAIL"], [[
|
||||
table(["FILTER_RUN", "FILTER_OPTION", "FILTER_TYPES", "FILTER_ERR_TYPES", "FILTER_ALERT_TYPES", "FILTER_SAMPLE_ERR", "FILTER_SAMPLE_ALERT", "FILTER_MATCH_DETAIL"], [[
|
||||
runFilterProbe.targetRunId ?? "-",
|
||||
runFilterProbe.requestedOptionPresent ?? "-",
|
||||
`${runFilterObserved.typeCount ?? "-"}/${runFilterExpected.typeCount ?? "-"}`,
|
||||
`${runFilterObserved.errorTypeCount ?? "-"}/${runFilterExpected.errorTypeCount ?? "-"}`,
|
||||
`${runFilterObserved.alertTypeCount ?? "-"}/${runFilterExpected.alertTypeCount ?? "-"}`,
|
||||
runFilterObserved.errorSamples ?? "-",
|
||||
runFilterObserved.warningSamples ?? "-",
|
||||
runFilterObserved.alertSamples ?? "-",
|
||||
runFilterProbe.matchesRunDetail ?? "-",
|
||||
]]),
|
||||
|
||||
Reference in New Issue
Block a user