searchStrategies = $searchStrategies !== [] ? $searchStrategies : $this->defaultSearchStrategies(); $this->futureCapabilities = $futureCapabilities !== [] ? $futureCapabilities : $this->defaultFutureCapabilities(); } public function resolveSearchStrategy(string $identifierType, string $capability): string { $idType = strtoupper(trim($identifierType)); $capabilityName = strtolower(trim($capability)); if (isset($this->searchStrategies[$capabilityName][$idType])) { return (string) $this->searchStrategies[$capabilityName][$idType]; } if (isset($this->searchStrategies['default'][$idType])) { return (string) $this->searchStrategies['default'][$idType]; } return 'strategy_placeholder'; } public function getFutureCapabilities(): array { return $this->futureCapabilities; } private function defaultSearchStrategies(): array { return [ 'book_capability' => [ IdentifierAnalyzer::ISBN => 'book_identifier_first', IdentifierAnalyzer::TITLE => 'book_title_fallback', ], 'marketplace_capability' => [ IdentifierAnalyzer::ASIN => 'marketplace_asin_first', IdentifierAnalyzer::MPN => 'marketplace_mpn_fallback', IdentifierAnalyzer::TITLE => 'marketplace_title_discovery', ], 'media_capability' => [ IdentifierAnalyzer::UPC => 'media_upc_first', IdentifierAnalyzer::TITLE => 'media_title_fallback', ], 'food_capability' => [ IdentifierAnalyzer::EAN => 'food_ean_first', IdentifierAnalyzer::BARCODE => 'food_barcode_fallback', ], 'generic_product_capability' => [ IdentifierAnalyzer::UNKNOWN => 'generic_discovery', ], 'default' => [ IdentifierAnalyzer::ISBN => 'default_identifier', IdentifierAnalyzer::EAN => 'default_identifier', IdentifierAnalyzer::UPC => 'default_identifier', IdentifierAnalyzer::ASIN => 'default_identifier', IdentifierAnalyzer::MPN => 'default_identifier', IdentifierAnalyzer::TITLE => 'default_title', IdentifierAnalyzer::BARCODE => 'default_barcode', IdentifierAnalyzer::UNKNOWN => 'default_unknown', ], ]; } private function defaultFutureCapabilities(): array { return [ 'ocr' => [ 'status' => 'placeholder', 'description' => 'Future OCR capability placeholder.', ], 'image_recognition' => [ 'status' => 'placeholder', 'description' => 'Future image recognition capability placeholder.', ], 'ai_recognition' => [ 'status' => 'placeholder', 'description' => 'Future AI recognition capability placeholder.', ], 'voice_search' => [ 'status' => 'placeholder', 'description' => 'Future voice search capability placeholder.', ], ]; } }