Add WeatherNext2 worker and prevent empty scan cache

This commit is contained in:
2569718930@qq.com
2026-07-02 20:25:40 +08:00
parent 5bad2ec398
commit 459909539c
24 changed files with 2620 additions and 22 deletions
@@ -30,6 +30,7 @@ export function runTests() {
model_cluster_sources: {
ECMWF: 28.8,
GFS: 29.4,
"WeatherNext 2": 29.8,
},
},
{
@@ -144,8 +145,9 @@ export function runTests() {
assert(
MODEL_SUMMARY_MODEL_COLUMNS.map((column) => column.key).includes("AROME HD") &&
MODEL_SUMMARY_MODEL_COLUMNS.map((column) => column.key).includes("HRRR") &&
MODEL_SUMMARY_MODEL_COLUMNS.map((column) => column.key).includes("NAM"),
"model summary must expose the fixed model columns including optional short-range models",
MODEL_SUMMARY_MODEL_COLUMNS.map((column) => column.key).includes("NAM") &&
MODEL_SUMMARY_MODEL_COLUMNS.map((column) => column.key).includes("WeatherNext 2"),
"model summary must expose the fixed model columns including optional short-range and WeatherNext 2 models",
);
assert(summaryRows.length === 5, "model summary should keep one row per city");
assert(summaryRows[0].cityName === "Beijing", "model summary should sort by resolved region then city name");
@@ -179,6 +181,7 @@ export function runTests() {
"model summary should aggregate Fahrenheit probabilities into two-degree market option labels",
);
assert(parisRow.marketMatches.length === 3, "model summary should keep every Polymarket tradable bucket");
assert(beijingRow?.models["WeatherNext 2"] === 29.8, "model summary should preserve WeatherNext 2 model representative");
assert(
parisRow.marketMatches[0].label === "32°C" &&
parisRow.marketMatches[0].modelProbability === null &&