diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/analyze/AnalyzeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/analyze/AnalyzeService.java index 9fa33bbd..2b68f925 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/analyze/AnalyzeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/analyze/AnalyzeService.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import org.kie.api.runtime.KieContainer; @@ -52,15 +53,16 @@ import com.iqser.red.service.redaction.v1.server.settings.RedactionServiceSettin import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; import io.micrometer.core.annotation.Timed; +import io.micrometer.core.instrument.FunctionTimer; +import io.micrometer.core.instrument.MeterRegistry; import lombok.AccessLevel; -import lombok.RequiredArgsConstructor; +import lombok.Getter; import lombok.SneakyThrows; import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; @Slf4j @Service -@RequiredArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public class AnalyzeService { @@ -78,6 +80,48 @@ public class AnalyzeService { ImageService imageService; ImportedRedactionService importedRedactionService; SectionFinder sectionFinder; + PagewiseCounter analyzeCounter = new PagewiseCounter(); + + + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") + public AnalyzeService(DictionaryService dictionaryService, + DroolsExecutionService droolsExecutionService, + EntityRedactionService entityRedactionService, + RedactionLogCreatorService redactionLogCreatorService, + RedactionStorageService redactionStorageService, + PdfSegmentationService pdfSegmentationService, + RedactionChangeLogService redactionChangeLogService, + LegalBasisClient legalBasisClient, + RedactionServiceSettings redactionServiceSettings, + SectionTextBuilderService sectionTextBuilderService, + SectionGridCreatorService sectionGridCreatorService, + ImageService imageService, + ImportedRedactionService importedRedactionService, + SectionFinder sectionFinder, + MeterRegistry meterRegistry) { + + this.dictionaryService = dictionaryService; + this.droolsExecutionService = droolsExecutionService; + this.entityRedactionService = entityRedactionService; + this.redactionLogCreatorService = redactionLogCreatorService; + this.redactionStorageService = redactionStorageService; + this.pdfSegmentationService = pdfSegmentationService; + this.redactionChangeLogService = redactionChangeLogService; + this.legalBasisClient = legalBasisClient; + this.redactionServiceSettings = redactionServiceSettings; + this.sectionTextBuilderService = sectionTextBuilderService; + this.sectionGridCreatorService = sectionGridCreatorService; + this.imageService = imageService; + this.importedRedactionService = importedRedactionService; + this.sectionFinder = sectionFinder; + + FunctionTimer.builder("redactmanager_reanalyze.pagewise", // + analyzeCounter, // + PagewiseCounter::getTotalPageCount, // + PagewiseCounter::getTotalTimeMillis, // + TimeUnit.MILLISECONDS) // + .register(meterRegistry); + } @Timed("redactmanager_analyzeDocumentStructure") @@ -250,6 +294,8 @@ public class AnalyzeService { long duration = System.currentTimeMillis() - startTime; + analyzeCounter.increase(text.getNumberOfPages(), duration); + return AnalyzeResult.builder() .dossierId(analyzeRequest.getDossierId()) .fileId(analyzeRequest.getFileId()) @@ -299,4 +345,21 @@ public class AnalyzeService { return SimplifiedText.builder().numberOfPages(numberOfPages).sectionTexts(sectionTexts).build(); } + + @FieldDefaults(level = AccessLevel.PRIVATE) + @Getter + private static final class PagewiseCounter { + + long totalPageCount; + long totalTimeMillis; + + + public void increase(long pageCount, long durationMillis) { + + totalPageCount += pageCount; + totalTimeMillis += durationMillis; + } + + } + }