2026-04-28 12:07:43 +08:00
|
|
|
import type { CityDetail } from "@/lib/dashboard-types";
|
|
|
|
|
|
|
|
|
|
export function getProbabilityView(detail: CityDetail, targetDate?: string | null) {
|
|
|
|
|
const date = targetDate || detail.local_date;
|
|
|
|
|
if (date === detail.local_date) {
|
|
|
|
|
return {
|
|
|
|
|
calibrationMode: detail.probabilities?.calibration_mode ?? null,
|
|
|
|
|
calibrationVersion: detail.probabilities?.calibration_version ?? null,
|
|
|
|
|
engine: detail.probabilities?.engine ?? null,
|
|
|
|
|
mu: detail.probabilities?.mu ?? null,
|
|
|
|
|
probabilities: detail.probabilities?.distribution || [],
|
|
|
|
|
probabilitiesAll:
|
|
|
|
|
detail.probabilities?.distribution_all ||
|
|
|
|
|
detail.probabilities?.distribution ||
|
|
|
|
|
[],
|
|
|
|
|
shadowProbabilities: detail.probabilities?.shadow_distribution || [],
|
|
|
|
|
shadowProbabilitiesAll:
|
|
|
|
|
detail.probabilities?.shadow_distribution_all ||
|
|
|
|
|
detail.probabilities?.shadow_distribution ||
|
|
|
|
|
[],
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const daily = detail.multi_model_daily?.[date];
|
|
|
|
|
return {
|
|
|
|
|
calibrationMode: null,
|
|
|
|
|
calibrationVersion: null,
|
|
|
|
|
engine: null,
|
|
|
|
|
mu: daily?.deb?.prediction ?? null,
|
|
|
|
|
probabilities: daily?.probabilities || [],
|
|
|
|
|
probabilitiesAll: daily?.probabilities_all || daily?.probabilities || [],
|
|
|
|
|
shadowProbabilities: [],
|
|
|
|
|
shadowProbabilitiesAll: [],
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function getModelView(detail: CityDetail, targetDate?: string | null) {
|
|
|
|
|
const date = targetDate || detail.local_date;
|
|
|
|
|
const daily = detail.multi_model_daily?.[date];
|
2026-05-06 18:24:15 +08:00
|
|
|
const deb = detail.deb?.prediction ?? daily?.deb?.prediction ?? null;
|
2026-04-28 12:07:43 +08:00
|
|
|
if (daily) {
|
|
|
|
|
return {
|
2026-05-06 18:24:15 +08:00
|
|
|
deb,
|
2026-04-28 12:07:43 +08:00
|
|
|
models: daily.models || {},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
2026-05-06 18:24:15 +08:00
|
|
|
deb,
|
2026-04-28 12:07:43 +08:00
|
|
|
models: detail.multi_model || {},
|
|
|
|
|
};
|
|
|
|
|
}
|