Archived
`app/fallback-poll.ts`:任务界面开着时每 10 秒把 `desk` 下**在用的**查询(清单 / 这一单 / 角标, `type:'active'`)各重取一次,推送漏了画面最多旧 10 秒。**不取消在途**(`cancelRefetch:false` —— 慢接口不被兜底打成永远取不回)、页签藏起不打、回前台先补一趟;壳层 `useEffect` 起停, 切模块 / 卸载即 `stop()`(定时器与可见性监听一起摘)。`doc` 可注入,4 测钉死 (周期 / 停止 / 可见性 / 在途去重,第四条做过变异验证)。 `queryKeys.desk` 新增作整支前缀,订阅层的裸 `['desk']` 改用它。 编码规范 §9.2「组件禁止自行轮询」照旧,补一句:兜底只此一处、由壳层起停。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0167qWjeyBwvfdGovd7FWbCu
20 lines
655 B
TypeScript
20 lines
655 B
TypeScript
/**
|
|
* 服务端状态 —— TanStack Query(编码规范 §1 / §9.2)。
|
|
* 「SSE 事件到达 → 按信封目标失效对应缓存,由订阅层统一做;组件禁止自行轮询或手写缓存。」
|
|
*/
|
|
import { QueryClient } from '@tanstack/react-query';
|
|
import { queryKeys } from '@web-shared/query-keys.ts';
|
|
|
|
export { queryKeys };
|
|
|
|
export const queryClient = new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
// 缓存失效由 SSE 订阅层驱动,不靠组件轮询;推送漏了有壳层的 10 秒兜底(fallback-poll.ts),组件不另起定时器
|
|
refetchOnWindowFocus: false,
|
|
retry: 1,
|
|
staleTime: 5_000,
|
|
},
|
|
},
|
|
});
|