/**
 * ========================================
 * 전역 필터 타입 정의
 * ========================================
 *
 * @description
 * - 사용자별 맞춤 필터 설정
 * - 유전자/형질 선택 및 가중치 설정
 * - 모든 페이지에 공통 적용
 */

/**
 * 전역 필터 설정
 *
 * @description
 * - 사용자별 맞춤 필터 설정
 * - Zustand 스토어에 저장
 * - 개체 목록 필터링 및 선발지수 계산에 사용
 */
export interface GlobalFilterSettings {
  // === 분석 지표 ===
  analysisIndex?: 'GENE' | 'ABILITY'  // 유전자(GENE) 또는 유전능력(ABILITY) 기반

  // === 유전자 선택 (GENE 모드) ===
  selectedGenes: string[]          // 선택된 유전자 목록
  pinnedGenes?: string[]           // 고정 유전자 (최대 5개)

  // === 형질 선택 (ABILITY 모드) ===
  selectedTraits?: string[]        // 선택된 형질 목록
  pinnedTraits?: string[]          // 고정 형질 (최대 5개)

  // === 형질 가중치 ===
  // 35개 형질 (DB의 trait_nm과 일치)
  traitWeights: {
    // 성장형질 (1개)
    "12개월령체중": number

    // 경제형질 (4개)
    도체중: number
    등심단면적: number
    등지방두께: number
    근내지방도: number

    // 체형형질 (10개)
    체고: number
    십자: number
    체장: number
    흉심: number
    흉폭: number
    고장: number
    요각폭: number
    좌골폭: number
    곤폭: number
    흉위: number

    // 부위별무게 (10개)
    안심weight: number
    등심weight: number
    채끝weight: number
    목심weight: number
    앞다리weight: number
    우둔weight: number
    설도weight: number
    사태weight: number
    양지weight: number
    갈비weight: number

    // 부위별비율 (10개)
    안심rate: number
    등심rate: number
    채끝rate: number
    목심rate: number
    앞다리rate: number
    우둔rate: number
    설도rate: number
    사태rate: number
    양지rate: number
    갈비rate: number
  }

  // === 기타 설정 ===
  inbreedingThreshold: number      // 근친도 임계값 (%)
  isActive: boolean                // 필터 활성화 여부
  updtDt: Date                     // 마지막 업데이트 시간
}

/**
 * 기본 필터 초기값
 *
 * @description
 * - 사용자가 필터를 설정하지 않았을 때 기본값
 * - 기본 7개 형질 선택 (도체중, 등심단면적, 등지방두께, 근내지방도, 등심중량, 체장, 체고)
 */
export const DEFAULT_FILTER_SETTINGS: GlobalFilterSettings = {
  analysisIndex: "GENE",
  selectedGenes: [],
  pinnedGenes: [],
  selectedTraits: ["도체중", "등심단면적", "등지방두께", "근내지방도", "등심weight", "체장", "체고"],
  pinnedTraits: [],
  traitWeights: {
    // 성장형질
    "12개월령체중": 0,

    // 경제형질 (기본 선택: 가중치 1)
    도체중: 1,
    등심단면적: 1,
    등지방두께: 1,
    근내지방도: 1,

    // 체형형질
    체고: 1,
    십자: 0,
    체장: 1,
    흉심: 0,
    흉폭: 0,
    고장: 0,
    요각폭: 0,
    좌골폭: 0,
    곤폭: 0,
    흉위: 0,

    // 부위별무게
    안심weight: 0,
    등심weight: 1,
    채끝weight: 0,
    목심weight: 0,
    앞다리weight: 0,
    우둔weight: 0,
    설도weight: 0,
    사태weight: 0,
    양지weight: 0,
    갈비weight: 0,

    // 부위별비율
    안심rate: 0,
    등심rate: 0,
    채끝rate: 0,
    목심rate: 0,
    앞다리rate: 0,
    우둔rate: 0,
    설도rate: 0,
    사태rate: 0,
    양지rate: 0,
    갈비rate: 0,
  },
  inbreedingThreshold: 0,
  isActive: true,
  updtDt: new Date(),
}
