From 6139960a9e6f7676d97fe15c0655b04ecbb7f7a1 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Sat, 28 Mar 2026 21:32:40 +0800 Subject: [PATCH] Update Shenzhen settlement source to NOAA ZGSZ --- frontend/content/docs/docs.ts | 8 ++++---- frontend/lib/dashboard-official-sources.ts | 9 +++++++-- src/data_collection/city_registry.py | 8 ++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/frontend/content/docs/docs.ts b/frontend/content/docs/docs.ts index 5e51cbdc..35ebaf89 100644 --- a/frontend/content/docs/docs.ts +++ b/frontend/content/docs/docs.ts @@ -242,14 +242,14 @@ export const DOCS_PAGES: DocsPage[] = [ id: "city-rules", title: "当前主要口径", blocks: [ - { type: "bullets", items: ["多数欧美机场市场:按机场 METAR 或机场主站实况结算。", "香港:按香港天文台 HKO 主口径,不接机场 TAF 作为主结算逻辑。", "台北、伊斯坦布尔等 NOAA 市场:按 weather.gov / NOAA 指定站点最终完成质控后的最高整度摄氏值结算,机场观测和市区体感不可混用。", "Shenzhen:当前按 Wunderground 指定站点(Shenzhen Bao'an Intl Airport Station)镜像结算页主值。", "Ankara:结算主站以 LTAC / Esenboğa 为准,同时保留 Turkish MGM 作为领先结构参考。"] }, + { type: "bullets", items: ["多数欧美机场市场:按机场 METAR 或机场主站实况结算。", "香港:按香港天文台 HKO 主口径,不接机场 TAF 作为主结算逻辑。", "台北、伊斯坦布尔、深圳等 NOAA 市场:按 weather.gov / NOAA 指定站点最终完成质控后的最高整度摄氏值结算,机场观测和市区体感不可混用。", "Ankara:结算主站以 LTAC / Esenboğa 为准,同时保留 Turkish MGM 作为领先结构参考。"] }, ], }, { id: "common-mistakes", title: "最常见的误解", blocks: [ - { type: "bullets", items: ["TAF 不是结算源,它只告诉你机场未来有没有压温扰动。", "市场按机场结算时,城区更热不代表市场就该结到更高温桶。", "如果结算页直接看 Wunderground 站点主值,就应优先镜像该站点,而不是擅自回退到其他站。", "香港和台北不能简单套用机场 TAF / METAR 主链逻辑。"] }, + { type: "bullets", items: ["TAF 不是结算源,它只告诉你机场未来有没有压温扰动。", "市场按机场结算时,城区更热不代表市场就该结到更高温桶。", "NOAA 市场要优先看 weather.gov 指定站点的最终 Temp 列,不要拿其他站或第三方页面替代。", "香港和台北不能简单套用机场 TAF / METAR 主链逻辑。"] }, ], }, ], @@ -269,14 +269,14 @@ export const DOCS_PAGES: DocsPage[] = [ id: "city-rules", title: "Current primary rules", blocks: [ - { type: "bullets", items: ["Most airport-linked Western markets: settle on airport METAR or the airport primary observing site.", "Hong Kong: settles on HKO, not on airport TAF as the main settlement logic.", "NOAA markets such as Taipei and Istanbul settle against the designated weather.gov / NOAA station using the finalized highest rounded whole-degree Celsius reading; airport observations and downtown feel should not be mixed.", "Shenzhen: currently mirrors the designated Wunderground station value for Shenzhen Bao'an Intl Airport Station.", "Ankara: settlement centers on LTAC / Esenboğa, with Turkish MGM retained as a leading-structure reference."] }, + { type: "bullets", items: ["Most airport-linked Western markets: settle on airport METAR or the airport primary observing site.", "Hong Kong: settles on HKO, not on airport TAF as the main settlement logic.", "NOAA markets such as Taipei, Istanbul, and Shenzhen settle against the designated weather.gov / NOAA station using the finalized highest rounded whole-degree Celsius reading; airport observations and downtown feel should not be mixed.", "Ankara: settlement centers on LTAC / Esenboğa, with Turkish MGM retained as a leading-structure reference."] }, ], }, { id: "common-mistakes", title: "Common mistakes", blocks: [ - { type: "bullets", items: ["TAF is not a settlement source. It only tells you whether airport-side suppressive weather may appear.", "If the market settles on an airport site, a hotter downtown feel does not automatically justify a warmer settlement bucket.", "If the settlement page itself references a Wunderground station, the product should mirror that station first instead of silently switching to another source.", "Hong Kong and Taipei should not be forced into the generic airport TAF / METAR chain."] }, + { type: "bullets", items: ["TAF is not a settlement source. It only tells you whether airport-side suppressive weather may appear.", "If the market settles on an airport site, a hotter downtown feel does not automatically justify a warmer settlement bucket.", "NOAA markets should anchor to the designated weather.gov Temp column once the date is finalized, not to a nearby third-party station page.", "Hong Kong and Taipei should not be forced into the generic airport TAF / METAR chain."] }, ], }, ], diff --git a/frontend/lib/dashboard-official-sources.ts b/frontend/lib/dashboard-official-sources.ts index 87d063fc..0bd8260a 100644 --- a/frontend/lib/dashboard-official-sources.ts +++ b/frontend/lib/dashboard-official-sources.ts @@ -404,10 +404,15 @@ const CITY_SPECIFIC_SOURCES: Record = { ], shenzhen: [ { - label: "中国天气网", - href: "https://www.weather.com.cn/", + label: "NOAA ZGSZ Timeseries", + href: "https://www.weather.gov/wrh/timeseries?site=ZGSZ", kind: "agency", }, + { + label: "深圳宝安国际机场", + href: "https://www.szairport.com/", + kind: "airport", + }, { label: "ZGSZ METAR", href: "https://aviationweather.gov/data/metar/?id=ZGSZ&decoded=1&taf=1", diff --git a/src/data_collection/city_registry.py b/src/data_collection/city_registry.py index 40a99a73..7c5f19d7 100644 --- a/src/data_collection/city_registry.py +++ b/src/data_collection/city_registry.py @@ -451,9 +451,9 @@ CITY_REGISTRY = { "lat": 22.6393, "lon": 113.8107, "icao": "ZGSZ", - "settlement_source": "wunderground", - "settlement_url": "https://www.wunderground.com/weather/cn/shenzhen/ZGSZ", - "settlement_station_label": "Shenzhen Bao'an Intl Airport Station", + "settlement_source": "noaa", + "settlement_station_code": "ZGSZ", + "settlement_station_label": "Shenzhen Baoan International Airport", "tz_offset": 28800, "use_fahrenheit": False, "is_major": True, @@ -461,7 +461,7 @@ CITY_REGISTRY = { "risk_emoji": "🟡", "airport_name": "深圳宝安国际机场", "distance_km": 32.0, - "warning": "近海受海洋调节,热岛效应强,日夜温差较小。", + "warning": "市场现按 NOAA ZGSZ 整度°C口径结算;以 weather.gov Temp 列在当日全部小时最终完成后的最高整度摄氏值为准。", }, "beijing": { "name": "Beijing",