RED-9802: Disable Imported Redactions Flow in DM #656

Merged
maverick.studer merged 1 commits from RED-9802 into master 2024-08-09 09:21:54 +02:00
4 changed files with 44 additions and 16 deletions

View File

@ -7,7 +7,7 @@ plugins {
}
val redactionServiceVersion by rootProject.extra { "4.290.0" }
val pdftronRedactionServiceVersion by rootProject.extra { "4.48.0" }
val pdftronRedactionServiceVersion by rootProject.extra { "4.81.0" }
val redactionReportServiceVersion by rootProject.extra { "4.81.0" }
val searchServiceVersion by rootProject.extra { "2.90.0" }

View File

@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.iqser.red.service.pdftron.redaction.v1.api.model.highlights.Highlights;
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.pdftron.redaction.v1.api.model.highlights.TextHighlights;
import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService;
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService;
@ -47,20 +47,20 @@ public class HighlightsController implements HighlightsResource {
@SneakyThrows
@PreAuthorize("hasAuthority('" + GET_HIGHLIGHTS + "')")
public Highlights getHighlights(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId) {
public TextHighlights getHighlights(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId) {
accessControlService.checkDossierExistenceAndViewPermissionsToDossier(dossierId);
fileStatusService.getStatus(fileId);
if (storageService.objectExists(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.TEXT_HIGHLIGHTS))) {
try (InputStream stream = fileManagementStorageService.getObject(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.TEXT_HIGHLIGHTS))) {
Highlights highlights = objectMapper.readValue(stream, Highlights.class);
TextHighlights highlights = objectMapper.readValue(stream, TextHighlights.class);
stream.close();
return highlights;
}
}
return new Highlights();
return new TextHighlights();
}

View File

