added front - react+ts

ocr improved
This commit is contained in:
2025-12-11 05:20:53 +03:00
parent 73b1477368
commit 02681340c5
39 changed files with 6286 additions and 267 deletions

View File

@@ -0,0 +1,48 @@
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { api } from '../services/api';
import type { MatchRequest, ProductMatch, CatalogItem, UnmatchedItem } from '../services/types';
import { message } from 'antd';
export const useOcr = () => {
const queryClient = useQueryClient();
const catalogQuery = useQuery<CatalogItem[], Error>({
queryKey: ['catalog'],
queryFn: api.getCatalogItems,
staleTime: 1000 * 60 * 5,
});
const matchesQuery = useQuery<ProductMatch[], Error>({
queryKey: ['matches'],
queryFn: api.getMatches,
});
const unmatchedQuery = useQuery<UnmatchedItem[], Error>({
queryKey: ['unmatched'],
queryFn: api.getUnmatched,
staleTime: 0,
});
const createMatchMutation = useMutation({
// Теперь типы совпадают, any не нужен
mutationFn: (newMatch: MatchRequest) => api.createMatch(newMatch),
onSuccess: () => {
message.success('Связь сохранена');
queryClient.invalidateQueries({ queryKey: ['matches'] });
queryClient.invalidateQueries({ queryKey: ['unmatched'] });
},
onError: () => {
message.error('Ошибка при сохранении');
},
});
return {
catalog: catalogQuery.data || [],
matches: matchesQuery.data || [],
unmatched: unmatchedQuery.data || [],
isLoading: catalogQuery.isPending || matchesQuery.isPending,
isError: catalogQuery.isError || matchesQuery.isError,
createMatch: createMatchMutation.mutate,
isCreating: createMatchMutation.isPending,
};
};

View File

@@ -0,0 +1,12 @@
import { useQuery } from '@tanstack/react-query';
import { api } from '../services/api';
import type { Recommendation } from '../services/types';
export const useRecommendations = () => {
return useQuery<Recommendation[], Error>({
queryKey: ['recommendations'],
queryFn: api.getRecommendations,
// Обновлять данные каждые 30 секунд, если вкладка активна
refetchInterval: 30000,
});
};