From f8f503522535a70accf826d192f9ea1c619506a2 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Fri, 29 May 2026 18:40:29 +0800 Subject: [PATCH] Fix runway chart collapse and ops cleanup --- .../scan-terminal/TemperatureChartCanvas.tsx | 26 ++-- ...temperatureDefaultVisibilityPolicy.test.ts | 58 ++++++++ .../scan-terminal/temperature-chart-logic.ts | 54 ++++++- .../production_remediation_20260529.sql | 138 ++++++++++++++++++ src/utils/online_tracker.py | 4 +- tests/test_online_tracker.py | 27 ++++ 6 files changed, 288 insertions(+), 19 deletions(-) create mode 100644 scripts/supabase/production_remediation_20260529.sql create mode 100644 tests/test_online_tracker.py diff --git a/frontend/components/dashboard/scan-terminal/TemperatureChartCanvas.tsx b/frontend/components/dashboard/scan-terminal/TemperatureChartCanvas.tsx index 7a0ef5d9..0ca50dba 100644 --- a/frontend/components/dashboard/scan-terminal/TemperatureChartCanvas.tsx +++ b/frontend/components/dashboard/scan-terminal/TemperatureChartCanvas.tsx @@ -15,7 +15,11 @@ import { } from "recharts"; import type { ScanOpportunityRow } from "@/lib/dashboard-types"; import { TemperatureTooltipContent } from "@/components/dashboard/scan-terminal/TemperatureTooltipContent"; -import type { EvidenceSeries, ProbabilityOverlay } from "@/components/dashboard/scan-terminal/temperature-chart-logic"; +import { + getTemperatureSeriesForRunwayDetailsMode, + type EvidenceSeries, + type ProbabilityOverlay, +} from "@/components/dashboard/scan-terminal/temperature-chart-logic"; type CityThreshold = { threshold: number; @@ -120,23 +124,25 @@ export function TemperatureChartCanvas({ const individualRunwaySeriesCount = chartSeries.filter( (series) => series.key.startsWith("runway_") && series.key !== "runway_max", ).length; + const collapsedRunwaySeries = getTemperatureSeriesForRunwayDetailsMode( + row?.city || "", + chartSeries, + false, + ); const canToggleRunwayDetails = hasRunwayData && individualRunwaySeriesCount > 1 && - chartSeries.some((series) => series.key === "runway_max"); + collapsedRunwaySeries.length < chartSeries.length; return (
{chartSeries.length > 1 && - chartSeries - .filter((s) => { - const isIndividualRunway = s.key.startsWith("runway_") && s.key !== "runway_max"; - if (showRunwayDetails) { - return s.key !== "runway_max"; - } - return !isIndividualRunway; - }) + getTemperatureSeriesForRunwayDetailsMode( + row?.city || "", + chartSeries, + showRunwayDetails, + ) .map((s) => (