/**
 * Quality Metrics Collector
 *
 * 품질 지표 수집 서비스
 *
 * 주요 기능:
 * - 기존 품질 검증 시스템들을 호출하여 지표 수집
 * - namespace 단위 수집 메서드 제공 (search, relation, consolidation, storage)
 * - 수집된 지표를 구조화된 형태로 반환
 *
 * PRD FR-1.1: Collector 역할 - 품질 지표 수집 (기존 검증 시스템 호출)
 */
import Database from 'better-sqlite3';
import { type CategoryQualityReport } from '../../../../shared/types/benchmark.types.js';
import { type SearchResult, type GroundTruth } from '../../../../test/helpers/search-quality-metrics.js';
import { type SearchResultPair } from '../../../../test/helpers/vector-search-quality-metrics.js';
import { type ExpectedRelation, type ExtractedRelation } from '../../../relation/services/relation-quality-validator.js';
/**
 * 품질 지표 수집 결과
 */
export interface CollectedMetrics {
    /**
     * 네임스페이스 (예: 'search', 'relation', 'consolidation', 'storage')
     */
    namespace: string;
    /**
     * 컨텍스트 (예: 'default', 'ci', 'nightly')
     */
    context: string;
    /**
     * 측정 시간
     */
    measured_at: string;
    /**
     * 지표 데이터 (키-값 쌍)
     * 예: { 'precision_at_5': 0.85, 'recall_at_5': 0.72, ... }
     */
    metrics: Record<string, number>;
    /**
     * 메타데이터 (선택적)
     */
    metadata?: Record<string, any>;
}
/**
 * 검색 품질 지표
 */
export interface SearchQualityMetrics {
    precision_at_5?: number;
    precision_at_10?: number;
    recall_at_5?: number;
    recall_at_10?: number;
    ndcg_at_5?: number;
    ndcg_at_10?: number;
    mrr?: number;
    kendalls_tau?: number;
    top_5_retention?: number;
    top_10_retention?: number;
    vector_similarity_mean?: number;
    vector_similarity_std?: number;
    consolidation_score_mean?: number;
    consolidation_score_std?: number;
}
/**
 * 관계 추출 품질 지표
 */
export interface RelationQualityMetrics {
    precision?: number;
    recall?: number;
    f1_score?: number;
    true_positives?: number;
    false_positives?: number;
    false_negatives?: number;
    confidence_compliance_rate?: number;
    type_precision?: Record<string, number>;
    type_recall?: Record<string, number>;
    type_f1_score?: Record<string, number>;
}
/**
 * Consolidation 점수 품질 지표
 */
export interface ConsolidationQualityMetrics {
    score_stability?: number;
    order_preservation?: number;
    score_mean?: number;
    score_std?: number;
    kendalls_tau?: number;
}
/**
 * 저장 품질 지표
 */
export interface StorageQualityMetrics {
    duplication_rate?: number;
    data_integrity?: number;
    schema_compliance?: number;
    data_loss_rate?: number;
}
/**
 * Quality Metrics Collector
 *
 * PRD FR-1.1: Collector 역할 - 품질 지표 수집 (기존 검증 시스템 호출)
 */
