// TanStack Query client（服务端数据缓存）
// 依据：02-architecture-design.md §4.3 状态管理分层（Server Cache 层）
// 与 urql 互补：urql 管 GraphQL，TanStack Query 管 REST/复合查询

import { QueryClient } from "@tanstack/react-query";

export function createQueryClient(): QueryClient {
  return new QueryClient({
    defaultOptions: {
      queries: {
        // 重试策略：仅网络错误重试，401/403/404 不重试
        retry: (failureCount, error: unknown) => {
          if (error instanceof Error && error.message.includes("401")) {
            return false;
          }
          return failureCount < 2;
        },
        staleTime: 30 * 1000, // 30s 内不重新请求
        gcTime: 5 * 60 * 1000, // 5min 后回收
        refetchOnWindowFocus: false,
        refetchOnReconnect: "always",
      },
      mutations: {
        retry: false,
      },
    },
  });
}
