/**
 * CL-9: 별표 키워드 트리거 테스트
 * vector-search/route.ts의 hasAppendixTrigger 로직 검증
 */

import { describe, it, expect } from 'vitest';

// ── hasAppendixTrigger 로직 재현 ────────────────────────────────────
const APPENDIX_TRIGGER_KEYWORDS = [
    '수술분류', '장해등급', '장해분류', '질병코드', '질병분류',
    '몇 종', '수술 종류', '수술종류', '별표', '부속서류',
];

function hasAppendixTrigger(question: string): boolean {
    return APPENDIX_TRIGGER_KEYWORDS.some(kw => question.includes(kw));
}

describe('CL-9: hasAppendixTrigger 별표 키워드 트리거', () => {

    describe('트리거 발동 키워드', () => {
        it('"수술분류" 포함 → true', () => {
            expect(hasAppendixTrigger('이 상품의 수술분류 기준이 뭔가요?')).toBe(true);
        });

        it('"장해등급" 포함 → true', () => {
            expect(hasAppendixTrigger('장해등급 3급 기준 알려주세요')).toBe(true);
        });

        it('"질병코드" 포함 → true', () => {
            expect(hasAppendixTrigger('C코드 질병코드 포함 여부')).toBe(true);
        });

        it('"몇 종" 포함 → true', () => {
            expect(hasAppendixTrigger('이 수술은 몇 종에 해당하나요?')).toBe(true);
        });

        it('"수술 종류" 포함 → true', () => {
            expect(hasAppendixTrigger('보장되는 수술 종류가 뭔가요?')).toBe(true);
        });

        it('"수술종류" (띄어쓰기 없음) 포함 → true', () => {
            expect(hasAppendixTrigger('수술종류별 보험금')).toBe(true);
        });

        it('"별표" 포함 → true', () => {
            expect(hasAppendixTrigger('별표 1번 내용 알려주세요')).toBe(true);
        });

        it('"부속서류" 포함 → true', () => {
            expect(hasAppendixTrigger('부속서류 확인하고 싶습니다')).toBe(true);
        });

        it('"장해분류" 포함 → true', () => {
            expect(hasAppendixTrigger('장해분류 기준표')).toBe(true);
        });

        it('"질병분류" 포함 → true', () => {
            expect(hasAppendixTrigger('질병분류 코드 목록')).toBe(true);
        });
    });

    describe('트리거 미발동 (일반 쿼리)', () => {
        it('일반 보장 질문 → false', () => {
            expect(hasAppendixTrigger('입원비 보장 내용이 뭔가요?')).toBe(false);
        });

        it('면책사항 질문 → false', () => {
            expect(hasAppendixTrigger('면책사항 알려주세요')).toBe(false);
        });

        it('보험료 질문 → false', () => {
            expect(hasAppendixTrigger('월 보험료가 얼마인가요?')).toBe(false);
        });

        it('빈 문자열 → false', () => {
            expect(hasAppendixTrigger('')).toBe(false);
        });

        it('"수술" 단독 (분류 없음) → false', () => {
            expect(hasAppendixTrigger('수술 보험금 얼마인가요?')).toBe(false);
        });
    });
});
