/**
 * pCNT 정서 설문 7종 문항 데이터
 * 출처: cnt_1.0.10 react-native/src/components/EmotionCheckList/hooks/useTranslate.tsx,
 *       useSurvey.storage.tsx (원문 그대로)
 */

export type QuestionType = 'FOUR_CHOICE' | 'FIVE_CHOICE' | 'EP_SLIDER';

/** 저장 값(백엔드 채점용): 4지 never/few/week/every, 5지 never/few/normal/week/every */
export interface SurveyItem {
  text: string; // 질문 또는 (EP) 이미지 경로
  type: QuestionType;
  /** 문항 헤더 라벨 (5지선다 그룹용) */
  labelTitle?: 'myCondition' | 'feelingAndBehavior';
}

export interface SurveyCategory {
  key: string; // phq | oci | kaq | gad7 | kspin | asrs | ep
  title: string; // 설문조사1..7
  description: string[]; // 카테고리 상단 안내문
  items: SurveyItem[];
}

// 4지선다 응답 라벨
export const FOUR_CHOICE_LABELS: { value: string; label: string }[] = [
  { value: 'never', label: '전혀없음' },
  { value: 'few', label: '며칠동안' },
  { value: 'week', label: '7일 이상' },
  { value: 'every', label: '거의 매일' },
];

// 5지선다 응답 라벨
export const FIVE_CHOICE_LABELS: { value: string; label: string }[] = [
  { value: 'never', label: '전혀' },
  { value: 'few', label: '거의 없음' },
  { value: 'normal', label: '약간' },
  { value: 'week', label: '자주' },
  { value: 'every', label: '매우' },
];

/** EP 슬라이더 감정 라벨 */
export const EP_SLIDER_LABELS = [
  { key: 'happy', label: '행복' },
  { key: 'sad', label: '슬픔' },
  { key: 'angry', label: '분노' },
];

// 설문 EP 슬라이더용 중립 표정 이미지 (public/images/ep 하위 경로)
export const EP_SURVEY_NEUTRAL_IMAGES: string[] = [
  'ep/age_10/chooli/chooli_normal_1.png',
  'ep/age_10/daisy/daisy_normal_1.png',
  'ep/age_10/john/john_normal_1.png',
  'ep/age_30/armand/armand_normal_1.png',
  'ep/age_30/vernon/vernon_normal_1.png',
  'ep/age_30/miami/miami_normal_1.png',
  'ep/age_50/fiona/fiona_normal_1.png',
  'ep/age_50/kein/kein_normal_1.png',
  'ep/age_50/robert/robert_normal_1.png',
  'ep/age_70/mac/mac_normal_1.png',
  'ep/age_70/linda/linda_normal_1.png',
  'ep/age_70/romeo/romeo_normal_1.png',
];

const four = (text: string): SurveyItem => ({ text, type: 'FOUR_CHOICE' });
const five = (
  text: string,
  labelTitle: 'myCondition' | 'feelingAndBehavior' = 'myCondition',
): SurveyItem => ({ text, type: 'FIVE_CHOICE', labelTitle });

