/**
 * 성향 프로파일 3축별 유형 정의 (PRD §3.7.2~3.7.4)
 * - AXIS1: 1차 — 정서 반응성 (Emotion & Vulnerability)
 * - AXIS2: 2차 — 인지 효율성 (Cognitive & Attention)
 * - AXIS3: 3차 — 행동 제어력 (Behavioral & Motor)
 *
 * 3자리 성향 코드(예: RSR)의 각 자리를 축별 유형으로 해석해 표시한다.
 */

export interface AxisTypeInfo {
  /** 영문 프로필명 (예: Resilient) */
  en: string;
  /** 한글 유형명 (예: 회복·유연형) */
  ko: string;
}

export const AXIS1_TYPES: Record<string, AxisTypeInfo> = {
  V: { en: 'Vulnerable', ko: '민감·취약형' },
  S: { en: 'Stoic', ko: '담담·차분형' },
  E: { en: 'Empathetic', ko: '공감·교감형' },
  A: { en: 'Absorbed', ko: '내향·침잠형' },
  R: { en: 'Resilient', ko: '회복·유연형' },
  G: { en: 'Guarded', ko: '방어·경계형' },
};

export const AXIS2_TYPES: Record<string, AxisTypeInfo> = {
  D: { en: 'Distracted', ko: '산만·분산형' },
  F: { en: 'Focused', ko: '몰입·고정형' },
  I: { en: 'Insightful', ko: '통찰·지능형' },
  O: { en: 'Overloaded', ko: '과부하형' },
  A: { en: 'Analytical', ko: '분석·논리형' },
  S: { en: 'Stagnant', ko: '정체·느린형' },
};

export const AXIS3_TYPES: Record<string, AxisTypeInfo> = {
  X: { en: 'Explosive', ko: '폭발·충동형' },
  C: { en: 'Controlled', ko: '절제·제어형' },
  R: { en: 'Rigid', ko: '고착·강박형' },
  P: { en: 'Passionate', ko: '추진·활동형' },
  M: { en: 'Meticulous', ko: '정교·치밀형' },
  L: { en: 'Lethargic', ko: '무기력·지연형' },
};

/** 코드의 1/2/3번째 자리 순서대로 매핑할 축 테이블 */
export const AXIS_TABLES = [AXIS1_TYPES, AXIS2_TYPES, AXIS3_TYPES] as const;

/**
 * 3자리 성향 코드 → 각 자리의 유형 정보 배열
 * 예: 'RSR' → [Resilient(회복·유연형), Stagnant(정체·느린형), Rigid(고착·강박형)]
 */
export function decodeProfileCode(code: string): AxisTypeInfo[] {
  return AXIS_TABLES.map((table, i) => table[code[i]]).filter(
    (t): t is AxisTypeInfo => Boolean(t),
  );
}