@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import com.iqser.red.service.pdftron.redaction.v1.api.model.highlights.Highlights;
import com.iqser.red.service.pdftron.redaction.v1.api.model.highlights.TextHighlights;
import com.iqser.red.service.persistence.service.v1.api.shared.model.AnnotationIds;
import io.swagger.v3.oas.annotations.Operation;
@ -36,7 +36,7 @@ public interface HighlightsResource {
@Operation(summary = "Gets available highlights for the file", description = "None")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found")})
@GetMapping(value = DOSSIERS_PATH + DOSSIER_ID_PATH_VARIABLE + FILES_PATH + FILE_ID_PATH_VARIABLE + HIGHLIGHTS_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
Highlights getHighlights(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId);
TextHighlights getHighlights(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId);
@ResponseStatus(value = HttpStatus.NO_CONTENT)

View File

@ -8,6 +8,7 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import com.iqser.red.service.pdftron.redaction.v1.api.model.ApplicationType;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
@ -17,6 +18,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.google.common.collect.Sets;
@ -58,6 +60,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus;
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
import com.knecon.fforesight.service.ocr.v1.api.model.DocumentRequest;
import jakarta.transaction.Transactional;
@ -65,6 +68,7 @@ import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.experimental.FieldDefaults;
import lombok.experimental.NonFinal;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@ -73,6 +77,10 @@ import lombok.extern.slf4j.Slf4j;
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
public class FileStatusService {
@NonFinal
@Value("${application.type}")
String applicationType;
FileStatusPersistenceService fileStatusPersistenceService;
DossierPersistenceService dossierPersistenceService;
DossierTemplatePersistenceService dossierTemplatePersistenceService;
@ -96,6 +104,7 @@ public class FileStatusService {
WebsocketService websocketService;
@Transactional
public List<FileModel> getAllRelevantStatusesForReanalysisScheduler() {
@ -126,6 +135,7 @@ public class FileStatusService {
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
}
@Transactional
public List<FileModel> getDossierTemplateStatus(String dossierTemplateId) {
@ -134,6 +144,7 @@ public class FileStatusService {
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
}
@Transactional
public List<FileModel> getAllFiles() {
@ -142,6 +153,7 @@ public class FileStatusService {
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
}
@Transactional
public List<FileModel> getAllErrorFiles() {
@ -203,7 +215,6 @@ public class FileStatusService {
var dossier = dossierPersistenceService.getAndValidateDossier(dossierId);
var fileEntity = fileStatusPersistenceService.getStatus(fileId);
if (!fileManagementStorageService.objectExists(dossierId, fileId, FileType.ORIGIN)) {
addToPreprocessingQueue(dossierId, fileId, fileEntity.getFilename());
sendReadOnlyAnalysisEvent(dossierId, fileId, fileEntity);
@ -286,8 +297,7 @@ public class FileStatusService {
.fileAttributes(convertAttributes(fileEntity.getFileAttributes(), dossier.getDossierTemplateId()))
.build();
if(fileEntity.isExcludedFromAutomaticAnalysis() && fileManagementStorageService.objectExists(dossierId, fileId, FileType.IMPORTED_REDACTIONS)){
if (fileEntity.isExcludedFromAutomaticAnalysis() && fileManagementStorageService.objectExists(dossierId, fileId, FileType.IMPORTED_REDACTIONS)) {
analyseRequest.setMessageType(MessageType.IMPORTED_REDACTIONS_ONLY);
}
@ -308,14 +318,24 @@ public class FileStatusService {
}
private void sendAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity){
if(fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR) || fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS) || fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED)){
private void sendAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity) {
if (fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED)) {
websocketService.sendAnalysisEvent(dossierId, fileId, AnalyseStatus.PROCESSING, fileEntity.getNumberOfAnalyses() + 1);
}
}
private void sendReadOnlyAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity){
if(fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR) || fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS) || fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.OCR_PROCESSING)){
private void sendReadOnlyAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity) {
if (fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.OCR_PROCESSING)) {
websocketService.sendAnalysisEvent(dossierId, fileId, AnalyseStatus.READ_ONLY_PROCESSING, fileEntity.getNumberOfAnalyses() + 1);
}
}
@ -342,7 +362,12 @@ public class FileStatusService {
@SneakyThrows
public void addToPreprocessingQueue(String dossierId, String fileId, String filename) {
var processUntouchedDocumentRequest = ProcessUntouchedDocumentRequest.builder().dossierId(dossierId).fileId(fileId).fileName(filename).build();
ApplicationType type = ApplicationType.REDACT_MANAGER;
if (applicationType.equals("DocuMine")) {
type = ApplicationType.DOCUMINE;
}
var processUntouchedDocumentRequest = ProcessUntouchedDocumentRequest.builder().applicationType(type).dossierId(dossierId).fileId(fileId).fileName(filename).build();
setStatusPreProcessingQueued(fileId);
@ -542,7 +567,8 @@ public class FileStatusService {
public void setStatusSuccessful(String dossierId, String fileId, AnalyzeResult analyzeResult) {
fileStatusPersistenceService.updateProcessingStatus(dossierId, fileId,
fileStatusPersistenceService.updateProcessingStatus(dossierId,
fileId,
analyzeResult.getNumberOfPages(),
analyzeResult.getDictionaryVersion(),
analyzeResult.getRulesVersion(),
@ -627,6 +653,7 @@ public class FileStatusService {
public void setStatusIndexingSuccessful(String fileId) {
fileStatusPersistenceService.setUpdateStatusIndexingSuccessful(fileId);
FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId);
websocketService.sendFileEvent(fileStatus.getDossierId(), fileId, FileEventType.UPDATE);
@ -648,6 +675,7 @@ public class FileStatusService {
public void updateFileModificationDate(String fileId, OffsetDateTime fileManipulationDate) {
fileStatusPersistenceService.updateFileModificationDate(fileId, fileManipulationDate);
FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId);
websocketService.sendFileEvent(fileStatus.getDossierId(), fileId, FileEventType.UPDATE);