RED-10353: Reanalyse files in ERROR state if rule changed and not ErrorCode = RULES_EXECUTION_TIMEOUT

This commit is contained in:
Dominique Eifländer 2024-11-08 11:11:13 +01:00
parent 441cebdd1b
commit 55f8da712e
2 changed files with 19 additions and 2 deletions

View File

@ -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;

View File

@ -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<String, Map<VersionType, Long>> dossierTemplateVersionMap){
Map<VersionType, Long> 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<String, Map<VersionType, Long>> dossierTemplateVersionMap,