a684586cb4
getModelView 优先使用根级 detail.deb.prediction 保证与 AI 证据面板一致, _build_city_detail_payload 补上缺失的 deb 和 multi_model_daily 字段, _analyze_summary 补上 LGBM 增强步骤使其与 _analyze 产出相同的 DEB 值。 Constraint: 三个入口 (panel/full/summary) 的 DEB 必须经过同一套 calculate_dynamic_weights + LGBM 重算流程 Tested: ruff + tsc 全过
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
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];
|
|
const deb = detail.deb?.prediction ?? daily?.deb?.prediction ?? null;
|
|
if (daily) {
|
|
return {
|
|
deb,
|
|
models: daily.models || {},
|
|
};
|
|
}
|
|
|
|
return {
|
|
deb,
|
|
models: detail.multi_model || {},
|
|
};
|
|
}
|