Files
tick-stock-panel/frontend/package.json
T
shy3130 af63614610 perf(front,back): 查询缓存持久化 + staleTime 分层 — 重开应用秒出上次数据, 不再全量重拉
- 新增 lib/queryPersist.ts: PersistQueryClientProvider 接入 localStorage 持久化,
  白名单 13 个慢变查询族 (设置/偏好/能力矩阵/自选清单与分组/策略池/regime 全家/自定义信号),
  键首段精确匹配不误伤 watchlist-enriched 等实时行情族; 24h maxAge + 版本 buster;
  快变数据 (实时价/分钟K/告警) 刻意不持久化, 避免陈旧价格误导
- staleTime 分层: settings/preferences 30s, capability-matrix 5min, 自选清单 30s,
  策略池 60s, 自定义信号 60s — 切页不再对慢变数据反复请求
- regime_builder.load_regime_history 加 (path,mtime,size) 签名缓存: Regime 页
  三个端点原先每请求各自全量重读同一 parquet, 现共享一份, 写入后 mtime 失效

验证: pnpm build 通过; 浏览器实测持久化恢复路径 (注入缓存刷新后守卫直接放行,
不再整屏 loading); regime 相关 pytest 22 passed; ruff 零新增; git diff --check 干净
2026-10-05 15:16:16 +08:00

50 lines
1.4 KiB
JSON

{
"name": "tickflow-stock-panel-frontend",
"private": true,
"version": "0.3.2",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"preview": "vite preview",
"lint": "eslint .",
"test:indices": "vitest run src/pages/Indices.test.tsx"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@fontsource/inter": "^5.3.0",
"@fontsource/jetbrains-mono": "^5.3.0",
"@tanstack/query-sync-storage-persister": "^5.104.1",
"@tanstack/react-query": "^5.55.0",
"@tanstack/react-query-persist-client": "^5.104.1",
"@tanstack/react-virtual": "^3.13.12",
"clsx": "^2.1.1",
"echarts": "^5.5.0",
"framer-motion": "^11.5.0",
"lightweight-charts": "^4.2.0",
"lucide-react": "^0.439.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-grid-layout": "^2.2.4",
"react-router-dom": "^6.26.0",
"tailwind-merge": "^2.5.2"
},
"devDependencies": {
"@types/node": "^25.9.3",
"@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"@vitejs/plugin-react": "^4.3.1",
"autoprefixer": "^10.4.20",
"jsdom": "^26.1.0",
"postcss": "^8.4.45",
"tailwindcss": "^3.4.10",
"tailwindcss-animate": "^1.0.7",
"typescript": "^5.5.4",
"vite": "^5.4.3",
"vitest": "^3.2.4"
},
"packageManager": "pnpm@9.10.0"
}