"""
설정 키 상수.

여러 모듈에서 raw 문자열로 쓰던 키를 단일 출처로 모음. 오타 방지·grep 용이.
새 키 추가 시 여기에 등록 후 `init_default_settings()`에 기본값도 추가.
"""

# 근무시간
WORK_HOURS = 'work_hours'
WORK_MINUTES = 'work_minutes'
LUNCH_DURATION_MINUTES = 'lunch_duration_minutes'
DINNER_DURATION_MINUTES = 'dinner_duration_minutes'
WORKDAY_BOUNDARY_HOUR = 'workday_boundary_hour'

# 자동화
AUTO_LUNCH = 'auto_lunch'
AUTO_OVERTIME = 'auto_overtime'
AUTO_BREAK_ON_LOCK = 'auto_break_on_lock'
CLOCK_IN_ON_UNLOCK = 'clock_in_on_unlock'  # 첫 잠금 해제를 출근으로 사용 (PC 안 끄는 사용자용)

# 알림
NOTIFICATION_BEFORE_MINUTES = 'notification_before_minutes'
NOTIF_CLOCK_OUT = 'notification_clock_out'
NOTIF_LUNCH = 'notification_lunch'
NOTIF_DINNER = 'notification_dinner'
NOTIF_OVERTIME = 'notification_overtime'
NOTIF_HEALTH = 'notification_health'

# 알림 임계값 (설정화 — 이전엔 하드코딩이던 것)
LUNCH_REMINDER_HOURS = 'lunch_reminder_hours'      # 출근 후 N시간 경과 시 점심 미등록 알림 (기본 4)
DINNER_REMINDER_HOURS = 'dinner_reminder_hours'    # 출근 후 N시간 경과 시 저녁 미등록 알림 (기본 8)
OVERTIME_THRESHOLD_HOURS = 'overtime_threshold_hours'  # 누적 적립 알림 시간 (기본 20)
WEEKLY_HOURS_THRESHOLD = 'weekly_hours_threshold'  # 주 X시간 경고 (기본 52, 한국 노동법)
HEALTH_CONSECUTIVE_OT_DAYS = 'health_consecutive_ot_days'  # 연속 연장근무 일수 경고 (기본 3)

# 연차
ANNUAL_LEAVE_TOTAL = 'annual_leave_total'
ANNUAL_LEAVE_DAYS = 'annual_leave_days'
LEAVE_BALANCE = 'leave_balance'
INITIAL_OVERTIME_MINUTES = 'initial_overtime_minutes'
INITIAL_LEAVE_USED_HOURS = 'initial_leave_used_hours'

# UI/표시
THEME = 'theme'
TIME_FORMAT = 'time_format'
LANGUAGE = 'language'
OVERTIME_UNIT = 'overtime_unit'
FONT_SCALE = 'font_scale'  # '1.0' / '1.25' / '1.5'
HIGH_CONTRAST = 'high_contrast'

# 통합/외부
DB_PATH_OVERRIDE = 'db_path_override'

# 백업
LAST_BACKUP_DATE = 'last_backup_date'

# Crash Report (Gitea Issues 통합 — 옵션)
GITEA_FEEDBACK_TOKEN = 'gitea_feedback_token'  # PAT (저장소 issue 쓰기 권한)
GITEA_FEEDBACK_ENABLED = 'gitea_feedback_enabled'

# === v2.3.0 신규 ===
# 온보딩
ONBOARDING_COMPLETED = 'onboarding_completed'

# 급여 (옵션, 포괄임금이면 미설정)
SALARY_ENABLED = 'salary_enabled'
HOURLY_WAGE = 'hourly_wage'
OVERTIME_RATE = 'overtime_rate'  # 1.5

# 휴식 알림
HEALTH_BREAK_ENABLED = 'health_break_enabled'
HEALTH_BREAK_HOURS = 'health_break_hours'  # 기본 4

# 목표
GOAL_OVERTIME_MAX_MONTHLY = 'goal_overtime_max_monthly'  # 월 연장근무 상한 (분)
GOAL_AVG_HOURS_DAILY = 'goal_avg_hours_daily'  # 일평균 목표 (시간, float)

# Discord 웹훅
DISCORD_WEBHOOK_URL = 'discord_webhook_url'
DISCORD_NOTIF_CLOCK_IN = 'discord_notif_clock_in'
DISCORD_NOTIF_CLOCK_OUT = 'discord_notif_clock_out'
DISCORD_NOTIF_HEALTH = 'discord_notif_health'

# 마이그레이션 sentinel
ANNUAL_LEAVE_KEYS_MIGRATED = 'annual_leave_keys_migrated'
BALANCE_ADJUSTMENT_MIGRATED_V2 = 'balance_adjustment_migrated_v2'

# === v2.8.0 도전과제 시스템 ===
# 사용자 메타
BIRTHDAY = 'birthday'  # MM-DD 형식, 빈 문자열이면 비활성
HIRE_DATE = 'hire_date'  # YYYY-MM-DD, 첫 work_records 자동 기록

# 뷰 진입 카운터 (도전과제 + 사용 통계용)
STAT_WEEKLY_VIEW_COUNT = 'stat_weekly_view_count'
STAT_MONTHLY_VIEW_COUNT = 'stat_monthly_view_count'
STAT_PATTERN_VIEW_COUNT = 'stat_pattern_view_count'
CALENDAR_VIEW_COUNT = 'calendar_view_count'
LEAVE_CALENDAR_VIEW_COUNT = 'leave_calendar_view_count'
DAILY_REPORT_COUNT = 'daily_report_count'
ACHIEVEMENTS_VIEW_COUNT = 'achievements_view_count'
CHART_HOVER_DISCOVERED = 'chart_hover_discovered'

# 도전과제 알림
NOTIF_ACHIEVEMENT = 'notification_achievement'
DISCORD_NOTIF_ACHIEVEMENT = 'discord_notif_achievement'
