From d64a92fd24170edcf37417dc7c64c5847fc34420 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Mon, 25 May 2026 06:32:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=AB=E6=8F=8F=E7=BB=88=E7=AB=AF=E6=8C=89?= =?UTF-8?q?=E9=9C=80=E5=8A=A0=E8=BD=BD=EF=BC=9A=E5=90=8E=E7=AB=AF=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20trading=5Fregion=20=E8=BF=87=E6=BB=A4=20+=20skip=5F?= =?UTF-8?q?polymarket=20=E5=BF=AB=E9=80=9F=E9=80=9A=E9=81=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scan_terminal_service:trading_region 参数预过滤城市列表。scan_terminal_city_row:快速模式跳过 Polymarket RPC。前端 hook 支持按区域查询。 --- .../dashboard/scan-terminal/MarketOverviewView.tsx | 4 ++-- .../dashboard/scan-terminal/scan-terminal-client.ts | 5 +++++ .../dashboard/scan-terminal/use-scan-terminal-query.ts | 7 +++++-- web/scan_terminal_service.py | 10 ++++++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/frontend/components/dashboard/scan-terminal/MarketOverviewView.tsx b/frontend/components/dashboard/scan-terminal/MarketOverviewView.tsx index 09331fc7..6bfd29dd 100644 --- a/frontend/components/dashboard/scan-terminal/MarketOverviewView.tsx +++ b/frontend/components/dashboard/scan-terminal/MarketOverviewView.tsx @@ -280,7 +280,7 @@ export function MarketOverviewView({ - + - + { @@ -62,7 +65,7 @@ export function useScanTerminalQuery({ return; } void fetchScanTerminal({ forceRefresh: false, showLoading: true }); - }, [fetchScanTerminal, isPro, proAccessLoading, reset]); + }, [fetchScanTerminal, isPro, proAccessLoading, reset, tradingRegion]); const refreshScanTerminalManually = useCallback(() => { if ( diff --git a/web/scan_terminal_service.py b/web/scan_terminal_service.py index 78bc409f..1436edf3 100644 --- a/web/scan_terminal_service.py +++ b/web/scan_terminal_service.py @@ -1230,6 +1230,16 @@ def _build_scan_terminal_payload_uncached( try: city_names = list(CITIES.keys()) + region_filter = str(filters.get("trading_region") or "").strip().lower() + if region_filter and region_filter not in ("all", ""): + from web.scan_terminal_filters import market_region_from_tz_offset as _tz_region + + def _city_in_region(city_name: str) -> bool: + city_meta = CITIES.get(city_name) or {} + tz = city_meta.get("tz", 0) + return _tz_region(tz)["key"] == region_filter + + city_names = [c for c in city_names if _city_in_region(c)] max_workers = max(1, min(SCAN_TERMINAL_MAX_WORKERS, len(city_names))) city_results: List[Dict[str, Any]] = [] failed_cities: List[str] = []