Spaces:
Sleeping
Sleeping
| import { createQueryOptions } from '@/api-client/query-config'; | |
| import { rpcClient } from '@/api-client/utils/rpc-client'; | |
| import type { VisScoreRequest, VisScoreResponse } from '@/schema/gradio-proxy/vis-score'; | |
| import type { FetchQueryOptions } from '@tanstack/react-query'; | |
| import { useQueryClient } from '@tanstack/react-query'; | |
| import { useCallback } from 'react'; | |
| /** | |
| * vis_score APIを呼び出すカスタムフック | |
| * @returns キャッシュ対応のAPI呼び出し関数(タイムアウト20分、キャッシュ24時間) | |
| */ | |
| export function useVisScore() { | |
| const queryClient = useQueryClient(); | |
| return useCallback( | |
| async (request: VisScoreRequest): Promise<VisScoreResponse> => { | |
| console.log('[useVisScore] API呼び出し開始:', { | |
| hasCommonDict: !!request.commonDict, | |
| hasScoreDict: !!request.scoreDict, | |
| dummyMode: request.dummyMode, | |
| }); | |
| return queryClient.fetchQuery( | |
| createQueryOptions<VisScoreResponse>({ | |
| queryKey: ['vis-score', request], | |
| queryFn: async (): Promise<VisScoreResponse> => { | |
| try { | |
| const response = await rpcClient['gradio-proxy']['vis-score'].$post({ | |
| json: request, | |
| }); | |
| if (!response.ok) { | |
| console.error('[useVisScore] Response status:', response.status); | |
| const errorData = (await response.json()) as { message?: string; status?: string }; | |
| console.error('[useVisScore] API エラー:', errorData); | |
| throw new Error(errorData.message || 'vis_score APIの呼び出しに失敗しました'); | |
| } | |
| const data = await response.json(); | |
| console.log('[useVisScore] API呼び出し成功'); | |
| return data as VisScoreResponse; | |
| } catch (error) { | |
| console.error('[useVisScore] API呼び出しエラー:', error); | |
| throw error; | |
| } | |
| }, | |
| }) as FetchQueryOptions<VisScoreResponse>, | |
| ); | |
| }, | |
| [queryClient], | |
| ); | |
| } | |