Phase 2

논리의 심장: 사주 및 타로 엔진 개발

1. 고대 지혜의 디지털 변환: 만세력의 정교함

Phase 1에서 구축한 아름다운 외형 속에 채워질 진정한 가치는 바로 '정확한 분석'에 있었습니다. 사주명리학은 단순한 미신이 아닌, 수천 년간 축적된 시간의 통계학입니다. 우리는 이를 디지털 환경에서 완벽하게 재현하기 위해 가장 먼저 '만세력 엔진' 개발에 착수했습니다. 단순히 생년월일을 입력받는 수준을 넘어, 절기(節氣)의 시작점을 분 단위까지 정확하게 계산하는 알고리즘을 구축하는 것이 이번 단계의 핵심 목표였습니다.

가장 큰 기술적 난관은 '시간의 보정'이었습니다. 우리가 흔히 사용하는 표준시는 인위적으로 정해진 것이기에, 실제 태양이 머리 위에 오는 시점과는 차이가 발생합니다. 우리는 사용자가 태어난 경도에 따라 오차를 보정하는 '진태양시(True Solar Time)' 계산 로직을 도입했습니다. 이를 통해 사주 팔자의 구성이 한 끗 차이로 바뀌는 민감한 사례들까지 잡아낼 수 있는 고도의 정밀성을 확보했습니다. 고대의 지혜가 최신 자바스크립트 코드와 만나는 흥미로운 순간이었습니다.

사주 엔진의 기술적 도전

  • 60갑자 순환 알고리즘: 10천간과 12지지의 조합이 60년을 주기로 오차 없이 순환하도록 설계된 논리 구조입니다.
  • 신살(神殺) 판단 시스템: 백호살, 괴강살, 귀인 등 20여 가지 이상의 복잡한 신살 조건을 데이터베이스화하여 실시간 분석을 가능케 했습니다.
  • 오행(五行) 에너지 수치화: 목, 화, 토, 금, 수의 기운을 사주 원국에서 추출하여 사용자가 한눈에 이해할 수 있도록 시각적 차트 데이터로 변환했습니다.

2. React로 빚어낸 인터랙티브 타로 경험

사주가 정교한 논리의 영역이라면, 타로는 사용자와의 '인터랙션'과 '몰입감'이 중요한 영역이었습니다. 우리는 타로 서비스의 반응성을 극대화하기 위해 React 프레임워크를 독립적으로 적용했습니다. 사용자가 카드를 섞고, 신중하게 선택하는 과정을 웹 환경에서 직관적으로 느낄 수 있도록 상태 관리(State Management)를 정교하게 설계했습니다.

78장의 타로 카드 각각은 단순한 이미지가 아닌, 방대한 키워드와 원소(Element) 데이터를 포함한 하나의 객체로 관리됩니다. 사용자가 카드를 클릭할 때 발생하는 '플립(Flip)' 애니메이션은 단순한 시각 효과를 넘어, 운명이 공개되는 찰나의 긴장감을 전달하도록 0.8초의 정교한 타이밍으로 조정되었습니다. 또한 모바일 기기에서의 터치 반응 속도를 0.1초 단위로 튜닝하여, 실제 카드를 만지는 듯한 매끄러운 UX를 완성했습니다.

// Tarot Deep Interpretation Logic
const interpretReading = (drawnCards) => {
  const dominantElement = calculateElement(drawnCards);
  const combinedMeaning = drawnCards.map(c => c.keywords).join(', ');
  return `당신의 기운은 ${dominantElement}이며, 주요 키워드는 ${combinedMeaning}입니다...`;
};

3. 루나(Luna)의 심층 해석 로직 완성

우리는 단순히 카드의 사전적 의미만 나열하는 서비스가 되고 싶지 않았습니다. 타로 마스터 '루나'라는 가상의 페르소나를 통해, 선택된 카드들의 유기적인 연관성을 해석해주는 알고리즘을 개발했습니다. 정방향과 역방향의 조합, 그리고 카드들 사이의 원소적 상충과 보완 관계를 분석하여 한 편의 이야기처럼 흘러가는 리딩 시스템을 구축했습니다.

4. 데이터와의 사투를 마치며

Phase 2를 통해 '별자리 다방'은 비로소 지혜를 전달하는 '두뇌'를 갖게 되었습니다. 수만 개의 텍스트 데이터와 복잡한 조건문 사이에서 헤매기도 했지만, 정확한 사주 풀이를 보고 신기해하는 사용자의 반응은 그 모든 고생을 보상해주었습니다. 이제 이 강력한 엔진을 지탱할 든든한 서버 인프라와 자동화 시스템이 필요해졌습니다. 다음 Phase에서는 Firebase와 GitHub Actions를 활용한 인프라 구축기를 소개해 드리겠습니다.

← 목록으로 돌아가기