Add Qingdao to the tradable city network

Qingdao needs the same airport-settlement path as the other Wunderground-backed APAC cities, so the registry, aliases, timezone, prewarm, official links, market focus, and tests now point to ZSQD / Qingdao Jiaodong International Airport.

Constraint: User supplied Wunderground Qingdao/ZSQD settlement URL.
Rejected: Add a partial registry-only entry | it would show in APIs without frontend links, prewarm coverage, or alias support.
Confidence: high
Scope-risk: narrow
Reversibility: clean
Tested: pytest tests/test_country_networks.py tests/test_web_observability.py::test_cities_endpoint_includes_new_wunderground_cities -q
Tested: npm run build
Not-tested: Live Wunderground fetch for ZSQD in production.
This commit is contained in:
2569718930@qq.com
2026-04-28 07:08:33 +08:00
parent e6010d8242
commit 89a71d1bc0
14 changed files with 62 additions and 2 deletions
+2
View File
@@ -41,6 +41,7 @@ const CITY_NAME_ZH: Record<string, string> = {
Panama: "巴拿马城",
"Panama City": "巴拿马城",
Paris: "巴黎",
Qingdao: "青岛",
"Sao Paulo": "圣保罗",
"São Paulo": "圣保罗",
Seattle: "西雅图",
@@ -91,6 +92,7 @@ const AIRPORT_NAME_ZH: Record<string, string> = {
"New York": "拉瓜迪亚机场",
"Panama City": "托库门国际机场",
Paris: "戴高乐机场",
Qingdao: "青岛胶东国际机场",
"Sao Paulo": "瓜鲁柳斯国际机场",
"São Paulo": "瓜鲁柳斯国际机场",
Seattle: "西雅图-塔科马国际机场",
@@ -617,6 +617,23 @@ const CITY_SPECIFIC_SOURCES: Record<string, OfficialSourceLink[]> = {
kind: "metar",
},
],
qingdao: [
{
label: "Wunderground ZSQD",
href: "https://www.wunderground.com/history/daily/cn/qingdao/ZSQD",
kind: "agency",
},
{
label: "青岛胶东国际机场",
href: "https://www.qdairport.com/",
kind: "airport",
},
{
label: "ZSQD METAR",
href: "https://aviationweather.gov/data/metar/?id=ZSQD&decoded=1&taf=1",
kind: "metar",
},
],
"kuala lumpur": [
{
label: "Wunderground WMKK",
+1
View File
@@ -25,6 +25,7 @@ const CITY_TO_MARKET_SLUG: Record<string, string> = {
munich: "munich",
"new york": "nyc",
paris: "paris",
qingdao: "qingdao",
"san francisco": "san-francisco",
"sao paulo": "sao-paulo",
seattle: "seattle",
+1
View File
@@ -107,6 +107,7 @@ const CITY_REGION_FALLBACK: Record<string, MarketRegionKey> = {
chongqing: "asia_pacific",
shenzhen: "asia_pacific",
guangzhou: "asia_pacific",
qingdao: "asia_pacific",
beijing: "asia_pacific",
wuhan: "asia_pacific",
};