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