export declare class QualityMetricsCollector {
    private db;
    constructor(db: Database.Database);
    /**
     * MRR (Mean Reciprocal Rank) 계산
     * 첫 번째 관련 결과의 역순위의 평균
     *
     * @param queryResults 쿼리별 검색 결과
     * @param groundTruths 쿼리별 Ground Truth
     * @returns MRR (0-1)
     */
    private calculateMRR;
    /**
     * 검색 품질 지표 수집
     *
     * PRD FR-2.1: 검색 품질 지표 정의
     * - Precision@K, Recall@K, NDCG@K, MRR, Kendall's Tau 등
     *
     * @param context - 컨텍스트 (기본값: 'default')
     * @param options - 옵션 (Ground Truth 데이터, 검색 결과 등)
     * @returns 검색 품질 지표
     *
     * Note: Ground Truth 데이터가 제공되면 실제 측정을 수행하고,
     * 없으면 기본값(0)을 반환합니다.
     */
    collectSearchMetrics(context?: string, options?: {
        /**
         * Ground Truth 데이터 (선택적)
         * 제공되면 실제 측정을 수행합니다.
         * 제공되지 않으면 파일에서 자동 로드 시도
         */
        groundTruths?: GroundTruth[];
        /**
         * 검색 결과 (선택적)
         * 쿼리 ID를 키로 하는 Map
         * 제공되지 않으면 Ground Truth를 기반으로 실제 검색 수행
         */
        queryResults?: Map<string, SearchResult[]>;
        /**
         * 순서 보존 검증용 검색 결과 쌍 (선택적)
         * 벡터-only와 Consolidation 반영 후 결과 비교
         */
        searchResultPairs?: SearchResultPair[];
        /**
         * Benchmark fixture 디렉터리 (지정 시 manifest/ground truth를 여기서 로드)
         */
        benchmarkDir?: string;
        /**
         * strict benchmark 모드: manifest.strict_ci 및 human-labeled ground truth 필수
         */
        strictBenchmark?: boolean;
    }): Promise<CollectedMetrics>;
    /**
     * 관계 추출 품질 지표 수집
     *
     * PRD FR-2.4: 관계 추출 품질 지표 정의
     * - Precision, Recall, F1-Score, 관계 유형별 정확도
     *
     * @param context - 컨텍스트 (기본값: 'default')
     * @param options - 옵션 (예상 관계, 추출된 관계 등)
     * @returns 관계 추출 품질 지표
     *
     * Note: 예상 관계와 추출된 관계가 제공되면 실제 측정을 수행하고,
     * 없으면 기본값(0)을 반환합니다.
     */
    collectRelationMetrics(context?: string, options?: {
        /**
         * 예상 관계 목록 (Ground Truth, 선택적)
         * 제공되면 실제 측정을 수행합니다.
         */
        expectedRelations?: ExpectedRelation[];
        /**
         * 추출된 관계 목록 (선택적)
         * 제공되지 않으면 데이터베이스에서 자동 조회 시도
         */
        extractedRelations?: ExtractedRelation[];
    }): Promise<CollectedMetrics>;
    /**
     * Consolidation 점수 품질 지표 수집
     *
     * PRD FR-2.5: Consolidation 점수 안정성 지표 정의
     * - 점수 분포, 순서 보존 검증
     *
     * @param context - 컨텍스트 (기본값: 'default')
     * @param options - 옵션 (검색 결과 쌍, 점수 샘플 등)
     * @returns Consolidation 점수 품질 지표
     *
     * Note: 검색 결과 쌍이나 점수 샘플이 제공되면 실제 측정을 수행하고,
     * 없으면 기본값(0)을 반환합니다.
     */
    collectConsolidationMetrics(context?: string, options?: {
        /**
         * 순서 보존 검증용 검색 결과 쌍 (선택적)
         * 벡터-only와 Consolidation 반영 후 결과 비교
         */
        searchResultPairs?: SearchResultPair[];
        /**
         * Consolidation 점수 샘플 (선택적)
         * 점수 분포 분석을 위한 샘플 데이터
         */
        consolidationScores?: number[];
    }): Promise<CollectedMetrics>;
    /**
     * 저장 품질 지표 수집
     *
     * PRD FR-2.5: 기억 저장 품질 지표 정의
     * - 중복 비율, 데이터 무결성, 스키마 준수율, 데이터 손실률
     *
     * @param context - 컨텍스트 (기본값: 'default')
     * @returns 저장 품질 지표
     */
    collectStorageMetrics(context?: string): Promise<CollectedMetrics>;
    /**
     * 모든 네임스페이스의 품질 지표 수집
     *
     * @param context - 컨텍스트 (기본값: 'default')
     * @returns 모든 네임스페이스의 품질 지표
     */
    collectAllMetrics(context?: string): Promise<CollectedMetrics[]>;
    /**
     * 특정 네임스페이스의 품질 지표 수집
     *
     * @param namespace - 네임스페이스 ('search', 'relation', 'consolidation', 'storage')
     * @param context - 컨텍스트 (기본값: 'default')
     * @returns 품질 지표
     */
    collectMetricsByNamespace(namespace: string, context?: string): Promise<CollectedMetrics>;
    /**
     * macro_category별 MRR·NDCG 집계 (benchmark-v3 + category-mapping.json)
     */
    collectCategoryMetrics(benchmarkDir: string, mappingPath: string): Promise<CategoryQualityReport[]>;
}
//# sourceMappingURL=quality-metrics-collector.d.ts.map