Publish model summary announcement
This commit is contained in:
@@ -24,22 +24,22 @@ const UPDATE_ANNOUNCEMENT_SEEN_KEY = "polyweather_update_announcement_seen_v1";
|
|||||||
|
|
||||||
const STATIC_UPDATE_ANNOUNCEMENTS: StaticUpdateAnnouncement[] = [
|
const STATIC_UPDATE_ANNOUNCEMENTS: StaticUpdateAnnouncement[] = [
|
||||||
{
|
{
|
||||||
id: "live-observation-chart-2026-06",
|
id: "model-summary-table-2026-06-29",
|
||||||
publishedAt: "2026-06-17T00:00:00+08:00",
|
publishedAt: "2026-06-29T19:20:00+08:00",
|
||||||
expiresAt: "2026-07-31T00:00:00+08:00",
|
expiresAt: "2026-08-15T00:00:00+08:00",
|
||||||
zh: {
|
zh: {
|
||||||
title: "更新公告:实时观测和图表稳定性升级",
|
title: "更新公告:模型汇总表上线",
|
||||||
body:
|
body:
|
||||||
"实时观测链路已和模型缓存拆分:SSE 到达会立即更新图表;如果 SSE 断线,终端会每 3 分钟拉取一次轻量观测兜底。DEB、模型曲线、概率和历史数据继续走独立缓存,不再跟着实时温度强刷。\n\n" +
|
"终端左侧新增「模型汇总」菜单,按今日最高温口径汇总全部城市:当前最高、DEB 预测,以及 ECMWF、ECMWF AIFS、GFS、ICON、ICON-EU、GEM、GDPS、JMA、AROME HD、HRRR、NAM 等模型高温预测集中到一张表里。\n\n" +
|
||||||
"这次也补齐了更多官方观测覆盖,包括东京 JMA、韩国 AMOS、土耳其 MGM、台北 CWA 等,并修正 NOAA MADIS 只应用于美国城市,避免非美国城市串台。\n\n" +
|
"缺失模型会显示 —;模型中位数和分歧范围只基于已有模型值计算,方便快速发现 DEB 与多模型之间的偏离。\n\n" +
|
||||||
"图表侧同步修复了预测曲线缺段、首屏 loading 不明显、旧缓存覆盖最新观测等问题。刷新终端后即可使用新逻辑。",
|
"页面支持搜索城市或模型,并提供「仅 DEB」和「分歧较大」筛选。移动端可横向滚动,首列城市固定。刷新终端后即可使用。",
|
||||||
},
|
},
|
||||||
en: {
|
en: {
|
||||||
title: "Update: live observations and chart stability",
|
title: "Update: Model Summary table is live",
|
||||||
body:
|
body:
|
||||||
"Live observations are now separated from cached model detail. SSE patches update charts immediately; if SSE is unavailable, the terminal falls back to a lightweight observation fetch every 3-minute interval. DEB, model curves, probabilities, and historical data stay on their own cache path instead of refreshing with every live temperature update.\n\n" +
|
"The left terminal navigation now includes Model Summary, a city-by-city table for today's high-temperature view: current high, DEB forecast, plus ECMWF, ECMWF AIFS, GFS, ICON, ICON-EU, GEM, GDPS, JMA, AROME HD, HRRR, and NAM model highs in one workspace.\n\n" +
|
||||||
"Official observation coverage has also expanded, including Tokyo JMA, Korea AMOS, Turkey MGM, and Taipei CWA. NOAA MADIS is now restricted to US cities to avoid cross-region source leakage.\n\n" +
|
"Missing models render as —. Model median and spread are calculated only from available model values, making it easier to spot where DEB diverges from the model cluster.\n\n" +
|
||||||
"Charts also include fixes for truncated forecast curves, first-load chart loading visibility, and stale cache overriding newer observations. Refresh the terminal to use the new flow.",
|
"The page supports city or model search, plus Only DEB and Large spread filters. Mobile keeps the city column sticky with horizontal table scrolling. Refresh the terminal to use it.",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -70,32 +70,40 @@ export function runTests() {
|
|||||||
"announcement component must persist seen announcement ids and render an unread indicator for unseen updates",
|
"announcement component must persist seen announcement ids and render an unread indicator for unseen updates",
|
||||||
);
|
);
|
||||||
assert(
|
assert(
|
||||||
componentSource.includes("实时观测链路已和模型缓存拆分") &&
|
componentSource.includes("模型汇总表上线") &&
|
||||||
componentSource.includes("SSE") &&
|
componentSource.includes("模型汇总") &&
|
||||||
componentSource.includes("3 分钟") &&
|
|
||||||
componentSource.includes("DEB") &&
|
componentSource.includes("DEB") &&
|
||||||
|
componentSource.includes("ECMWF") &&
|
||||||
|
componentSource.includes("ECMWF AIFS") &&
|
||||||
|
componentSource.includes("GFS") &&
|
||||||
|
componentSource.includes("ICON-EU") &&
|
||||||
componentSource.includes("JMA") &&
|
componentSource.includes("JMA") &&
|
||||||
componentSource.includes("AMOS") &&
|
componentSource.includes("AROME HD") &&
|
||||||
componentSource.includes("MGM") &&
|
componentSource.includes("HRRR") &&
|
||||||
componentSource.includes("CWA") &&
|
componentSource.includes("NAM") &&
|
||||||
componentSource.includes("NOAA MADIS") &&
|
componentSource.includes("模型中位数") &&
|
||||||
componentSource.includes("预测曲线缺段") &&
|
componentSource.includes("分歧范围") &&
|
||||||
componentSource.includes("首屏 loading"),
|
componentSource.includes("仅 DEB") &&
|
||||||
"terminal announcement should summarize the live-observation architecture update and recent chart fixes in Chinese",
|
componentSource.includes("分歧较大"),
|
||||||
|
"terminal announcement should summarize the model summary table release in Chinese",
|
||||||
);
|
);
|
||||||
assert(
|
assert(
|
||||||
componentSource.includes("Live observations are now separated from cached model detail") &&
|
componentSource.includes("Model Summary table is live") &&
|
||||||
componentSource.includes("SSE") &&
|
componentSource.includes("city-by-city table") &&
|
||||||
componentSource.includes("3-minute") &&
|
|
||||||
componentSource.includes("DEB") &&
|
componentSource.includes("DEB") &&
|
||||||
|
componentSource.includes("ECMWF") &&
|
||||||
|
componentSource.includes("ECMWF AIFS") &&
|
||||||
|
componentSource.includes("GFS") &&
|
||||||
|
componentSource.includes("ICON-EU") &&
|
||||||
componentSource.includes("JMA") &&
|
componentSource.includes("JMA") &&
|
||||||
componentSource.includes("AMOS") &&
|
componentSource.includes("AROME HD") &&
|
||||||
componentSource.includes("MGM") &&
|
componentSource.includes("HRRR") &&
|
||||||
componentSource.includes("CWA") &&
|
componentSource.includes("NAM") &&
|
||||||
componentSource.includes("NOAA MADIS") &&
|
componentSource.includes("Model median") &&
|
||||||
componentSource.includes("truncated forecast curves") &&
|
componentSource.includes("spread") &&
|
||||||
componentSource.includes("first-load chart loading"),
|
componentSource.includes("Only DEB") &&
|
||||||
"terminal announcement should summarize the live-observation architecture update and recent chart fixes in English",
|
componentSource.includes("Large spread"),
|
||||||
|
"terminal announcement should summarize the model summary table release in English",
|
||||||
);
|
);
|
||||||
assert(
|
assert(
|
||||||
!middlewareSource.includes("/api/system/update-announcement"),
|
!middlewareSource.includes("/api/system/update-announcement"),
|
||||||
|
|||||||
Reference in New Issue
Block a user