Add monitoring with another system
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-06-11 18:56:47 +07:00
parent c7fbd371c3
commit acceaa55fc
@@ -6,12 +6,10 @@ import jakarta.mail.MessagingException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.MessageSource;
import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import ru.soune.nocopy.configuration.search.SearchProperties; import ru.soune.nocopy.configuration.search.SearchProperties;
import ru.soune.nocopy.dto.file.YandexSearchResponse;
import ru.soune.nocopy.dto.monitoring.MonitoringDTO; import ru.soune.nocopy.dto.monitoring.MonitoringDTO;
import ru.soune.nocopy.dto.tarriff.TariffDTO; import ru.soune.nocopy.dto.tarriff.TariffDTO;
import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity; import ru.soune.nocopy.entity.monitoring.FileMonitoringEntity;
@@ -26,25 +24,18 @@ import ru.soune.nocopy.repository.FileMonitoringRepository;
import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.mail.EmailService; import ru.soune.nocopy.service.mail.EmailService;
import ru.soune.nocopy.service.notification.NotificationService; import ru.soune.nocopy.service.notification.NotificationService;
import ru.soune.nocopy.service.search.SearchImageService;
import ru.soune.nocopy.service.tariff.TariffInfoService; import ru.soune.nocopy.service.tariff.TariffInfoService;
import ru.soune.nocopy.service.tariff.TariffService; import ru.soune.nocopy.service.tariff.TariffService;
import ru.soune.nocopy.service.violation.ViolationService;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.TimeoutException;
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class MonitoringSearchService { public class MonitoringSearchService {
private final SearchImageService searchImageService;
private final FileMonitoringRepository monitoringRepository; private final FileMonitoringRepository monitoringRepository;
private final TariffInfoService tariffInfoService; private final TariffInfoService tariffInfoService;
@@ -55,8 +46,6 @@ public class MonitoringSearchService {
private final UserRepository userRepository; private final UserRepository userRepository;
private final ViolationService violationService;
private final SearchProperties searchProperties; private final SearchProperties searchProperties;
private final NotificationService notificationService; private final NotificationService notificationService;
@@ -68,22 +57,6 @@ public class MonitoringSearchService {
@Value("${server.baseurl}") @Value("${server.baseurl}")
private String baseUrl; private String baseUrl;
// MonitoringDTO monitoringGoogleDTO = MonitoringDTO.builder().baseUrl(baseUrl).
// fileId(monitoring.getFile().getId())
// .engine("google_lens")
// .searchType("exact_matches")
// .build();
//
// kafkaTemplate.send("monitoring-commands", objectMapper.writeValueAsString(monitoringGoogleDTO));
//
// MonitoringDTO monitoringYandexDTO = MonitoringDTO.builder().baseUrl(baseUrl).
// fileId(monitoring.getFile().getId())
// .engine("yandex_reverse_image")
// .searchType("visual_matches")
// .build();
//
// kafkaTemplate.send("monitoring-commands", objectMapper.writeValueAsString(monitoringYandexDTO));
@Transactional(noRollbackFor = TariffNotFoundException.class) @Transactional(noRollbackFor = TariffNotFoundException.class)
public void processFileSearch(FileMonitoringEntity monitoring) throws MessagingException, IOException { public void processFileSearch(FileMonitoringEntity monitoring) throws MessagingException, IOException {
monitoring.setLastRun(LocalDateTime.now()); monitoring.setLastRun(LocalDateTime.now());
@@ -105,18 +78,8 @@ public class MonitoringSearchService {
log.info("Monitoring search settings: useYandex={}, useGoogle={}", useYandex, useGoogle); log.info("Monitoring search settings: useYandex={}, useGoogle={}", useYandex, useGoogle);
// List<YandexSearchResponse.ImageResult> allResults = new ArrayList<>();
if (useYandex) { if (useYandex) {
try { try {
// String yandexResponse = searchImageService.searchReverseByPublicUrl(
// monitoring.getFile(), "yandex_reverse_image", "visual_matches");
//
// List<YandexSearchResponse.ImageResult> yandexImages =
// searchImageService.getAllImagesWithoutPagination(yandexResponse, "visual_matches");
//
// allResults.addAll(yandexImages);
// log.info("Yandex search found {} results", yandexImages.size());
MonitoringDTO monitoringYandexDTO = MonitoringDTO.builder().baseUrl(baseUrl). MonitoringDTO monitoringYandexDTO = MonitoringDTO.builder().baseUrl(baseUrl).
fileId(monitoring.getFile().getId()) fileId(monitoring.getFile().getId())
.engine("yandex_reverse_image") .engine("yandex_reverse_image")
@@ -145,15 +108,6 @@ public class MonitoringSearchService {
if (useGoogle) { if (useGoogle) {
try { try {
// String googleResponse = searchImageService.searchReverseByPublicUrl(
// monitoring.getFile(), "google_lens", "exact_matches");
//
// List<YandexSearchResponse.ImageResult> googleImages =
// searchImageService.getAllImagesWithoutPagination(googleResponse,
// "exact_matches");
//
// allResults.addAll(googleImages);
// log.info("Google search found {} results", googleImages.size());
MonitoringDTO monitoringGoogleDTO = MonitoringDTO.builder().baseUrl(baseUrl). MonitoringDTO monitoringGoogleDTO = MonitoringDTO.builder().baseUrl(baseUrl).
fileId(monitoring.getFile().getId()) fileId(monitoring.getFile().getId())
.engine("google_lens") .engine("google_lens")
@@ -182,26 +136,9 @@ public class MonitoringSearchService {
log.info("Google search is disabled by settings"); log.info("Google search is disabled by settings");
} }
// List<YandexSearchResponse.ImageResult> uniqueResults = allResults; monitoring.setLastRunStatus("SUCCESS");
// if (useYandex && useGoogle) {
// uniqueResults = searchImageService.removeDuplicateUrls(
// useYandex ? allResults : new ArrayList<>(),
// useGoogle ? allResults : new ArrayList<>()
// );
// log.info("After deduplication: {} unique results", uniqueResults.size());
// }
// for (YandexSearchResponse.ImageResult imageResult : uniqueResults) {
// violationService.processViolation(imageResult, monitoring.getFile(), null);
// }
// monitoring.setLastRunStatus("SUCCESS");
updateNextRun(monitoring); updateNextRun(monitoring);
monitoringRepository.save(monitoring); monitoringRepository.save(monitoring);
// if (uniqueResults.isEmpty()) {
// log.info("No results found for monitoring file {}", monitoring.getFile().getId());
// }
} catch (TariffNotFoundException e) { } catch (TariffNotFoundException e) {
TariffInfo activeTariffInfo = user.getActiveTariffInfo(); TariffInfo activeTariffInfo = user.getActiveTariffInfo();
int currentTokens = activeTariffInfo.getTokens() + activeTariffInfo.getBoughtTokens(); int currentTokens = activeTariffInfo.getTokens() + activeTariffInfo.getBoughtTokens();