fix: surface sentinel timing detail in reports
This commit is contained in:
@@ -870,6 +870,9 @@ function dashboardFindings(config: WebProbeSentinelServiceConfig, db: Database,
|
||||
rootCauseConfidence: stringOrNull(latestDetail?.rootCauseConfidence),
|
||||
nextAction: stringOrNull(latestDetail?.nextAction),
|
||||
evidenceSummary: stringOrNull(latestDetail?.evidenceSummary),
|
||||
timingSourceOfTruth: stringOrNull(latestDetail?.timingSourceOfTruth),
|
||||
timingStatus: stringOrNull(latestDetail?.timingStatus),
|
||||
timingAlert: latestDetail?.timingAlert === true,
|
||||
traceability: latestRun === null ? null : runTraceability(config, latestRun),
|
||||
valuesRedacted: true,
|
||||
});
|
||||
@@ -1147,6 +1150,9 @@ function enrichFindingRowWithStoredDetail(config: WebProbeSentinelServiceConfig,
|
||||
rootCauseConfidence: stringOrNull(detail?.rootCauseConfidence),
|
||||
nextAction: stringOrNull(detail?.nextAction),
|
||||
evidenceSummary: stringOrNull(detail?.evidenceSummary),
|
||||
timingSourceOfTruth: stringOrNull(detail?.timingSourceOfTruth),
|
||||
timingStatus: stringOrNull(detail?.timingStatus),
|
||||
timingAlert: detail?.timingAlert === true,
|
||||
valuesRedacted: true,
|
||||
});
|
||||
}
|
||||
@@ -1184,6 +1190,9 @@ function compactStoredFinding(value: unknown): Record<string, unknown> {
|
||||
rootCauseConfidence: stringOrNull(item.rootCauseConfidence),
|
||||
nextAction: stringOrNull(item.nextAction),
|
||||
evidenceSummary: stringOrNull(item.evidenceSummary) ?? compactFindingEvidenceSummary(item.evidence),
|
||||
timingSourceOfTruth: stringOrNull(item.timingSourceOfTruth) ?? stringOrNull(item.expectedElapsedSource) ?? stringOrNull(item.evidenceKind),
|
||||
timingStatus: stringOrNull(item.timingStatus),
|
||||
timingAlert: item.timingAlert === true,
|
||||
valuesRedacted: true,
|
||||
};
|
||||
}
|
||||
@@ -1540,7 +1549,7 @@ function reportRunView(config: WebProbeSentinelServiceConfig, db: Database, view
|
||||
const findings = findingsForRun(config, db, selectedRunId, 50);
|
||||
const views = record(stored.views);
|
||||
const storedView = record(views[view]);
|
||||
const renderedText = typeof storedView.renderedText === "string" ? storedView.renderedText : view === "summary" ? renderStoredSummary(row, stored, findings) : view === "findings" ? renderStoredFindings(row, findings) : null;
|
||||
const renderedText = view === "findings" ? renderStoredFindings(row, findings) : typeof storedView.renderedText === "string" ? storedView.renderedText : view === "summary" ? renderStoredSummary(row, stored, findings) : null;
|
||||
if (renderedText === null) {
|
||||
return { ok: false, error: "report-view-not-indexed", runId: selectedRunId, view, availableViews: Object.keys(views), valuesRedacted: true };
|
||||
}
|
||||
@@ -1564,14 +1573,28 @@ function formatStoredFindingLine(item: Record<string, unknown>): string {
|
||||
const status = stringOrNull(item.rootCauseStatus);
|
||||
const nextAction = stringOrNull(item.nextAction);
|
||||
const evidence = stringOrNull(item.evidenceSummary);
|
||||
const timing = formatStoredFindingTiming(item);
|
||||
return [
|
||||
`${item.severity ?? "-"} ${code} ${title} count=${item.count ?? "-"} ${summary}`,
|
||||
timing,
|
||||
rootCause === null ? null : `rootCause=${rootCause}${status === null ? "" : ` status=${status}`}`,
|
||||
evidence === null ? null : `evidence=${evidence}`,
|
||||
nextAction === null ? null : `next=${nextAction}`,
|
||||
].filter((part) => part !== null).join(" | ");
|
||||
}
|
||||
|
||||
function formatStoredFindingTiming(item: Record<string, unknown>): string | null {
|
||||
const source = stringOrNull(item.timingSourceOfTruth);
|
||||
const status = stringOrNull(item.timingStatus);
|
||||
if (source === null && status === null) return null;
|
||||
const pieces = [
|
||||
status === null ? null : `status=${status}`,
|
||||
source === null ? null : `source=${source}`,
|
||||
item.timingAlert === true ? "alert=true" : null,
|
||||
].filter((part): part is string => part !== null);
|
||||
return `timing=${pieces.join(" ")}`;
|
||||
}
|
||||
|
||||
function renderStoredSummary(row: Record<string, unknown>, stored: Record<string, unknown>, findings: readonly Record<string, unknown>[]): string {
|
||||
const summary = record(stored.summary);
|
||||
return [
|
||||
|
||||
Reference in New Issue
Block a user