// 하루결 — 운동 데이터
// 항암치료 중 환자에게 적합한 운동: 가벼운 유산소·유연성·호흡·수술 후 팔 운동
// 출처: 국가암정보센터, 서울대학교병원, 한국유방암학회 일반 권장사항

const EXERCISES = [
  {
    id: 'breath',
    name: '호흡 이완',
    icon: 'breath',
    duration: 5,
    intensity: 'gentle',  // gentle / light / moderate
    tone: 'mist',
    desc: '몸과 마음을 차분히 가라앉히고 산소를 충분히 들이마시는 시간',
    suitableWhen: ['post-chemo-24h', 'recovery', 'fatigue', 'anytime'],
    steps: [
      '편한 자세로 앉거나 누우세요.',
      '4초 동안 코로 천천히 들이마십니다.',
      '4초 동안 멈춥니다.',
      '6초 동안 입으로 천천히 내쉽니다.',
      '이를 5분 정도 반복합니다.',
    ],
    caution: '어지러움이 있으면 멈추세요. 깊은 호흡이 어렵다면 평소 호흡으로 의식만 모아도 좋습니다.',
  },
  {
    id: 'stretch',
    name: '가벼운 스트레칭',
    icon: 'stretch',
    duration: 10,
    intensity: 'gentle',
    tone: 'sage',
    desc: '근육의 긴장을 풀고 혈액순환을 돕는 가벼운 동작',
    suitableWhen: ['post-chemo-24h', 'recovery', 'anytime'],
    steps: [
      '목을 좌우·앞뒤로 천천히 5회씩 돌립니다.',
      '어깨를 으쓱 올렸다 내리기 10회.',
      '팔을 천장 쪽으로 천천히 뻗어 양옆으로 흔들기 10초씩.',
      '허리를 좌우로 천천히 비틀기 5회.',
      '발목·발가락을 둥글게 돌리기 10회.',
    ],
    caution: '아픈 부위는 피하세요. 통증이 있으면 즉시 멈추고 의료진과 상의하세요.',
  },
  {
    id: 'arm',
    name: '수술 후 팔 운동',
    icon: 'arm',
    duration: 15,
    intensity: 'light',
    tone: 'clay',
    desc: '림프 순환을 돕고 팔 운동 범위를 회복하기 위한 동작',
    suitableWhen: ['recovery', 'post-surgery'],
    steps: [
      '벽 앞에 서서 손가락으로 벽을 천천히 위로 올라가기 10회.',
      '팔을 어깨 높이로 들어 손바닥을 아래로 두고 작은 원 그리기 10회.',
      '같은 자세에서 큰 원 그리기 10회.',
      '벽에 손을 대고 어깨 펴고 가슴 늘리기 30초.',
      '머리 뒤로 손깍지 끼고 팔꿈치 벌리기 10초씩 3회.',
    ],
    caution: '수술 직후 시작 시점은 반드시 의료진과 상의하세요. 무거운 물건 들기·역기 운동은 피해야 합니다.',
  },
  {
    id: 'walk',
    name: '회복 산책',
    icon: 'walk',
    duration: 20,
    intensity: 'light',
    tone: 'sage',
    desc: '가벼운 유산소 운동. 면역력이 낮은 시기에는 짧고 한적한 곳에서',
    suitableWhen: ['recovery', 'anytime'],
    steps: [
      '편한 신발을 신고 평지를 선택합니다.',
      '5분 정도 천천히 시작합니다.',
      '대화가 가능한 속도로 10~15분 유지.',
      '마지막 5분은 다시 천천히 마무리.',
      '걷기 전후로 다리·종아리 스트레칭.',
    ],
    caution: '사람 많은 곳·황사·미세먼지 심한 날은 피하세요. 마스크 착용을 권장합니다. 어지러움·심한 피로감이 오면 즉시 휴식.',
  },
  {
    id: 'chair-yoga',
    name: '의자 요가',
    icon: 'chair',
    duration: 15,
    intensity: 'gentle',
    tone: 'mist',
    desc: '서 있기 힘들 때 의자에 앉아 할 수 있는 부드러운 요가',
    suitableWhen: ['fatigue', 'recovery', 'anytime'],
    steps: [
      '의자 끝에 허리를 펴고 앉습니다.',
      '두 손을 무릎에 얹고 천천히 척추 길게 펴기.',
      '오른팔을 천장으로 뻗으며 왼쪽으로 옆구리 늘리기 30초, 반대쪽도.',
      '두 손 깍지 끼고 앞으로 밀며 등 둥글게 30초.',
      '두 손 뒤로 깍지 끼고 어깨 펴기 30초.',
    ],
    caution: '균형 잃지 않도록 등받이가 있는 의자를 사용하세요.',
  },
  {
    id: 'balance',
    name: '균형 운동',
    icon: 'balance',
    duration: 10,
    intensity: 'light',
    tone: 'honey',
    desc: '손발 저림이 있을 때 낙상 예방을 위한 안정성 운동',
    suitableWhen: ['recovery', 'neuropathy'],
    steps: [
      '벽이나 식탁 옆에 서서 한 손을 짚습니다.',
      '한 발을 살짝 들고 10초 유지, 반대쪽도.',
      '발끝으로 발끝까지 일자로 걷기 10보.',
      '뒤꿈치·발끝 들기를 번갈아 10회.',
      '의자에 앉았다 일어서기 10회.',
    ],
    caution: '손발 저림이 심하면 반드시 손잡이를 잡고 진행하세요. 보호자와 함께하면 안전합니다.',
  },
  {
    id: 'lymph',
    name: '림프 순환 마사지',
    icon: 'massage',
    duration: 10,
    intensity: 'gentle',
    tone: 'clay',
    desc: '수술 부위 부종 예방과 순환을 돕는 부드러운 자가 마사지',
    suitableWhen: ['recovery', 'post-surgery'],
    steps: [
      '편안한 자세로 누우거나 앉습니다.',
      '쇄골 위 부드러운 부분을 손가락으로 살짝 누르기 10회.',
      '겨드랑이를 부드럽게 원으로 마사지 10회.',
      '팔 안쪽을 어깨 → 손목 방향으로 부드럽게 쓸기 10회.',
      '손끝부터 어깨까지 부드럽게 위로 쓸어 올리기 10회.',
    ],
    caution: '수술 직후 시작 시점·세기는 반드시 의료진과 상의하세요. 강하게 누르지 마세요.',
  },
  {
    id: 'meditation',
    name: '마음 챙김 명상',
    icon: 'mind',
    duration: 10,
    intensity: 'gentle',
    tone: 'mist',
    desc: '불안과 걱정이 많은 날, 지금 이 순간으로 돌아오는 시간',
    suitableWhen: ['fatigue', 'anytime'],
    steps: [
      '편한 자세로 앉거나 눕습니다.',
      '눈을 감고 호흡에 집중합니다.',
      '들이쉴 때 \'들숨\', 내쉴 때 \'날숨\'을 마음속으로 이야기합니다.',
      '잡생각이 떠오르면 평가 없이 흘려보내고 다시 호흡으로.',
      '5~10분 정도 유지합니다.',
    ],
    caution: '잠이 오면 자연스럽게 받아들이세요. 명상은 잘하고 못하고가 없습니다.',
  },
];

