"""Versioned schema-owned rules and fixed Korean clarification copy."""

from __future__ import annotations

from checkin_cli.nutrition_onboarding_contract import QUESTION_FIELDS, canonical_digest

POLICY_VERSION = "nutrition_onboarding_clarification_v1"
VISIBLE_ISSUE_LIMIT = 3
SENSITIVE_FIELDS = (
    "conditions",
    "medications",
    "pregnancy_breastfeeding",
    "eating_disorder_risk",
)
QUESTION_COPY = {
    "date_of_birth": "생년월일을 하나의 YYYY-MM-DD 값으로 입력해 주세요.",
    "equation_sex_basis": "계산 기준을 남성, 여성, 선택 안 함 중 하나로 입력해 주세요.",
    "height_cm": "키를 하나의 cm 값으로 입력해 주세요.",
    "weight_kg": "현재 체중을 하나의 kg 값으로 입력해 주세요.",
    "activity_category": "활동 수준을 한 가지로 입력해 주세요.",
    "activity_rationale": "활동 근거를 하나의 답변으로 입력해 주세요.",
    "goal_type": "목표를 감량, 유지, 증량 중 하나로 입력해 주세요.",
    "target_weight_kg": "목표 체중을 하나의 kg 값으로 입력해 주세요.",
    "target_date": "목표 날짜를 하나의 YYYY-MM-DD 값으로 입력해 주세요.",
    "allergies": "알레르기 정보를 하나의 답변으로 입력해 주세요.",
    "intolerances": "불내증 정보를 하나의 답변으로 입력해 주세요.",
    "religious_ethical_exclusions": "제외 식품을 하나의 답변으로 입력해 주세요.",
    "disliked_foods": "피하는 식품을 하나의 답변으로 입력해 주세요.",
    "dietary_preferences": "식단 선호를 하나의 답변으로 입력해 주세요.",
    "conditions": "질환 정보를 하나의 답변으로 입력해 주세요.",
    "medications": "약과 보충제 정보를 하나의 답변으로 입력해 주세요.",
    "pregnancy_breastfeeding": "임신 또는 수유 여부를 한 가지로 입력해 주세요.",
    "eating_disorder_risk": "섭식장애 위험 또는 과거력 여부를 한 가지로 입력해 주세요.",
    "cooking_access": "조리 환경을 하나의 답변으로 입력해 주세요.",
    "budget_band": "식비 예산을 하나의 범위로 입력해 주세요.",
    "meal_count": "하루 식사 횟수를 하나의 숫자로 입력해 주세요.",
    "schedule_constraints": "식사 시간 제약을 하나의 답변으로 입력해 주세요.",
}
POLICY_DIGEST = canonical_digest(
    {
        "version": POLICY_VERSION,
        "fields": QUESTION_FIELDS,
        "question_copy": QUESTION_COPY,
        "sensitive_fields": SENSITIVE_FIELDS,
        "visible_issue_limit": VISIBLE_ISSUE_LIMIT,
        "ambiguity_markers": (" 또는 ", " 혹은 "),
        "baseline_schema": "nutrition_onboarding_v2",
        "cross_field_rules": (
            "maintain_forbids_targets",
            "loss_gain_require_targets",
            "loss_target_below_current",
            "gain_target_above_current",
        ),
    }
)
