/**
 * 휴가관리(기준정보) 타입 정의 (PDF 57페이지 기준)
 */

// 휴가 기준 유형
export type LeaveStandardType = 'fiscal' | 'hire'; // 회계연도 / 입사일

export const LEAVE_STANDARD_TYPE_LABELS: Record<LeaveStandardType, string> = {
  fiscal: '회계연도',
  hire: '입사일',
};

// 휴가 정책 설정
export interface LeavePolicySettings {
  standardType: LeaveStandardType; // 기준
  fiscalStartMonth: number; // 기준일 (월) - 회계연도 기준일 때만 사용
  fiscalStartDay: number; // 기준일 (일)
  defaultAnnualLeave: number; // 기본 연차 일수
  additionalLeavePerYear: number; // 근속년수당 추가 연차
  maxAnnualLeave: number; // 최대 연차 일수
  carryOverEnabled: boolean; // 이월 허용 여부
  carryOverMaxDays: number; // 최대 이월 일수
  carryOverExpiryMonths: number; // 이월 연차 소멸 기간 (개월)
}

// 기본 설정값
export const DEFAULT_LEAVE_POLICY: LeavePolicySettings = {
  standardType: 'fiscal',
  fiscalStartMonth: 1,
  fiscalStartDay: 1,
  defaultAnnualLeave: 15,
  additionalLeavePerYear: 1,
  maxAnnualLeave: 25,
  carryOverEnabled: true,
  carryOverMaxDays: 10,
  carryOverExpiryMonths: 3,
};

// 월 옵션
export const MONTH_OPTIONS = Array.from({ length: 12 }, (_, i) => ({
  value: i + 1,
  label: `${i + 1}월`,
}));

// 일 옵션
export const DAY_OPTIONS = Array.from({ length: 31 }, (_, i) => ({
  value: i + 1,
  label: `${i + 1}일`,
}));
