From 55f8da712e8a79710f20862838967450e513cee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Fri, 8 Nov 2024 11:11:13 +0100 Subject: [PATCH] RED-10353: Reanalyse files in ERROR state if rule changed and not ErrorCode = RULES_EXECUTION_TIMEOUT --- .../ManualChangesReorderingMigration23.java | 2 +- .../ReanalysisRequiredStatusService.java | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualChangesReorderingMigration23.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualChangesReorderingMigration23.java index 2f7b90b76..6fd3cfa22 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualChangesReorderingMigration23.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/migration/migrations/ManualChangesReorderingMigration23.java @@ -23,7 +23,7 @@ import lombok.extern.slf4j.Slf4j; public class ManualChangesReorderingMigration23 extends Migration { private static final String NAME = "Migration for reordering mixed up manual changes"; - private static final long VERSION = 28; + private static final long VERSION = 23; private final EntityLogEntryDocumentRepository entityLogEntryDocumentRepository; private final AddRedactionPersistenceService addRedactionPersistenceService; private final FileStatusService fileStatusService; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisRequiredStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisRequiredStatusService.java index ed588308f..ade6b8ed1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisRequiredStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisRequiredStatusService.java @@ -23,6 +23,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentMappingMetadata; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ErrorCode; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; @@ -97,7 +98,7 @@ public class ReanalysisRequiredStatusService { } if (ProcessingStatus.ERROR.equals(fileStatus.getProcessingStatus()) && !ignoreProcessingStates) { - return new AnalysisRequiredResult(false, false); + return computeAnalysisRequiredForErrorState(dossier, fileStatus, dossierTemplateVersionMap); } if (ProcessingStatus.PROCESSED.equals(fileStatus.getProcessingStatus()) @@ -125,6 +126,22 @@ public class ReanalysisRequiredStatusService { } + private AnalysisRequiredResult computeAnalysisRequiredForErrorState(DossierEntity dossier,FileModel fileStatus, Map> dossierTemplateVersionMap){ + Map dossierTemplateVersions = dossierTemplateVersionMap.computeIfAbsent(dossier.getDossierTemplateId(), + k -> buildVersionData(dossier.getDossierTemplateId())); + var rulesVersionMatches = fileStatus.getRulesVersion() == dossierTemplateVersions.getOrDefault(RULES, -1L); + var componentRulesVersionMatches = fileStatus.getComponentRulesVersion() == dossierTemplateVersions.getOrDefault(COMPONENT_RULES, -1L); + + var isRuleExecutionTimeout = fileStatus.getFileErrorInfo() != null && fileStatus.getFileErrorInfo().getErrorCode() != null && fileStatus.getFileErrorInfo().getErrorCode().equals( + ErrorCode.RULES_EXECUTION_TIMEOUT); + + var fullAnalysisRequired = (!rulesVersionMatches || !componentRulesVersionMatches) && !isRuleExecutionTimeout; + + return new AnalysisRequiredResult(false, fullAnalysisRequired); + } + + + private AnalysisRequiredResult requiresReanalysisBasedOnVersionDifference(FileModel fileStatus, DossierEntity dossier, Map> dossierTemplateVersionMap,