From f6b78ace5f85199d0d5f33d0b6b3ee783f6780bd Mon Sep 17 00:00:00 2001 From: Zhao Jianing <18910855655@163.com> Date: Wed, 21 Oct 2026 13:14:48 +0800 Subject: [PATCH] fix: updated-since median reference line plots the mean convertResult maps result.summaryMedian from result.summaryMean (a copy-paste of the line above): the blue median dashed line on the Updated-Since card renders the mean values, so median and average coincide whenever mean != median - and the median is wrong everywhere they differ. ChartDataProvider builds the two series from distinct API fields (transSummaryToAxis reads metricStat.mean vs metricStat.median), so the median series exists and was simply never converted from its own values. Map summaryMedian from summaryMedian, export convertResult for the regression test. --- .../CommunityActivity/UpdatedSince.test.tsx | 19 +++++++++++++++++++ .../CommunityActivity/UpdatedSince.tsx | 4 ++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 apps/web/src/modules/analyze/DataView/CommunityActivity/UpdatedSince.test.tsx diff --git a/apps/web/src/modules/analyze/DataView/CommunityActivity/UpdatedSince.test.tsx b/apps/web/src/modules/analyze/DataView/CommunityActivity/UpdatedSince.test.tsx new file mode 100644 index 0000000000..f891a15269 --- /dev/null +++ b/apps/web/src/modules/analyze/DataView/CommunityActivity/UpdatedSince.test.tsx @@ -0,0 +1,19 @@ +jest.mock('@modules/analyze/components/CardDropDownMenu', () => ({ + __esModule: true, + default: () => null, +})); + +import { convertResult } from './UpdatedSince'; +import { DataContainerResult } from '@modules/analyze/type'; + +describe('convertResult', () => { + it('converts the median series from its own values, not the mean series', () => { + const result = convertResult({ + summaryMean: [1, 2], + summaryMedian: [3, 4], + yResults: [{ name: 'a', data: [1, 2] }], + } as unknown as DataContainerResult); + expect(result.summaryMean).toEqual([30, 60]); + expect(result.summaryMedian).toEqual([90, 120]); + }); +}); diff --git a/apps/web/src/modules/analyze/DataView/CommunityActivity/UpdatedSince.tsx b/apps/web/src/modules/analyze/DataView/CommunityActivity/UpdatedSince.tsx index 74c15e24b5..02ca135732 100644 --- a/apps/web/src/modules/analyze/DataView/CommunityActivity/UpdatedSince.tsx +++ b/apps/web/src/modules/analyze/DataView/CommunityActivity/UpdatedSince.tsx @@ -14,11 +14,11 @@ import { convertMonthsToDays } from '@common/utils/format'; import { DataContainerResult } from '@modules/analyze/type'; // convert months to days. -const convertResult = (result: DataContainerResult) => { +export const convertResult = (result: DataContainerResult) => { result.summaryMean = result.summaryMean.map((value) => convertMonthsToDays(value) ); - result.summaryMedian = result.summaryMean.map((value) => + result.summaryMedian = result.summaryMedian.map((value) => convertMonthsToDays(value) ); result.yResults = result.yResults.map((item) => {