完成 lau fau shan → shenzhen 全量重命名,前端库和文档同步更新

This commit is contained in:
2569718930@qq.com
2026-05-25 06:10:54 +08:00
parent 341397bc45
commit bf4be0436b
15 changed files with 30 additions and 57 deletions
@@ -21,7 +21,6 @@ const CITY_REGION_FALLBACK: Record<string, TradingRegionKey> = {
chongqing: "east_asia",
guangzhou: "east_asia",
"hong kong": "east_asia",
"lau fau shan": "east_asia",
qingdao: "east_asia",
seoul: "east_asia",
shanghai: "east_asia",
+1 -1
View File
@@ -48,7 +48,7 @@ const CITY_MARKER_DISPLAY_OFFSETS: Record<
// Shek Kong sits between the Hong Kong and Shenzhen cards and gets visually buried
// by their wide marker bubbles. Shift only the rendered marker, not the true point.
"shek kong": { x: 34, y: -26, zIndexOffset: 320 },
"lau fau shan": { x: -40, y: 14, zIndexOffset: 300 },
"shenzhen": { x: -40, y: 14, zIndexOffset: 300 },
};
function getMarkerDisplayOffset(cityName: string) {
+3 -3
View File
@@ -26,7 +26,7 @@ const CITY_NAME_ZH: Record<string, string> = {
Jakarta: "雅加达",
Jeddah: "吉达",
Karachi: "卡拉奇",
"Lau Fau Shan": "流浮山",
"shenzhen": "深圳流浮山",
London: "伦敦",
Lucknow: "勒克瑙",
Madrid: "马德里",
@@ -77,7 +77,7 @@ const AIRPORT_NAME_ZH: Record<string, string> = {
Jakarta: "苏加诺-哈达国际机场",
Jeddah: "阿卜杜勒-阿齐兹国王国际机场",
Karachi: "真纳国际机场",
"Lau Fau Shan": "流浮山监测站",
"shenzhen": "深圳流浮山监测站",
London: "希思罗机场",
Lucknow: "乔杜里·查兰·辛格国际机场",
Madrid: "马德里-巴拉哈斯机场",
@@ -107,7 +107,7 @@ const AIRPORT_NAME_ZH: Record<string, string> = {
const AIRPORT_NAME_EN: Record<string, string> = {
"Hong Kong": "Hong Kong Observatory HQ",
"Lau Fau Shan": "Lau Fau Shan Monitoring Station",
"shenzhen": "shenzhen Monitoring Station",
};
function normalizeCityKey(value: string | null | undefined) {
+3 -3
View File
@@ -76,19 +76,19 @@ const CITY_SPECIFIC_SOURCES: Record<string, OfficialSourceLink[]> = {
kind: "metar",
},
{
label: "流浮山站(HKO",
label: "深圳流浮山站(HKO",
href: "https://www.hko.gov.hk/sc/wxinfo/ts/index.htm",
kind: "agency",
},
],
"lau fau shan": [
"shenzhen": [
{
label: "香港天文台",
href: "https://www.hko.gov.hk/en/index.html",
kind: "agency",
},
{
label: "流浮山站(HKO",
label: "深圳流浮山站(HKO",
href: "https://www.hko.gov.hk/sc/wxinfo/ts/index.htm",
kind: "airport",
},
+1 -1
View File
@@ -20,7 +20,7 @@ export function getObservationSourceCode(detail: CityDetail): string {
if (
city === "hong kong" ||
city === "shek kong" ||
city === "lau fau shan"
city === "shenzhen"
) {
return "hko";
}
+1 -1
View File
@@ -89,7 +89,7 @@ const CITY_REGION_FALLBACK: Record<string, MarketRegionKey> = {
seoul: "asia_pacific",
busan: "asia_pacific",
"hong kong": "asia_pacific",
"lau fau shan": "asia_pacific",
"shenzhen": "asia_pacific",
taipei: "asia_pacific",
shanghai: "asia_pacific",
singapore: "asia_pacific",
+1 -1
View File
@@ -167,7 +167,7 @@ class StartupCoordinator:
"istanbul",
"paris",
"hong kong",
"lau fau shan",
"shenzhen",
"taipei",
],
"chat_targets": len(chat_ids),
+7 -25
View File
@@ -134,8 +134,8 @@ CITY_REGISTRY = {
"distance_km": 2.0,
"warning": "海风与地形共同作用,午后对流触发后温度回落可能偏快。",
},
"lau fau shan": {
"name": "Lau Fau Shan",
"shenzhen": {
"name": "Shenzhen",
"lat": 22.4686,
"lon": 113.9970,
"icao": "LFS",
@@ -146,12 +146,12 @@ CITY_REGISTRY = {
"disable_aviationweather": True,
"tz_offset": 28800,
"use_fahrenheit": False,
"is_major": False,
"is_major": True,
"risk_level": "medium",
"risk_emoji": "🟡",
"airport_name": "流浮山站",
"airport_name": "流浮山天文台",
"distance_km": 0.0,
"warning": "HKO 结算取流浮山站分钟级观测;该站不是机场 METAR,不VHHH/VHSK 报文混用。",
"warning": "香港天文台流浮山站分钟级观测Polymarket 深圳温度市场结算源;非机场 METAR,不ZGSZ/VHHH 报文混用。",
},
"taipei": {
"name": "Taipei",
@@ -665,24 +665,6 @@ CITY_REGISTRY = {
"distance_km": 19.0,
"warning": "四大火炉之一,夏季持续高温,夜间温度偏高,湿度大。",
},
"shenzhen": {
"name": "Shenzhen",
"lat": 22.6393,
"lon": 113.8107,
"icao": "ZGSZ",
"settlement_source": "wunderground",
"settlement_station_code": "ZGSZ",
"settlement_station_label": "Shenzhen Bao'an International Airport Station",
"settlement_url": "https://www.wunderground.com/history/daily/cn/shenzhen/ZGSZ",
"tz_offset": 28800,
"use_fahrenheit": False,
"is_major": True,
"risk_level": "medium",
"risk_emoji": "🟡",
"airport_name": "深圳宝安国际机场",
"distance_km": 32.0,
"warning": "市场现按 Wunderground 深圳宝安国际机场站整度°C口径结算;以历史页当日最终完成后的最高整度摄氏值为准。",
},
"guangzhou": {
"name": "Guangzhou",
"lat": 23.3924,
@@ -816,7 +798,7 @@ ALIASES = {
"dal": "dallas", "mia": "miami", "atl": "atlanta",
"sea": "seattle", "tor": "toronto", "sel": "seoul",
"seo": "seoul", "hkg": "hong kong", "hk": "hong kong",
"lfs": "lau fau shan", "laufaushan": "lau fau shan",
"lfs": "shenzhen", "laufaushan": "shenzhen", "lau fau shan": "shenzhen",
"tpe": "taipei", "tp": "taipei", "taipei": "taipei",
"pus": "busan", "bus": "busan", "rkpk": "busan",
"sha": "shanghai", "sh": "shanghai", "sin": "singapore",
@@ -858,7 +840,7 @@ ALIASES = {
"多伦多": "toronto",
"首尔": "seoul",
"香港": "hong kong",
"流浮山": "lau fau shan",
"流浮山": "shenzhen",
"台北": "taipei",
"臺北": "taipei",
"釜山": "busan",
+1 -2
View File
@@ -34,7 +34,7 @@ CITY_TIME_ZONES = {
"jeddah": "Asia/Riyadh",
"karachi": "Asia/Karachi",
"kuala lumpur": "Asia/Kuala_Lumpur",
"lau fau shan": "Asia/Hong_Kong",
"shenzhen": "Asia/Hong_Kong",
"london": "Europe/London",
"los angeles": "America/Los_Angeles",
"lucknow": "Asia/Kolkata",
@@ -54,7 +54,6 @@ CITY_TIME_ZONES = {
"seattle": "America/Los_Angeles",
"seoul": "Asia/Seoul",
"shanghai": "Asia/Shanghai",
"shenzhen": "Asia/Shanghai",
"singapore": "Asia/Singapore",
"taipei": "Asia/Taipei",
"tel aviv": "Asia/Jerusalem",
-1
View File
@@ -15,7 +15,6 @@ CHINA_CMA_CITIES = {
"guangzhou",
"qingdao",
"shanghai",
"shenzhen",
"wuhan",
}
+3 -3
View File
@@ -25,10 +25,10 @@ HKO_STATIONS = {
"icao": "HKO",
"label": "HK Observatory 1min (HKO)",
},
"lau fau shan": {
"code": "Lau Fau Shan",
"shenzhen": {
"code": "Shenzhen (LFS)",
"icao": "LFS",
"label": "Lau Fau Shan 1min (HKO)",
"label": "流浮山天文台 1min (HKO)",
},
}
@@ -84,9 +84,6 @@ def _normalize_city_key(city: Any) -> str:
MARKET_CITY_ALIASES: Dict[str, str] = {
# Lau Fau Shan has its own HKO observation / settlement layer, but
# Polymarket lists this temperature market under nearby Shenzhen.
"lau fau shan": "shenzhen",
}
MARKET_CITY_SLUG_ALIASES: Dict[str, str] = {
+5 -8
View File
@@ -67,7 +67,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour
"chongqing": ["ZUCK", "ZUPS"],
"guangzhou": ["ZGGG", "ZGSZ"],
"qingdao": ["ZSQD"],
"shenzhen": ["ZGSZ", "ZGGG"],
"beijing": ["ZBAA", "ZBAD"],
"wuhan": ["ZHHH", "ZHES"],
"shanghai": ["ZSPD", "ZSSS", "ZSNB", "ZSHC"],
@@ -657,9 +656,9 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour
"vhsk": "Shek Kong",
"石岗": "Shek Kong",
"石崗": "Shek Kong",
"lau fau shan": "Lau Fau Shan",
"lfs": "Lau Fau Shan",
"流浮山": "Lau Fau Shan",
"shenzhen": "shenzhen",
"lfs": "shenzhen",
"深圳流浮山": "shenzhen",
"taipei": "Taipei",
"台北": "Taipei",
"臺北": "Taipei",
@@ -667,8 +666,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour
"成都": "Chengdu",
"chongqing": "Chongqing",
"重庆": "Chongqing",
"shenzhen": "Shenzhen",
"深圳": "Shenzhen",
"qingdao": "Qingdao",
"青岛": "Qingdao",
"青島": "Qingdao",
@@ -846,7 +843,7 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour
def _supports_aviationweather(self, city_lower: str) -> bool:
city_meta = self.CITY_REGISTRY.get(str(city_lower or "").strip().lower(), {}) or {}
settlement_source = str(city_meta.get("settlement_source") or "").strip().lower()
# HKO-settled Hong Kong cities (Hong Kong, Lau Fau Shan, future HKO stations)
# HKO-settled Hong Kong cities (Hong Kong, shenzhen, future HKO stations)
# are official observatory stations, not airport/METAR contracts. Do not fetch
# AviationWeather for their city cards; Shenzhen remains ZGSZ/Bao'an METAR-backed.
if settlement_source == "hko":
@@ -1085,7 +1082,7 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour
def _attach_hko_obs_official_nearby(
self, results: Dict, city_lower: str, use_fahrenheit: bool
) -> None:
if city_lower not in ("hong kong", "lau fau shan"):
if city_lower not in ("hong kong", "shenzhen"):
return
rows = self.fetch_hko_obs_official_nearby(
city_lower, use_fahrenheit=use_fahrenheit
+1 -1
View File
@@ -55,7 +55,7 @@ HIGH_FREQ_AIRPORT_ANALYSIS_CITIES = {
"istanbul",
"paris",
"hong kong",
"lau fau shan",
"shenzhen",
"taipei",
"beijing",
"shanghai",
+3 -3
View File
@@ -91,13 +91,13 @@ SCAN_TERMINAL_PAYLOAD_TTL_SEC = max(
)
SCAN_TERMINAL_BUILD_TIMEOUT_SEC = max(
8,
int(os.getenv("POLYWEATHER_SCAN_TERMINAL_BUILD_TIMEOUT_SEC", "22")),
int(os.getenv("POLYWEATHER_SCAN_TERMINAL_BUILD_TIMEOUT_SEC", "60")),
)
SCAN_TERMINAL_MAX_WORKERS = _env_int(
"POLYWEATHER_SCAN_TERMINAL_MAX_WORKERS",
2,
6,
min_value=1,
max_value=4,
max_value=8,
)
DEFAULT_SCAN_AI_MODEL = "mimo-v2.5-pro"
DEFAULT_SCAN_AI_BASE_URL = "https://token-plan-cn.xiaomimimo.com/v1"