From a358e07b01fa1aaf168953cc582c22892e8de36d Mon Sep 17 00:00:00 2001 From: shy3130 <415333856@qq.com> Date: Wed, 7 Oct 2026 22:24:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(paper):=20=E6=A8=A1=E6=8B=9F=E7=9B=98?= =?UTF-8?q?=E6=8C=81=E4=BB=93=E8=A1=A8=E6=98=BE=E7=A4=BA=E8=82=A1=E7=A5=A8?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=20(#454)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 代码列内联灰色小字显示名称(股票/ETF/指数), 批量 instrumentNames 查询 (与监控/持仓提醒页同模式, 5min staleTime, 空持仓不发请求), 查不到名称优雅降级不显示。 --- frontend/src/pages/Paper.tsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/Paper.tsx b/frontend/src/pages/Paper.tsx index 7a2ab78..992a2cd 100644 --- a/frontend/src/pages/Paper.tsx +++ b/frontend/src/pages/Paper.tsx @@ -1617,6 +1617,16 @@ function AccountPanel({ acc, name }: { acc: string; name?: string }) { const navQ = useQuery({ queryKey: QK.paperNav(acc), queryFn: () => api.paperNav(acc) }) const statsQ = useQuery({ queryKey: QK.paperStats(acc), queryFn: () => api.paperStats(acc) }) + // 持仓代码→名称 (#454): 就地显示名称, 不用切页查询。股票/ETF/指数都覆盖。 + const holdingSymbols = (overviewQ.data?.holdings ?? []).map(h => h.symbol) + const namesQ = useQuery({ + queryKey: ['instrument-names', holdingSymbols.join(',')], + queryFn: () => api.instrumentNames(holdingSymbols), + enabled: holdingSymbols.length > 0, + staleTime: 300000, + }) + const symbolNames = namesQ.data?.names ?? {} + // 'paper' 前缀兜底失效: 覆盖全部账户的全部查询 (订单变动可能影响净值/统计) const invalidateAll = () => qc.invalidateQueries({ queryKey: QK.paperAll }) @@ -1756,7 +1766,12 @@ function AccountPanel({ acc, name }: { acc: string; name?: string }) {
{holdings.map(h => (