feat: tune scan dashboard and telegram monitor

This commit is contained in:
2569718930@qq.com
2026-05-15 14:36:43 +08:00
parent e7fc3c97cb
commit 747c8aa401
11 changed files with 406 additions and 22 deletions
+18
View File
@@ -492,6 +492,23 @@ function pickRicherForecast(
};
}
function countHourlyPoints(value: CityDetail["hourly"] | undefined) {
const times = Array.isArray(value?.times) ? value?.times || [] : [];
const temps = Array.isArray(value?.temps) ? value?.temps || [] : [];
return Math.min(times.length, temps.length);
}
function pickRicherHourly(
currentValue: CityDetail["hourly"] | undefined,
incomingValue: CityDetail["hourly"] | undefined,
) {
const incomingCount = countHourlyPoints(incomingValue);
const currentCount = countHourlyPoints(currentValue);
if (incomingCount <= 0) return currentValue;
if (currentCount <= 0) return incomingValue;
return incomingCount >= currentCount ? incomingValue : currentValue;
}
function pickPreferredNearbyStations(
currentValue: CityDetail["official_nearby"] | CityDetail["mgm_nearby"],
incomingValue: CityDetail["official_nearby"] | CityDetail["mgm_nearby"],
@@ -536,6 +553,7 @@ function mergeCityDetail(
incoming.multi_model_daily,
),
forecast: pickRicherForecast(current.forecast, incoming.forecast),
hourly: pickRicherHourly(current.hourly, incoming.hourly),
official_nearby: pickPreferredNearbyStations(
current.official_nearby,
incoming.official_nearby,