export const SURVEY_CATEGORIES: SurveyCategory[] = [
  {
    key: 'phq',
    title: '설문조사1',
    description: ['지난 2주 동안 다음의 문제들로 인해서 얼마나 자주 방해를 받았는지 선택하십시오.'],
    items: [
      four('일 또는 여가활동을 하는데 흥미나 즐거움을 느끼지 못했다.'),
      four('기분이 가라앉거나, 우울하거나, 희망이 없었다.'),
      four('잠이 들거나 계속 잠을 자는 것이 어려움, 또는 잠을 너무 많이 잤다.'),
      four('피곤하다고 느끼거나 기운이 거의 없었다.'),
      four('입맛이 없거나 과식을 했다.'),
      four('자신을 부정적으로 봄- 혹은 자신이 실패자라고 느끼거나 자신 또는 가족을 실망시켰다.'),
      four('신문을 읽거나 텔레비전 보는 것과 같은 일에 집중하는 것이 어려웠다.'),
      four('다른 사람들이 주목할 정도로 너무 느리게 움직이거나 말을 했다. 또는 반대로 평상시보다 많이 움직여서, 너무 안절부절 못하거나 들떠 있었다.'),
      four('죽는 것이 더 낫다고 생각하거나 어떤 식으로든 나를 해칠 것이라고 생각하였다.'),
      four("만일 당신이 위의 문제 중 하나 이상 '예' 라고 응답하셨으면, 이러한 문제들로 인해서 당신은 일을 하거나 가정 일을 돌보거나 다른 사람과 어울리는 것이 얼마나 어려웠나요?"),
    ],
  },
  {
    key: 'oci',
    title: '설문조사2',
    description: [
      '다음은 일상생활에서 경험할 수 있는 내용들로 구성되어 있습니다.',
      '각 문장을 읽고 지난 1달 동안 다음의 경험들로 인해 얼마나 스트레스를 받았거나 힘이 들었는지 선택하십시오.',
    ],
    items: [
      five('그 동안 모은 너무 많은 물건들이 오히려 방해가 될 정도이다.'),
      five('필요이상으로 자주 확인을 하는 편이다.'),
      five('물건들이 제대로 정돈되어 있지 않으면 화가 난다.'),
      five('어떤 일을 할 때 숫자를 세야 할 것만 같은 느낌이 든다.'),
      five('어떤 물건을 낯선 사람들이나 특정 사람들이 만졌다는 사실을 알게 되면 그 물건을 만지기 어렵다.'),
      five('내 생각을 내 마음대로 조절하기가 어렵다.'),
      five('내가 필요하지 않은 것들을 모으는 습관이 있다.'),
      five('습관적으로 문, 창문, 서랍 등을 확인 한다.'),
      five('내 방식대로 정리한 것들을 다른 사람들이 바꾸어 놓으면 화가 난다.'),
      five('어떤 일을 특정 횟수만큼 반복해야만 할 것 같은 느낌이 든다.'),
      five('단지 내가 더러워졌다는 ‘생각’ 때문에 몸을 씻어야 할 때가 있다.'),
      five('나의 의지에 반하여 마음속에 떠오르는 생각들 때문에 기분이 나쁘다.'),
      five('나중에 필요할지도 모른다는 두려움 때문에 물건을 잘 버리지 못한다.'),
      five('가스밸브, 수도꼭지, 전등 스위치를 끄고 나서도 반복적으로 확인하는 습관이 있다.'),
      five('물건들이 특정 순서로 정돈되어 있길 원한다.'),
      five('좋은 숫자와 나쁜 숫자가 있다고 생각한다.'),
      five('필요 이상으로 자주, 오래 손을 씻는 편이다.'),
      five('자주 음란한 생각을 하고, 그 생각을 떨쳐버리기가 힘들다.'),
    ],
  },
  {
    key: 'kaq',
    title: '설문조사3',
    description: [
      '이 질문지는 여러분이 일상생활에서 경험할 수 있는 내용들로 구성되어 있습니다.',
      '각 문장을 읽어 보시고, 평소의 자신을 얼마나 잘 나타내는지 그 정도를 선택하십시오.',
    ],
    items: [
      five('때로 나는 누군가를 치고 싶은 충동을 통제하기 어렵다.'),
      five('나는 친구와 의견이 다를 때 솔직하게 얘기한다.'),
      five('나는 화가 빨리 치밀어 오르지만 또 빨리 풀어진다.'),
      five('나는 때로 시기나 질투에 차있다.'),
      five('누군가 화를 한껏 돋우면, 나는 그 사람을 칠지도 모른다.'),
      five('나는 다른 사람과 의견 충돌이 잦다.'),
      five('일이 뜻대로 안 되었을 때 나는 화를 참기 어렵다.'),
      five('내가 부당하게 대우받고 있다고 느낄 때가 때때로 있다.'),
      five('누군가 나를 때리면 나도 되받아 친다'),
      five('사람들이 나를 짜증나게 하면, 나도 그에 맞서 그들에게 한마디 해 줄 수 있다.'),
      five('나는 때로 울분이 치밀어 참기 어려워 금방이라도 폭발해 버릴 것 같다.'),
      five('다른 사람들은 항상 운이 좋아 보인다.'),
      five('나는 보통 사람들보다 좀 더 많이 치고받고 싸우는 편이다.'),
      five('나는 다른 사람과 의견이 다를 때, 흔히 논쟁을 벌이게 된다.'),
      five('나는 쉽게 흥분하지 않는 사람이다.'),
      five('나는 때때로 스스로도 놀랄 정도로 심한 적대감에 휩싸이곤 한다.'),
      five('나의 권리를 보호하기 위해서 폭력을 행사해야 한다면, 나는 기꺼이 그렇게 하겠다.'),
      five('친구들은 내가 따지기를 좋아한다고 말한다.'),
      five('누가 내게 지나치게 친절하면, 나는 그 사람이 내게 원하는 게 있어 그러지 않나 생각된다.'),
      five('나는 소위 ‘내 친구’라는 자들이 나에 대해 몰래 이야기하고 다닌다는 것을 알고 있다.'),
      five('나를 몰아세운 사람과 주먹다짐을 한 적이 있다.'),
      five('나는 너무 화가 나서 물건을 부순 적이 있다'),
      five('나는 지나치게 친한 척하는 낯선 사람을 보면 의심이 든다.'),
      five('나는 누굴 때리는 것은 어떤 이유로도 정당화될 수 없다고 생각한다.'),
      five('나는 화나는 것을 통제하는 데 어려움을 겪는다.'),
      five('나는 때로 사람들이 내가 모르게 나를 비웃고 있다는 느낌이 든다.'),
      five('나는 내가 아는 사람을 위협해 본 적이 있다.'),
    ],
  },
  {
    key: 'gad7',
    title: '설문조사4',
    description: ['지난 2주 동안 다음의 문제들로 인해서 얼마나 자주 방해를 받았는지 선택하십시오.'],
    items: [
      four('초조하거나 불안하거나 조마조마하게 느낀다.'),
      four('걱정하는 것을 멈추거나 조절할 수 없다.'),
      four('여러 가지 것들에 대해 걱정을 너무 많이 한다.'),
      four('편하게 있기가 어렵다.'),
      four('너무 안절부절 못해서 가만히 있기가 힘들다.'),
      four('쉽게 짜증이 나거나 쉽게 성을 내게 된다.'),
      four('마치 끔찍한 일이 생길 것처럼 두렵게 느껴진다.'),
    ],
  },
  {
    key: 'kspin',
    title: '설문조사5',
    description: ['아래 글을 읽고 지난 일주일간 혹은 명시된 기간 동안의 자신의 느낌을 가장 잘 묘사하는 항목을 선택하십시오.'],
    items: [
      five('나는 권위 있는 사람들이 두렵다.', 'feelingAndBehavior'),
      five('나는 사람들 앞에서 얼굴이 붉어지는 것 때문에 괴롭다.', 'feelingAndBehavior'),
      five('사교모임이나 행사는 나를 겁먹게 한다.', 'feelingAndBehavior'),
      five('나는 낯선 사람과 이야기하기를 꺼린다.', 'feelingAndBehavior'),
      five('나는 비판받는 것에 많이 겁을 먹는다.', 'feelingAndBehavior'),
      five('나는 당황할게 두려워 사람들과 대화하거나 무엇을 하기가 꺼려진다.', 'feelingAndBehavior'),
      five('나는 사람들앞에서 땀을 뻘뻘 흘리게 되는 것이 곤란스럽다.', 'feelingAndBehavior'),
      five('나는 사교모임에 가는 것을 꺼린다.', 'feelingAndBehavior'),
      five('내가 주목받게 되는 행동을 피하게 된다.', 'feelingAndBehavior'),
      five('나는 낯선 사람에게 말을 거는 것이 겁이 난다.', 'feelingAndBehavior'),
      five('나는 연설을 하는 것을 피한다.', 'feelingAndBehavior'),
      five('나는 비판을 피하기 위해서라면 뭐든 할 것이다.', 'feelingAndBehavior'),
      five('사람들에게 둘러싸여 있을 때의 심장박동이 나를 신경 쓰이게 한다.', 'feelingAndBehavior'),
      five('나는 사람들이 지켜보고 있을 때 무언가를 하기 두렵다.', 'feelingAndBehavior'),
      five('가장 큰 두려움 중 하나는 당황하게 되거나 바보 같아 보일까봐이다.', 'feelingAndBehavior'),
      five('나는 권위 있는 누군가와 말하기를 꺼린다.', 'feelingAndBehavior'),
      five('다른 누군가 앞에서 떨거나 떨리는 것이 나를 괴롭게 한다.', 'feelingAndBehavior'),
    ],
  },
  {
    key: 'asrs',
    title: '설문조사6',
    description: ['아래 질문을 읽고, 지난 6개월 동안 귀하가 어떻게 느끼고 행동하였는지를 가장 잘 설명하는 칸에 체크해 주세요.'],
    items: [
      five('어떤 일의 어려운 부분은 끝내 놓고, 그 일을 마무리를 짓지 못 해 곤란을 겪은 적이 있습니까?', 'feelingAndBehavior'),
      five('체계가 필요한 일을 해야 할 때 순서대로 진행하기 어려운 경우 가 있습니까?', 'feelingAndBehavior'),
      five('약속이나 해야 할 일을 잊어버려 곤란을 겪은 적이 있습니까?', 'feelingAndBehavior'),
      five('골치 아픈 일은 피하거나 미루는 경우가 있습니까?', 'feelingAndBehavior'),
      five('오래 앉아 있을 때, 손을 만지작거리거나 발을 꼼지락거리는 경우가 있습니까?', 'feelingAndBehavior'),
      five('마치 모터가 달린 것처럼, 과도하게 혹은 멈출 수 없이 활동을 하는 경우가 있습니까?', 'feelingAndBehavior'),
      five('지루하고 어려운 일을 할 때, 부주의해서 실수를 하는 경우가 있습니까?', 'feelingAndBehavior'),
      five('지루하고 반복적인 일을 할 때, 주의 집중이 힘든 경우가 있습니까?', 'feelingAndBehavior'),
      five('대화 중, 특히 상대방이 당신에게 직접적으로 말하고 있을 때에도, 집중하기 힘든 경우가 있습니까?', 'feelingAndBehavior'),
      five('집이나 직장에서 물건을 엉뚱한 곳에 두거나 어디에 두었는지 찾기 어려운 경우가 있습니까?', 'feelingAndBehavior'),
      five('주변에서 벌어지는 일이나 소음 때문에 주의가 산만해지는 경우가 있습니까?', 'feelingAndBehavior'),
      five('회의나 다른 사회적 상황에서 계속 앉아 있어야 함에도 잠깐씩 자리를 뜨는 경우가 있습니까?', 'feelingAndBehavior'),
      five('안절부절 못하거나 조바심하는 경우가 있습니까?', 'feelingAndBehavior'),
      five('혼자 쉬고 있을 때, 긴장을 풀거나 마음을 편하게 갖기 어려운 경우가 있습니까?', 'feelingAndBehavior'),
      five('사회적 상황에서 나 혼자 말을 너무 많이 한다고 느끼는 경우가 있습니까?', 'feelingAndBehavior'),
      five('대화 도중 상대방이 말을 끝내기 전에 끼어들어 상대방의 말을 끊는 경우가 있습니까?', 'feelingAndBehavior'),
      five('차례를 지켜야 하는 상황에서 자신의 차례를 기다리는 것이 어려운 경우가 있습니까?', 'feelingAndBehavior'),
      five('다른 사람이 바쁘게 일할 때, 방해되는 행동을 하는 경우가 있습니까?', 'feelingAndBehavior'),
    ],
  },
  {
    key: 'ep',
    title: '설문조사7',
    description: ['다음 사진을 보고 떠오르는 감정을 선택하고, 선택한 감정의 정도를 체크해주세요.'],
    items: [], // 런타임에 EP_SURVEY_NEUTRAL_IMAGES에서 10장 무작위 선택 (EP_SLIDER)
  },
];

/** 설문 카테고리 순서 */
export const SURVEY_CATEGORY_ORDER = SURVEY_CATEGORIES.map((c) => c.key);

/** 카테고리별 총 문항 수 (EP는 10장 고정) */
export const SURVEY_CATEGORY_TOTAL: Record<string, number> = SURVEY_CATEGORIES.reduce(
  (acc, c) => ({ ...acc, [c.key]: c.key === 'ep' ? 10 : c.items.length }),
  {} as Record<string, number>,
);

/** 설문 전체 문항 수 */
export const SURVEY_TOTAL_ITEMS = SURVEY_CATEGORY_ORDER.reduce(
  (sum, k) => sum + (SURVEY_CATEGORY_TOTAL[k] || 0),
  0,
);
