From e4cf3bfa602014cd8a2f2162199557880600e93f Mon Sep 17 00:00:00 2001 From: deiflaender Date: Mon, 13 Dec 2021 12:24:18 +0100 Subject: [PATCH] RED-2439: Enabled to find surrounding text for manual redactions via queue --- .../redaction/v1/model/AnalyzeRequest.java | 2 + .../redaction/v1/model/AnalyzeResult.java | 6 +++ .../redaction/v1/model/MessageType.java | 7 ++++ .../queue/RedactionMessageReceiver.java | 41 +++++++++++++------ 4 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/MessageType.java diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeRequest.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeRequest.java index f0827d98..e53b817e 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeRequest.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeRequest.java @@ -19,6 +19,8 @@ import java.util.Set; @AllArgsConstructor public class AnalyzeRequest { + private MessageType messageType; + private String dossierId; private String fileId; private String dossierTemplateId; diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeResult.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeResult.java index 4fc3fada..ec2aea13 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeResult.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeResult.java @@ -1,5 +1,7 @@ package com.iqser.red.service.redaction.v1.model; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualRedactions; + import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -11,6 +13,8 @@ import lombok.NoArgsConstructor; @AllArgsConstructor public class AnalyzeResult { + private MessageType messageType; + private String dossierId; private String fileId; private long duration; @@ -25,6 +29,8 @@ public class AnalyzeResult { private int analysisVersion; + private ManualRedactions manualRedactions; + } diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/MessageType.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/MessageType.java new file mode 100644 index 00000000..55e9666e --- /dev/null +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/MessageType.java @@ -0,0 +1,7 @@ +package com.iqser.red.service.redaction.v1.model; + +public enum MessageType { + + FULL_ANALYSE, REANALYSE, SURROUNDING_TEXT + +} diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java index 60a40cbc..b662df91 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/queue/RedactionMessageReceiver.java @@ -7,6 +7,7 @@ import com.iqser.red.service.redaction.v1.model.AnalyzeResult; import com.iqser.red.service.redaction.v1.model.StructureAnalyzeRequest; import com.iqser.red.service.redaction.v1.server.client.FileStatusProcessingUpdateClient; import com.iqser.red.service.redaction.v1.server.redaction.service.AnalyzeService; +import com.iqser.red.service.redaction.v1.server.redaction.service.ManualRedactionSurroundingTextService; import com.iqser.red.service.redaction.v1.server.redaction.service.NerAnalyserService; import lombok.RequiredArgsConstructor; @@ -28,6 +29,7 @@ public class RedactionMessageReceiver { private final AnalyzeService analyzeService; private final FileStatusProcessingUpdateClient fileStatusProcessingUpdateClient; private final NerAnalyserService nerAnalyserService; + private final ManualRedactionSurroundingTextService manualRedactionSurroundingTextService; @RabbitHandler @@ -36,22 +38,37 @@ public class RedactionMessageReceiver { var analyzeRequest = objectMapper.readValue(in, AnalyzeRequest.class); log.info("Processing analyze request for file: {}", analyzeRequest.getFileId()); - AnalyzeResult result; - if (analyzeRequest.isReanalyseOnlyIfPossible()) { - result = analyzeService.reanalyze(analyzeRequest); - log.info("Successfully reanalyzed dossier {} file {} took: {}", analyzeRequest.getDossierId(), analyzeRequest.getFileId(), result.getDuration()); - } else { - // TODO Seperate stucture analysis by other queue - analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(analyzeRequest.getDossierId(), analyzeRequest.getFileId())); + AnalyzeResult result = null; - // TODO NerEntities should be computed and stored in entity-recognition-service, should be triggered by a seperate queue after structure analysis - nerAnalyserService.computeNerEntities(analyzeRequest.getDossierId(), analyzeRequest.getFileId()); + switch (analyzeRequest.getMessageType()){ - result = analyzeService.analyze(analyzeRequest); - log.info("Successfully analyzed dossier {} file {} took: {}", analyzeRequest.getDossierId(), analyzeRequest.getFileId(), result - .getDuration()); + case REANALYSE: + result = analyzeService.reanalyze(analyzeRequest); + log.info("Successfully reanalyzed dossier {} file {} took: {}", analyzeRequest.getDossierId(), analyzeRequest.getFileId(), result.getDuration()); + break; + case FULL_ANALYSE: + // TODO Seperate stucture analysis by other queue + analyzeService.analyzeDocumentStructure(new StructureAnalyzeRequest(analyzeRequest.getDossierId(), analyzeRequest.getFileId())); + + // TODO NerEntities should be computed and stored in entity-recognition-service, should be triggered by a seperate queue after structure analysis + nerAnalyserService.computeNerEntities(analyzeRequest.getDossierId(), analyzeRequest.getFileId()); + + result = analyzeService.analyze(analyzeRequest); + log.info("Successfully analyzed dossier {} file {} took: {}", analyzeRequest.getDossierId(), analyzeRequest.getFileId(), result + .getDuration()); + + break; + case SURROUNDING_TEXT: + var manualRedactions = manualRedactionSurroundingTextService.addSurroundingText(analyzeRequest.getDossierId(), analyzeRequest.getFileId(), analyzeRequest.getManualRedactions()); + result = AnalyzeResult.builder() + .dossierId(analyzeRequest.getDossierId()) + .fileId(analyzeRequest.getFileId()) + .manualRedactions(manualRedactions) + .build(); + break; } + fileStatusProcessingUpdateClient.analysisSuccessful(analyzeRequest.getDossierId(), analyzeRequest.getFileId(), result); }