configuration = $configuration; $this->integrationManager = $integrationManager; $this->previewIntelligenceService = $previewIntelligenceService; } public function analyze(ProductDTO $product, ?string $provider = null): ?PreviewAnalysis { if (! $this->configuration->isPreviewIntelligenceEnabled()) { return null; } return $this->createAnalysis($product, $provider); } public function analyzeForPurchase(ProductDTO $product, ?string $provider = null): ?PreviewAnalysis { if (! $this->configuration->isPurchaseIntelligenceEnabled()) { return null; } return $this->createAnalysis($product, $provider); } private function createAnalysis(ProductDTO $product, ?string $provider): PreviewAnalysis { $sourceProvider = $provider ?? $product->getProviderInfo()?->getName(); $searchResult = new SearchResult( [new SearchItem($product, $this->configuration->getDefaultConfidence())], 1, $sourceProvider ); $integrationResult = $this->integrationManager->process(new IntegrationContext($searchResult)); return $this->previewIntelligenceService->analyze($integrationResult); } }