Merge branch 'RED-8878' into 'release/1.363.x'

RED-8878: Added endpoint to recalcuated flags for all files

See merge request redactmanager/persistence-service!426
This commit is contained in:
Dominique Eifländer 2024-04-05 11:09:39 +02:00
commit 803f7d554b
3 changed files with 39 additions and 1 deletions

View File

@ -18,6 +18,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.annotations.Delete
public interface ReanalysisResource {
String REANALYZE_PATH = "/reanalyze";
String RECALCULATE_FLAGS = "/recalculate-flags";
String IMPORT_REDACTIONS_PATH = "/import-redactions";
String CONVERT_TEXT_HIGHLIGHTS_PATH = "/convert-texthighlights";
String OCR_REANALYZE_PATH = "/ocr/reanalyze";
@ -33,6 +34,8 @@ public interface ReanalysisResource {
@PostMapping(value = REANALYZE_PATH + DOSSIER_ID_PATH_PARAM)
void reanalyzeDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force);
@PostMapping(value = RECALCULATE_FLAGS)
void recalculateFlags();
@PostMapping(value = REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + BULK_REST_PATH)
void reanalyzeFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId,

View File

@ -18,6 +18,7 @@ import com.google.common.collect.Sets;
import com.iqser.red.service.pdftron.redaction.v1.api.model.ByteContentDocument;
import com.iqser.red.service.pdftron.redaction.v1.api.model.highlights.TextHighlightConversionOperation;
import com.iqser.red.service.pdftron.redaction.v1.api.model.highlights.TextHighlightConversionRequest;
import com.iqser.red.service.peristence.v1.server.service.AnalysisFlagsCalculationService;
import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService;
import com.iqser.red.service.peristence.v1.server.service.FileStatusService;
import com.iqser.red.service.peristence.v1.server.service.IndexingService;
@ -46,7 +47,7 @@ public class ReanalysisController implements ReanalysisResource {
private final IndexingService indexingService;
private final PDFTronRedactionClient pDFTronRedactionClient;
private final FileManagementStorageService fileManagementStorageService;
private final ObjectMapper objectMapper;
private final AnalysisFlagsCalculationService analysisFlagsCalculationService;
@Override
@ -56,6 +57,11 @@ public class ReanalysisController implements ReanalysisResource {
reanalyseFiles(dossierId, force, relevantFiles);
}
@Override
public void recalculateFlags(){
analysisFlagsCalculationService.calculateFlagsForAllFiles();
}
@Override
public void reanalyzeFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId,

View File

@ -1,13 +1,18 @@
package com.iqser.red.service.peristence.v1.server.service;
import java.time.OffsetDateTime;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ViewedPageEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
@ -25,10 +30,34 @@ import lombok.extern.slf4j.Slf4j;
@RequiredArgsConstructor
public class AnalysisFlagsCalculationService {
private final DossierPersistenceService dossierPersistenceService;
private final FileStatusPersistenceService fileStatusPersistenceService;
private final RedactionLogService redactionLogService;
private final ViewedPagesPersistenceService viewedPagesPersistenceService;
@Async
public void calculateFlagsForAllFiles(){
Set<FileEntity> files = new HashSet<>();
dossierPersistenceService.findAllDossiers()
.stream().filter(dossier -> dossier.getHardDeletedTime() == null && dossier.getSoftDeletedTime() == null)
.forEach(dossier -> {
files.addAll(fileStatusPersistenceService.getActiveFiles(dossier.getId()));
});
log.info("Starting to recalculated flags for {} files", files.size());
int i = 1;
for(FileEntity file: files){
calculateFlags(file.getDossierId(), file.getId());
log.info("Successfully recalculated flags for {}/{} files", i, files.size());
}
log.info("Flag recalculation for all files finished.");
}
@Timed("redactmanager_calculateFlags")
public void calculateFlags(String dossierId, String fileId) {