feat: implement runway observations monitoring panel and Telegram alert utilities
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
export const MONITOR_CITY_DETAIL_DEPTH = "panel" as const;
|
||||
export const MONITOR_REFRESH_INTERVAL_MS = 60_000;
|
||||
export const MONITOR_REFRESH_INTERVAL_MS = 300_000;
|
||||
|
||||
export type MonitorRefreshTrigger = "initial" | "interval";
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ export function RunwayObservationsPanel() {
|
||||
ensureCityDetail(city.key, true, "panel"),
|
||||
),
|
||||
);
|
||||
}, 60_000);
|
||||
}, 300_000);
|
||||
return () => {
|
||||
if (intervalRef.current) clearInterval(intervalRef.current);
|
||||
};
|
||||
|
||||
+19
-19
@@ -771,25 +771,25 @@ def _get_airport_daily_high(city_weather: Dict[str, Any]):
|
||||
|
||||
# Per-city push interval — unified to 60s, obs_time dedup prevents spam
|
||||
_AIRPORT_PUSH_INTERVAL = {
|
||||
"seoul": 60,
|
||||
"busan": 60,
|
||||
"tokyo": 60,
|
||||
"ankara": 60,
|
||||
"helsinki": 60,
|
||||
"amsterdam": 60,
|
||||
"istanbul": 60,
|
||||
"paris": 60,
|
||||
"hong kong": 60,
|
||||
"lau fau shan": 60,
|
||||
"taipei": 60,
|
||||
"beijing": 60,
|
||||
"shanghai": 60,
|
||||
"guangzhou": 60,
|
||||
"shenzhen": 60,
|
||||
"qingdao": 60,
|
||||
"chengdu": 60,
|
||||
"chongqing": 60,
|
||||
"wuhan": 60,
|
||||
"seoul": 300,
|
||||
"busan": 300,
|
||||
"tokyo": 300,
|
||||
"ankara": 300,
|
||||
"helsinki": 300,
|
||||
"amsterdam": 300,
|
||||
"istanbul": 300,
|
||||
"paris": 300,
|
||||
"hong kong": 300,
|
||||
"lau fau shan": 300,
|
||||
"taipei": 300,
|
||||
"beijing": 300,
|
||||
"shanghai": 300,
|
||||
"guangzhou": 300,
|
||||
"shenzhen": 300,
|
||||
"qingdao": 300,
|
||||
"chengdu": 300,
|
||||
"chongqing": 300,
|
||||
"wuhan": 300,
|
||||
}
|
||||
# Per-city temperature window threshold (°C below DEB predicted high)
|
||||
# Continental airports: wider window (temp rises steadily over land)
|
||||
|
||||
Reference in New Issue
Block a user