dev add check count for all type
Test Workflow / test (push) Successful in 4s

This commit is contained in:
vladp
2026-03-16 14:12:34 +07:00
parent 168aa3812c
commit 68e102b6ce
4 changed files with 25 additions and 26 deletions
@@ -35,6 +35,7 @@ import ru.soune.nocopy.repository.AuthTokenRepository;
import ru.soune.nocopy.repository.FileEntityRepository; import ru.soune.nocopy.repository.FileEntityRepository;
import ru.soune.nocopy.repository.UserRepository; import ru.soune.nocopy.repository.UserRepository;
import ru.soune.nocopy.service.FileSimilarityService; import ru.soune.nocopy.service.FileSimilarityService;
import ru.soune.nocopy.service.file.CheckCounterService;
import ru.soune.nocopy.service.file.ProtectionsLimitService; import ru.soune.nocopy.service.file.ProtectionsLimitService;
import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.file.FileEntityService; import ru.soune.nocopy.service.file.FileEntityService;
@@ -74,6 +75,8 @@ public class ApiController {
private final UserRepository userRepository; private final UserRepository userRepository;
private final CheckCounterService checkCounterService;
@PostMapping("/v{version}/data") @PostMapping("/v{version}/data")
public ResponseEntity<?> handlePostRequest(@RequestBody BaseRequest request, public ResponseEntity<?> handlePostRequest(@RequestBody BaseRequest request,
@PathVariable("version") int version) { @PathVariable("version") int version) {
@@ -174,6 +177,7 @@ public class ApiController {
try { try {
FileEntity fileEntity = fileEntityRepository.findByFileId(fileId); FileEntity fileEntity = fileEntityRepository.findByFileId(fileId);
if (fileEntity == null) { if (fileEntity == null) {
return ResponseEntity.ok().body(new BaseResponse(0, MessageCode.INVALID_FIELD.getCode(), return ResponseEntity.ok().body(new BaseResponse(0, MessageCode.INVALID_FIELD.getCode(),
MessageCode.INVALID_FIELD.getDescription(), null)); MessageCode.INVALID_FIELD.getDescription(), null));
@@ -188,6 +192,7 @@ public class ApiController {
List<SimilarFileDTO> results = processNonImageFile(fileEntity, authToken); List<SimilarFileDTO> results = processNonImageFile(fileEntity, authToken);
log.info("results: {}", results); log.info("results: {}", results);
response = buildSuccessResponse(results, MessageCode.SIMILAR_FILES_FOUND); response = buildSuccessResponse(results, MessageCode.SIMILAR_FILES_FOUND);
checkCounterService.incrementCheckCount(fileEntity.getUserId(), fileEntity.getMimeType());
} }
return ResponseEntity.ok(response); return ResponseEntity.ok(response);
@@ -1,6 +1,5 @@
package ru.soune.nocopy.handler; package ru.soune.nocopy.handler;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -15,7 +14,6 @@ import ru.soune.nocopy.exception.NotValidFieldException;
import ru.soune.nocopy.repository.FileEntityRepository; import ru.soune.nocopy.repository.FileEntityRepository;
import ru.soune.nocopy.service.file.CheckCounterService; import ru.soune.nocopy.service.file.CheckCounterService;
import ru.soune.nocopy.service.search.SearchImageService; import ru.soune.nocopy.service.search.SearchImageService;
import ru.soune.nocopy.service.search.GoogleVisionSearchService;
import ru.soune.nocopy.service.tariff.TariffConstants; import ru.soune.nocopy.service.tariff.TariffConstants;
import ru.soune.nocopy.service.tariff.TariffInfoService; import ru.soune.nocopy.service.tariff.TariffInfoService;
@@ -32,8 +30,6 @@ public class ImageFoundRequestHandler implements RequestHandler {
private final SearchImageService searchImageService; private final SearchImageService searchImageService;
private final GoogleVisionSearchService googleVisionSearchService;
private final CheckCounterService checkCounterService; private final CheckCounterService checkCounterService;
private final FileEntityRepository fileEntityRepository; private final FileEntityRepository fileEntityRepository;
@@ -54,7 +50,7 @@ public class ImageFoundRequestHandler implements RequestHandler {
Map.of("fileId",fileId))); Map.of("fileId",fileId)));
}); });
String searchResponseYandex; // String searchResponseYandex;
String searchResponseGoogle; String searchResponseGoogle;
List<YandexSearchResponse.ImageResult> allYandexImages = new ArrayList<>(); List<YandexSearchResponse.ImageResult> allYandexImages = new ArrayList<>();
List<YandexSearchResponse.ImageResult> allGoogleImages = new ArrayList<>(); List<YandexSearchResponse.ImageResult> allGoogleImages = new ArrayList<>();
@@ -74,18 +70,18 @@ public class ImageFoundRequestHandler implements RequestHandler {
log.error("Google search failed for file {}", fileId, e); log.error("Google search failed for file {}", fileId, e);
} }
try { // try {
searchResponseYandex = searchImageService.searchReverseByPublicUrl(fileEntity, "yandex_reverse_image", // searchResponseYandex = searchImageService.searchReverseByPublicUrl(fileEntity, "yandex_reverse_image",
"visual_matches"); // "visual_matches");
log.info("searchResponseYandex OK"); // log.info("searchResponseYandex OK");
allYandexImages = searchImageService.getAllImagesWithoutPagination( // allYandexImages = searchImageService.getAllImagesWithoutPagination(
searchResponseYandex, "visual_matches"); // searchResponseYandex, "visual_matches");
} catch (TimeoutException e) { // } catch (TimeoutException e) {
log.warn("Yandex search timeout for file {}", fileId); // log.warn("Yandex search timeout for file {}", fileId);
hasTimeout = true; // hasTimeout = true;
} catch (IOException e) { // } catch (IOException e) {
log.error("Yandex search failed for file {}", fileId, e); // log.error("Yandex search failed for file {}", fileId, e);
} // }
allUniqueImages = searchImageService.removeDuplicateUrls(allYandexImages, allGoogleImages); allUniqueImages = searchImageService.removeDuplicateUrls(allYandexImages, allGoogleImages);
log.info("allUniqueImages OK: {} images", allUniqueImages.size()); log.info("allUniqueImages OK: {} images", allUniqueImages.size());
@@ -56,15 +56,15 @@ public class MonitoringSearchService {
try { try {
tariffInfoService.writeOffTokens(monitoring.getUserId(), tariffMonitoring.getTokens()); tariffInfoService.writeOffTokens(monitoring.getUserId(), tariffMonitoring.getTokens());
String yandexResponse = searchImageService.searchReverseByPublicUrl( // String yandexResponse = searchImageService.searchReverseByPublicUrl(
monitoring.getFile(), "yandex_reverse_image", "visual_matches"); // monitoring.getFile(), "yandex_reverse_image", "visual_matches");
List<YandexSearchResponse.ImageResult> yandexImages = // List<YandexSearchResponse.ImageResult> yandexImages =
searchImageService.getAllImagesWithoutPagination(yandexResponse, "visual_matches"); // searchImageService.getAllImagesWithoutPagination(yandexResponse, "visual_matches");
for (YandexSearchResponse.ImageResult imageResult : yandexImages) { // for (YandexSearchResponse.ImageResult imageResult : yandexImages) {
violationService.processViolation(imageResult, monitoring.getFile(), null); // violationService.processViolation(imageResult, monitoring.getFile(), null);
} // }
try { try {
String googleResponse = searchImageService.searchReverseByPublicUrl( String googleResponse = searchImageService.searchReverseByPublicUrl(
@@ -44,7 +44,6 @@ public class SearchImageService {
.followRedirects(true) .followRedirects(true)
.followSslRedirects(true) .followSslRedirects(true)
.retryOnConnectionFailure(true) .retryOnConnectionFailure(true)
// .connectionPool(new ConnectionPool(0, 1, TimeUnit.NANOSECONDS))
.build(); .build();
this.googleHttpClient = new OkHttpClient.Builder() this.googleHttpClient = new OkHttpClient.Builder()
@@ -56,7 +55,6 @@ public class SearchImageService {
.followRedirects(true) .followRedirects(true)
.followSslRedirects(true) .followSslRedirects(true)
.retryOnConnectionFailure(true) .retryOnConnectionFailure(true)
// .connectionPool(new ConnectionPool(0, 1, TimeUnit.NANOSECONDS))
.build(); .build();
this.objectMapper = new ObjectMapper(); this.objectMapper = new ObjectMapper();