import type { SwotData } from '@/schema/pox'; import { getPox } from '@/services/gradio-with-dummy'; import { useGlobalStore } from '@/store/global'; import { useQuery } from '@tanstack/react-query'; export function usePox(commonDict: unknown, scoreDict: unknown, scoreTotal: unknown, userEmail: string) { const { dummyMode, userIdentifier } = useGlobalStore(); return useQuery({ queryKey: ['pox', commonDict, scoreDict, scoreTotal, userEmail, dummyMode], queryFn: async () => { const userData = { commonDict: commonDict as object, scoreDict: scoreDict as object, score_total: scoreTotal as object, }; // Gradio APIを直接呼び出し const result = await getPox(userData, userEmail || null, userIdentifier); // 結果の最初の要素(基本SWOT)を返す if (Array.isArray(result) && result.length > 0) { return result[0] as SwotData; } throw new Error('Invalid POX response format'); }, enabled: (dummyMode || userEmail !== '') && (dummyMode || (commonDict !== undefined && commonDict !== null && scoreDict !== undefined && scoreDict !== null && scoreTotal !== undefined && scoreTotal !== null)), staleTime: 1000 * 60 * 5, // 5分間はキャッシュを使用 }); }