// 주기 일차별 추천 운동 (회복 일차 기준)
function recommendByCycleDay(day) {
  // day: 투여일부터의 일차 (1 = 투여 당일, 2 = 다음날 …)
  if (day <= 1) {
    return ['breath', 'meditation'];           // 투여 당일: 호흡·이완만
  }
  if (day <= 3) {
    return ['breath', 'stretch', 'meditation']; // 초기 회복: 가벼운 동작
  }
  if (day <= 7) {
    return ['stretch', 'chair-yoga', 'walk', 'breath']; // 회복: 가벼운 유산소 시작
  }
  if (day <= 14) {
    return ['walk', 'arm', 'balance', 'stretch']; // 회복 후반: 활동량 늘리기
  }
  return ['walk', 'arm', 'lymph', 'chair-yoga']; // 다음 투여 직전 기간
}

// 일주일 자동 스케줄 생성
function buildWeekSchedule(cycleStartDate, todayISO) {
  const start = new Date(cycleStartDate + 'T00:00:00');
  const today = new Date(todayISO + 'T00:00:00');
  // 오늘 기준 -3 ~ +3
  const days = [];
  for (let off = -3; off <= 3; off++) {
    const d = new Date(today); d.setDate(today.getDate() + off);
    const iso = d.toISOString().slice(0, 10);
    const cycleDay = Math.round((d - start) / 86400000) + 1;
    const recIds = recommendByCycleDay(cycleDay);
    days.push({
      iso, cycleDay,
      label: ['일','월','화','수','목','금','토'][d.getDay()],
      dayNum: d.getDate(),
      isToday: off === 0,
      isPast: off < 0,
      exercises: recIds.map(id => EXERCISES.find(e => e.id === id)).filter(Boolean),
    });
  }
  return days;
}

Object.assign(window, { EXERCISES, recommendByCycleDay, buildWeekSchedule });
