From a83d9e764996e250e35cef526def9b40f94f2038 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Sun, 17 May 2026 13:41:44 +0800 Subject: [PATCH] feat: implement 60-second analysis cache TTL for high-frequency airport cities --- tests/test_analysis_ttl.py | 12 ++++++++++++ web/analysis_service.py | 24 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 tests/test_analysis_ttl.py diff --git a/tests/test_analysis_ttl.py b/tests/test_analysis_ttl.py new file mode 100644 index 00000000..17b45de1 --- /dev/null +++ b/tests/test_analysis_ttl.py @@ -0,0 +1,12 @@ +from web.analysis_service import _analysis_ttl_for_city +from web.core import CACHE_TTL + + +def test_high_frequency_airport_cities_use_one_minute_analysis_cache(): + assert _analysis_ttl_for_city("chongqing") == 60 + assert _analysis_ttl_for_city("shanghai") == 60 + assert _analysis_ttl_for_city("singapore") == 60 + + +def test_non_high_frequency_city_keeps_default_analysis_cache_ttl(): + assert _analysis_ttl_for_city("new york") == CACHE_TTL diff --git a/web/analysis_service.py b/web/analysis_service.py index efd89298..cbb79199 100644 --- a/web/analysis_service.py +++ b/web/analysis_service.py @@ -45,6 +45,28 @@ from web.services.city_payloads import ( ) TURKISH_MGM_CITIES = {"ankara", "istanbul"} +HIGH_FREQ_AIRPORT_ANALYSIS_CITIES = { + "seoul", + "singapore", + "busan", + "tokyo", + "ankara", + "helsinki", + "amsterdam", + "istanbul", + "paris", + "hong kong", + "lau fau shan", + "taipei", + "beijing", + "shanghai", + "guangzhou", + "shenzhen", + "qingdao", + "chengdu", + "chongqing", + "wuhan", +} _ANALYSIS_CACHE_STATS_LOCK = threading.Lock() _ANALYSIS_CACHE_STATS: Dict[str, Any] = { "total_requests": 0, @@ -374,6 +396,8 @@ def _analysis_ttl_for_city(city: str) -> int: return CACHE_TTL_ANKARA if city_lower in KOREAN_AMOS_CITIES: return CACHE_TTL_KOREAN_AMOS + if city_lower in HIGH_FREQ_AIRPORT_ANALYSIS_CITIES: + return 60 return CACHE_TTL