莫斯科数据源简化:移除 METAR 集群 + NOAA 结算,仅保留 UUWW 单站

- city_registry: settlement_source noaa → metar
- weather_sources: 移除 Moscow METAR cluster 5 站配置
- country_networks: 删除 RussiaStationWebNetworkProvider 类
- 文档: Tier 4 备注更新
This commit is contained in:
2569718930@qq.com
2026-05-26 09:20:49 +08:00
parent 0fffc0faa1
commit 6e6d27f323
4 changed files with 3 additions and 26 deletions
+1 -1
View File
@@ -57,7 +57,7 @@
|------|------|------|
| london | EGLC | Met Office 仅 1 小时更新 |
| jeddah | OEJN | NCM 数据源目前不可用 |
| moscow | UUWW | 俄罗斯 METAR 集群 + NOAA WRH 结算 |
| moscow | UUWW | 仅 UUWW METAR 单站 |
| shenzhen | ZGSZ | 已接入 HKO 流浮山 10 分钟数据,见 Tier 3 |
| munich | EDDM | DWD 延迟约 1 小时 |
| milan | LIMC | 无已知实时源 |
+2 -2
View File
@@ -40,7 +40,7 @@ CITY_REGISTRY = {
"lat": 55.5915,
"lon": 37.2615,
"icao": "UUWW",
"settlement_source": "noaa",
"settlement_source": "metar",
"settlement_station_code": "UUWW",
"settlement_station_label": "Vnukovo International Airport",
"tz_offset": 10800,
@@ -50,7 +50,7 @@ CITY_REGISTRY = {
"risk_emoji": "🟡",
"airport_name": "Vnukovo International Airport",
"distance_km": 29.0,
"warning": "市场现按 NOAA UUWW 整度°C口径结算;以 weather.gov Temp 列在当日全部小时最终完成后的最高整度摄氏值为准",
"warning": "仅 UUWW METAR 单站;无实时国家级站网,看日内趋势时需注意报间相对稳定但更新频率较低",
},
"london": {
"name": "London",
-22
View File
@@ -191,8 +191,6 @@ def _provider_code_for_city(city: str) -> str:
return "saudi_ncm"
if normalized == "paris":
return "fr_aeroweb"
if normalized == "moscow":
return "russia_metar_cluster"
if settlement_source == "hko":
return "hongkong_hko"
if settlement_source == "cwa":
@@ -984,24 +982,6 @@ class KoreaKmaNetworkProvider(CountryNetworkProvider):
}
class RussiaStationWebNetworkProvider(CountryNetworkProvider):
def __init__(self) -> None:
super().__init__("russia_metar_cluster", "Moscow METAR network")
def official_nearby_current(self, city: str, raw: Dict[str, Any]) -> List[Dict[str, Any]]:
return _metar_cluster_rows(raw)
def official_network_status(self, city: str, raw: Dict[str, Any]) -> Dict[str, Any]:
rows = self.official_nearby_current(city, raw)
return {
"provider_code": self.provider_code,
"provider_label": self.provider_label,
"available": bool(rows),
"mode": "realtime_metar_cluster" if rows else "reference_only",
"row_count": len(rows),
}
class IsraelImsNetworkProvider(CountryNetworkProvider):
def __init__(self) -> None:
super().__init__("israel_ims", "IMS Lod Airport")
@@ -1161,8 +1141,6 @@ def get_country_network_provider(city: str) -> CountryNetworkProvider:
return TurkeyMgmNetworkProvider()
if provider_code == "korea_kma":
return KoreaKmaNetworkProvider()
if provider_code == "russia_metar_cluster":
return RussiaStationWebNetworkProvider()
if provider_code == "japan_jma":
return JapanJmaNetworkProvider()
if provider_code == "china_cma":
-1
View File
@@ -55,7 +55,6 @@ class WeatherDataCollector(OpenMeteoCacheMixin, SettlementSourceMixin, MetarSour
CITY_METAR_CLUSTERS = {
"buenos aires": ["SAEZ", "SABE", "SADP", "SADF", "SADL", "SADJ"],
"istanbul": ["LTFM", "LTBA", "LTFJ"],
"moscow": ["UUWW", "UUEE", "UUDD", "UUBW", "UUMO"],
"london": ["EGLL", "EGLC", "EGKK", "EGSS", "EGGW"],
"new york": ["KLGA", "KJFK", "KEWR", "KTEB", "KHPN"],
"los angeles": ["KLAX", "KBUR", "KLGB", "KSNA", "KVNY"],