configuration = $configuration; $this->bridge = $bridge; $this->productIntelligence = $productIntelligence; $this->confidenceEngine = $confidenceEngine; $this->qualityEngine = $qualityEngine; } public function process(IntegrationContext $context): IntegrationResult { $searchResult = $context->getSearchResult(); if (! $this->configuration->isProductIntelligenceEnabled()) { return new IntegrationResult($searchResult); } $profiles = $this->bridge->convert($context, $this->configuration); $productScore = $this->configuration->isMergeEnabled() ? $this->productIntelligence->evaluate($profiles) : null; $confidenceReport = $productScore !== null && $this->configuration->isConfidenceEnabled() ? $this->confidenceEngine->report($productScore) : null; $qualityReport = $productScore !== null && $confidenceReport !== null && $this->configuration->isQualityEnabled() ? $this->qualityEngine->evaluate($productScore, $confidenceReport) : null; return new IntegrationResult( $searchResult, $profiles, $productScore, $confidenceReport, $qualityReport, true ); } }