/**
 * Quality Evaluator
 *
 * 품질 평가 서비스
 *
 * 주요 기능:
 * - 임계값 비교 및 품질 평가
 * - 상태 결정: pass/warning/fail
 * - 경고 정보 생성
 *
 * PRD FR-1.1: Evaluator 역할 - 임계값 비교 및 품질 평가
 * PRD FR-4.2: 품질 측정 시 임계값을 검증해야 함
 */
import Database from 'better-sqlite3';
import { type QualityThreshold } from './quality-threshold-manager.js';
import type { CollectedMetrics } from './quality-metrics-collector.js';
/**
 * 지표 평가 결과
 */
export interface MetricEvaluationResult {
    /**
     * 네임스페이스
     */
    namespace: string;
    /**
     * 지표 키
     */
    key: string;
    /**
     * 측정값
     */
    value: number;
    /**
     * 임계값 정보
     */
    threshold: QualityThreshold | null;
    /**
     * 통과 여부
     */
    passed: boolean;
    /**
     * 차이 (측정값 - 임계값, 또는 임계값 - 측정값)
     * 양수면 여유, 음수면 부족
     */
    difference: number | null;
    /**
     * 평가 메시지
     */
    message: string;
}
/**
 * 품질 평가 결과
 */
export interface QualityEvaluationResult {
    /**
     * 네임스페이스
     */
    namespace: string;
    /**
     * 컨텍스트
     */
    context: string;
    /**
     * 전체 상태: 'pass', 'warning', 'fail'
     */
    status: 'pass' | 'warning' | 'fail';
    /**
     * 각 지표별 평가 결과
     */
    metricResults: MetricEvaluationResult[];
    /**
     * 통과한 지표 수
     */
    passedCount: number;
    /**
     * 실패한 지표 수
     */
    failedCount: number;
    /**
     * 총 지표 수
     */
    totalCount: number;
    /**
     * 경고 정보 (임계값 미달 시)
     */
    warnings: Array<{
        metric_key: string;
        value: number;
        threshold_value: number;
        difference: number;
        message: string;
    }>;
    /**
     * 평가 시간
     */
    evaluated_at: string;
}
/**
 * Quality Evaluator
 *
 * PRD FR-1.1: Evaluator 역할 - 임계값 비교 및 품질 평가
 */
export declare class QualityEvaluator {
    private db;
    private thresholdManager;
    constructor(db: Database.Database);
    /**
     * 단일 지표 평가
     *
     * @param namespace - 네임스페이스
     * @param key - 지표 키
     * @param value - 측정값
     * @param context - 컨텍스트 (기본값: 'default')
     * @returns 지표 평가 결과
     */
    evaluateMetric(namespace: string, key: string, value: number, context?: string): MetricEvaluationResult;
    /**
     * 품질 지표 평가
     *
     * PRD FR-4.2: 품질 측정 시 임계값을 검증해야 함
     *
     * 벡터 차원 불일치 해결 후 재평가:
     * - 벡터 차원 불일치 문제를 해결한 후 품질 지표가 개선되었을 수 있음
     * - precision_at_5=0인 경우는 벡터 차원 불일치로 인한 완전 실패일 가능성이 높음
     * - 벡터 차원 불일치 해결 후에는 재측정하여 개선 여부 확인 필요
     *
     * @param metrics - 수집된 품질 지표
     * @param context - 컨텍스트 (기본값: 'default')
     * @returns 품질 평가 결과
     */
    evaluateMetrics(metrics: CollectedMetrics, context?: string): Promise<QualityEvaluationResult>;
    /**
     * 여러 네임스페이스의 품질 지표 평가
     *
     * @param metricsList - 수집된 품질 지표 목록
     * @param context - 컨텍스트 (기본값: 'default')
     * @returns 품질 평가 결과 목록
     */
    evaluateAllMetrics(metricsList: CollectedMetrics[], context?: string): Promise<QualityEvaluationResult[]>;
    /**
     * 전체 상태 결정
     *
     * 여러 네임스페이스의 평가 결과를 종합하여 전체 상태를 결정
     *
     * @param evaluationResults - 평가 결과 목록
     * @returns 전체 상태: 'pass', 'warning', 'fail'
     */
    determineOverallStatus(evaluationResults: QualityEvaluationResult[]): 'pass' | 'warning' | 'fail';
    /**
     * 경고 정보 생성
     *
     * PRD FR-4.2: 경고 로그에 상세 정보 포함 (지표명, 측정값, 임계값, 차이)
     *
     * @param evaluationResult - 평가 결과
     * @returns 경고 정보 (JSON 형식)
     */
    generateWarningInfo(evaluationResult: QualityEvaluationResult): string;
    /**
     * 경고 로그를 파일에 기록
     *
     * PRD FR-4.3: 품질 저하 발생 시 구조화된 JSON 로그 기록
     * `logs/quality-warnings-{date}.log` 형식으로 저장
     *
     * @param evaluationResult - 평가 결과
     */
    private logWarningToFile;
}
//# sourceMappingURL=quality-evaluator.d.ts.map