/**
 * 벡터 검색 파사드
 * 의존성 주입을 통한 통합 인터페이스 제공
 */
import { VectorSearchService } from './vector-search.service.js';
import { VectorIndexManager } from './vector-index-manager.js';
import { VectorPerformanceTester } from './vector-performance-tester.js';
import { UnifiedEmbeddingService } from '../../../embedding/services/unified-embedding-service.js';
export class VectorSearchFacade {
    searchService;
    indexManager;
    performanceTester;
    constructor(searchRepository, indexRepository, performanceRepository) {
        this.searchService = new VectorSearchService(searchRepository);
        this.indexManager = new VectorIndexManager(indexRepository);
        this.performanceTester = new VectorPerformanceTester(performanceRepository);
    }
    /**
     * 벡터 검색 실행
     */
    async search(query) {
        return await this.searchService.search(query);
    }
    /**
     * 하이브리드 검색 실행
     */
    async hybridSearch(query) {
        return await this.searchService.hybridSearch(query);
    }
    async providerHybridSearch(query, embeddingService) {
        return await this.searchService.providerHybridSearch(embeddingService, query);
    }
    async unifiedSearch(query, embeddingService) {
        return await this.searchService.unifiedSearch(embeddingService, query);
    }
    /**
     * 인덱스 상태 확인
     */
    getIndexStatus() {
        return this.indexManager.getIndexStatus();
    }
    /**
     * 인덱스 재구성
     */
    async rebuildIndex() {
        return await this.indexManager.rebuildIndex();
    }
    /**
     * VEC 사용 가능 여부 확인
     */
    isAvailable() {
        return this.indexManager.isAvailable();
    }
    /**
     * 성능 테스트 실행
     */
    async runPerformanceTest(queryVector, iterations = 10) {
        return await this.performanceTester.runPerformanceTest(queryVector, iterations);
    }
    /**
     * 성능 테스트 결과 분석
     */
    analyzePerformance(result) {
        return this.performanceTester.analyzeResults(result);
    }
    /**
     * 성능 테스트 리포트 생성
     */
    generatePerformanceReport(result) {
        return this.performanceTester.generateReport(result);
    }
    /**
     * 인덱스 상태 요약
     */
    getStatusSummary() {
        return this.indexManager.getStatusSummary();
    }
    /**
     * 전체 시스템 상태 확인
     */
    getSystemStatus() {
        const indexStatus = this.getIndexStatus();
        const available = this.isAvailable();
        return {
            available,
            indexStatus,
            summary: this.getStatusSummary()
        };
    }
}
//# sourceMappingURL=vector-search-facade.js.map