/**
 * 추천 시스템 설정 상수
 *
 * @description
 * KPN 추천, 개체 추천, 패키지 추천 등 추천 시스템 관련 설정값
 *
 * @source PRD 기능요구사항20.md SFR-COW-016, SFR-COW-037
 */
export const RECOMMENDATION_CONFIG = {
  /**
   * 유전자 매칭 점수 관련
   */
  GENE_SCORE: {
    /**
     * 점수 차이 임계값
     * 유전자 매칭 점수 차이가 이 값보다 작으면 근친도를 우선 고려
     */
    DIFF_THRESHOLD: 5,
  },

  /**
   * 기본값
   */
  DEFAULTS: {
    /**
     * 근친도 임계값 (%)
     * Wright's Coefficient 기준
     */
    INBREEDING_THRESHOLD: 12.5,

    /**
     * 추천 개수
     * 상위 N개의 KPN/개체를 추천
     */
    RECOMMENDATION_LIMIT: 10,

    /**
     * 세대제약 기준
     * 최근 N세대 이내 사용된 KPN을 추천에서 제외
     */
    GENERATION_THRESHOLD: 3,
  },

  /**
   * KPN 패키지 설정
   */
  PACKAGE: {
    /**
     * 기본 패키지 크기
     * 추천할 KPN 세트 개수
     */
    DEFAULT_SIZE: 5,

    /**
     * 최소 패키지 크기
     */
    MIN_SIZE: 3,

    /**
     * 최대 패키지 크기
     */
    MAX_SIZE: 10,
  },

  /**
   * 커버리지 기준 (%)
   * 유전자 목표 달성률 평가 기준
   */
  COVERAGE: {
    /**
     * 우수 기준
     * 50% 이상 커버리지
     */
    EXCELLENT: 50,

    /**
     * 양호 기준
     * 30% 이상 커버리지
     */
    GOOD: 30,

    /**
     * 최소 기준
     * 20% 이상 커버리지
     */
    MINIMUM: 20,
  },

  /**
   * KPN 순환 전략
   */
  ROTATION: {
    /**
     * 최소 KPN 개수
     * 순환 전략 적용 최소 개수
     */
    MIN_KPN_COUNT: 3,

    /**
     * 재사용 안전 세대
     * 동일 KPN을 이 세대 이후에 재사용 가능
     */
    SAFE_REUSE_GENERATION: 4,
  },
} as const;
