dev email send when tokens not found
Test Workflow / test (push) Waiting to run

This commit is contained in:
vladp
2026-03-31 13:06:27 +07:00
parent 51170891ce
commit 3d2c7ecb05
4 changed files with 31 additions and 5 deletions
@@ -12,14 +12,22 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import ru.soune.nocopy.entity.file.FileEntity;
import ru.soune.nocopy.entity.file.ProtectionStatus;
import ru.soune.nocopy.repository.FileEntityRepository;
import ru.soune.nocopy.util.FileUtil;
import java.util.Collections;
import java.util.List;
@Configuration
@EnableAutoConfiguration
@AllArgsConstructor
public class ApplicationConfig {
private final FileEntityRepository fileEntityRepository;
private final FileUtil fileUtil;
@Bean
PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
@@ -36,8 +44,11 @@ public class ApplicationConfig {
AudioFilePathProvider audioFilePathProvider,
DocumentLocalSearch documentLocalSearch) {
List<FileProtector.FileInfo> initialFiles = loadProcessingFile();
//TODO инициализация файлов при создании
return new com.vrt.NoCopyFileService(
Collections.emptyList(),
initialFiles,
fileProvider,
processingListener,
imageUniqueCheck,
@@ -47,5 +58,13 @@ public class ApplicationConfig {
documentLocalSearch
);
}
private List<FileProtector.FileInfo> loadProcessingFile() {
List<FileEntity> byProtectionStatus =
fileEntityRepository.findByProtectionStatus(ProtectionStatus.PROCESSING);
return byProtectionStatus.stream().map(fileEntity ->
fileUtil.createFileInfo(fileEntity, null)).toList();
}
}
@@ -87,6 +87,9 @@ public class FileEntity {
@Column(name = "medium_path")
private String mediumPath;
@Column
private String newExtension;
@OneToOne(mappedBy = "file", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnore
private ImageHashEntity imageHash;
@@ -31,7 +31,7 @@ public interface ImageSimilarityRepository
JOIN file_entities f
ON f.id = h.file_id
WHERE ref.file_id = :fileId
AND f.status = 'ACTIVE'
AND f.status IN ('ACTIVE', 'MODERATION')
""",
nativeQuery = true)
List<SimilarImageProjection> findCandidates(
@@ -178,7 +178,8 @@ public class FileSimilarityService {
imageHashEntity.getHash64Hi(),
imageHashEntity.getHash64Lo(), userIds))
.filter(dto -> levels.contains(dto.getSimilarityLevel()))
.filter(dto -> dto.getFileStatus().equals(FileStatus.ACTIVE.name()))
.filter(dto -> !dto.getOwner() &&
dto.getFileStatus().equals(FileStatus.MODERATION.name()))
.sorted(Comparator.comparingInt(SimilarFileDTO::getHammingDistance))
.collect(Collectors.toList());
@@ -227,6 +228,9 @@ public class FileSimilarityService {
level = "DIFFERENT";
}
boolean owner = userIds.contains(similarImageProjection.getUserId());
return SimilarFileDTO.builder()
.fileId(similarImageProjection.getId())
.ownerId(similarImageProjection.getUserId())
@@ -239,7 +243,7 @@ public class FileSimilarityService {
.supportId(similarImageProjection.getSupportId())
.uploadDate(similarImageProjection.getUploadDate())
.status(similarImageProjection.getProtectionStatus())
.owner(userIds.contains(similarImageProjection.getUserId()))
.owner(owner)
// .url(baseUrl + "/api/files/protected/" + similarImageProjection.getId())
.url(baseUrl + "/api/files/protected/" + similarImageProjection.getId() + "/thumbnail")
.fileStatus(similarImageProjection.getFileStatus())