From bfcad563d35a79fe10fd5d6fb7774c2c6d7d8f49 Mon Sep 17 00:00:00 2001 From: shy3130 <415333856@qq.com> Date: Mon, 31 Aug 2026 17:10:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20=E8=87=AA=E9=80=89=E5=88=86?= =?UTF-8?q?=E6=97=B6=E8=AF=B7=E6=B1=82=E5=B8=A6=20prefer=5Flocal,=20?= =?UTF-8?q?=E7=AD=96=E7=95=A5=E9=A1=B5=E8=A1=8C=E4=B8=BA=E4=B8=8D=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - klineMinuteBatch 加 preferLocal 参数, 响应类型补 full_minute_local - 仅 Watchlist 分时轮询传 true (全量分钟健康时股票不走批量补拉); Screener 不传, 严格限定本轮只辐射自选场景 --- frontend/src/lib/api.ts | 6 +++--- frontend/src/pages/Watchlist.tsx | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 86f603d..1d6194b 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -2052,10 +2052,10 @@ export const api = { method: 'POST', body: JSON.stringify({ symbols, days }), }), - klineMinuteBatch: (symbols: string[], date?: string) => - request<{ data: Record }>('/api/kline/minute-batch', { + klineMinuteBatch: (symbols: string[], date?: string, preferLocal?: boolean) => + request<{ data: Record; full_minute_local?: boolean }>('/api/kline/minute-batch', { method: 'POST', - body: JSON.stringify({ symbols, date }), + body: JSON.stringify({ symbols, date, ...(preferLocal ? { prefer_local: true } : {}) }), }), instrumentSearch: (q: string, limit = 20, assetTypes?: string) => request<{ results: { symbol: string; name: string; code: string; asset_type?: string }[] }>( diff --git a/frontend/src/pages/Watchlist.tsx b/frontend/src/pages/Watchlist.tsx index 39d3da2..57d5092 100644 --- a/frontend/src/pages/Watchlist.tsx +++ b/frontend/src/pages/Watchlist.tsx @@ -880,7 +880,9 @@ export function Watchlist() { const intradayRefreshInterval = prefsData?.minute_intraday_refresh_interval ?? 6 const minuteBatch = useQuery({ queryKey: QK.minuteBatch(minuteSymbolsKey), - queryFn: () => api.klineMinuteBatch(minuteSymbols), + // prefer_local: 全量分钟服务健康时股票缺口不再批量补拉 (本地分区由服务持续写入), + // 大自选(数百上千只)不再持续打批量分钟接口 + queryFn: () => api.klineMinuteBatch(minuteSymbols, undefined, true), enabled: intradayVisible && minuteSymbols.length > 0 && !groupCardsOpen, staleTime: 10_000, refetchInterval: (intradayRefreshEnabled && realtimeRunning) ? intradayRefreshInterval * 1000 : false,