From c502b341e9b31139868a2aacd5bee73c38ecea24 Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 2 Jul 2026 05:48:07 +0000 Subject: [PATCH] fix: store quick-verify request-rate curves --- .../src/hwlab-node-web-sentinel-p5-observe.ts | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/scripts/src/hwlab-node-web-sentinel-p5-observe.ts b/scripts/src/hwlab-node-web-sentinel-p5-observe.ts index 1f525d44..28e37d54 100644 --- a/scripts/src/hwlab-node-web-sentinel-p5-observe.ts +++ b/scripts/src/hwlab-node-web-sentinel-p5-observe.ts @@ -834,11 +834,11 @@ function compactQuickVerifyRecordBrowserProcess(value: Record): function compactQuickVerifyRecordRequestRate(summaryValue: Record, curveValue: Record): Record | null { const source = Object.keys(curveValue).length > 0 ? curveValue : summaryValue; - const summary = record(curveValue.summary); + const summary = record(source.summary); const effectiveSummary = Object.keys(summary).length > 0 ? summary : summaryValue; - const pageCurves = Array.isArray(curveValue.pageCurves) ? curveValue.pageCurves.map((item) => compactQuickVerifyRecordRequestRateCurve(item, "page")).filter((item) => item.buckets.length > 0).slice(0, 12) : []; - const apiPathCurves = Array.isArray(curveValue.apiPathCurves) ? curveValue.apiPathCurves.map((item) => compactQuickVerifyRecordRequestRateCurve(item, "apiPath")).filter((item) => item.buckets.length > 0).slice(0, 16) : []; - const buckets = Array.isArray(curveValue.buckets) ? curveValue.buckets.map(compactQuickVerifyRecordRequestRateBucket).filter((item) => item.startAt !== null && item.requestPerMinute !== null).slice(-120) : []; + const pageCurves = Array.isArray(source.pageCurves) ? source.pageCurves.map((item) => compactQuickVerifyRecordRequestRateCurve(item, "page")).filter((item) => item.buckets.length > 0).slice(0, 12) : []; + const apiPathCurves = Array.isArray(source.apiPathCurves) ? source.apiPathCurves.map((item) => compactQuickVerifyRecordRequestRateCurve(item, "apiPath")).filter((item) => item.buckets.length > 0).slice(0, 16) : []; + const buckets = Array.isArray(source.buckets) ? source.buckets.map(compactQuickVerifyRecordRequestRateBucket).filter(hasCompactRequestRateBucketPoint).slice(-120) : []; if (Object.keys(source).length === 0 && pageCurves.length === 0 && apiPathCurves.length === 0 && buckets.length === 0) return null; return { summary: compactQuickVerifyRecordRequestRateSummary(effectiveSummary), @@ -878,7 +878,7 @@ function compactQuickVerifyRecordRequestRateSummary(value: Record & { buckets: Record[] } { const item = record(value); - const buckets = Array.isArray(item.buckets) ? item.buckets.map(compactQuickVerifyRecordRequestRateBucket).filter((bucket) => bucket.startAt !== null && bucket.requestPerMinute !== null).slice(-120) : []; + const buckets = Array.isArray(item.buckets) ? item.buckets.map(compactQuickVerifyRecordRequestRateBucket).filter(hasCompactRequestRateBucketPoint).slice(-120) : []; return { pageKey: stringAtNullable(item, "pageKey"), pageRole: stringAtNullable(item, "pageRole"), @@ -902,14 +902,18 @@ function compactQuickVerifyRecordRequestRateBucket(value: unknown): Record): boolean { + return stringAtNullable(value, "startAt") !== null && numberAtNullable(value, "requestPerMinute") !== null; +} + function compactQuickVerifyRecordRequestRatePeak(value: unknown): Record { const item = record(value); return {