Claude AI와 함께 107년 절기 데이터베이스 구축하기 - 한바둑 명리학 시스템 Day 1

소개

시도하고자 했던 것

30년간 축적된 명리학(사주) 상담 데이터를 체계적인 데이터베이스로 구축하여, AI 기반 명리 상담 시스템의 기반을 마련하고자 했습니다.

그 이유

  • 문화 유산 보존: 한국 전통 명리학 지식을 디지털화하여 UNESCO 문화유산 등재 추진

  • 정확도 향상: 기존 50% 수준의 명리 상담 적중률을 80-90%까지 끌어올리기 위한 데이터 기반 구축

  • AI 연동 준비: Dify AI 플랫폼과 연동하여 자동화된 명리 상담 서비스 개발

명리학에서 가장 중요한 것은 절기(節氣) 데이터입니다.

사주팔자의 월주(月柱)를 결정하는 기준이 되기 때문에, 분 단위까지 정확한 절기 데이터가 필수입니다.

진행 방법

사용 도구

  • Claude AI (Opus): 전체 개발 과정 페어 프로그래밍

  • GitHub Codespaces: 클라우드 개발 환경

  • Ruby on Rails 8.1.1: 웹 프레임워크

  • SQLite: 데이터베이스 (추후 PostgreSQL 전환 예정)

진행 과정

Step 1: 개발 환경 설정

GitHub Codespaces에서 Rails 프로젝트를 시작했습니다. PostgreSQL 연결 문제가 있어서 먼저 SQLite로 진행하기로 결정했습니다.

사용 프롬프트:

여기로 왔어요. "@hmhan2016-crypto ➜ /workspaces/hanbadook-rails (main) $"

Claude가 자동으로 환경을 확인하고 필요한 설정을 안내해주었습니다.

Step 2: 기본 테이블 생성

Profile(프로필)과 Jeolgi(절기) 테이블을 생성했습니다.

bash

# 프로필 테이블 생성
rails generate model Profile name:string gender:string birth_date:date birth_time:string lunar_type:string

# 절기 테이블 생성
rails generate model Jeolgi year:integer name:string solar_date:date solar_time:time

# 마이그레이션 실행
rails db:migrate

Step 3: 107년 절기 데이터 대량 입력

1920년~2026년까지 107년간의 24절기 데이터(총 2,568건)를 입력했습니다.

핵심 프롬프트:

107년 데이터 다 처리

Claude가 KASI(한국천문연구원) 공식 데이터를 기반으로 시드 파일을 자동 생성해주었습니다.

ruby

# db/seeds.rb 일부
KASI_YEARS = {
  2024 => "소한,SH,01-06,05:49|대한,DH,01-20,22:07|입춘,IC,02-04,16:27|...",
  2025 => "소한,SH,01-05,11:33|대한,DH,01-20,04:00|입춘,IC,02-03,22:10|...",
  # ... 107년 데이터
}

bash

# 시드 실행 결과
rails db:seed

# 출력:
# 1920년 완료
# 1930년 완료
# ...
# 2020년 완료
# ==================================================
# 총 2568개 절기 데이터 입력 완료!
# 연도: 1920-2026 (107년)

Step 4: Profile 테이블 확장 (명리 분석용)

기본 프로필에 사주팔자, 오행, 공망 등 명리학 필드를 추가했습니다.

bash

rails generate migration ExpandProfilesForMyeongli \
  birth_time_code:string \
  is_lunar:boolean \
  myeongsik:string \
  daeunsoo:integer \
  ohaeng:string \
  gongmang:string \
  cheonulgwiin:string \
  year_ganji:string \
  month_ganji:string \
  day_ganji:string \
  time_ganji:string

Step 5: 연관 테이블 생성 (원국, 대운, 세운)

bash

# 원국 테이블 (성품, 진로, 재물, 가족 해석)
rails generate model Wonkuk profile:references seongpum:text jinro:text jinro_detail:text jaemul:text family_parents:text family_spouse:text family_children:text

# 대운 테이블 (10년 단위 운세)
rails generate model Daeun profile:references period:string name:string age_start:integer age_end:integer summary:text jaemul:text health:text lawsuit:text environment:text

# 세운 테이블 (연간 운세)
rails generate model Sewun profile:references year:integer age:integer name:string summary:text jaemul:text health:text social:text

Step 6: 모델 관계 설정

ruby

# app/models/profile.rb
class Profile < ApplicationRecord
  has_one :wonkuk, dependent: :destroy
  has_many :daeuns, dependent: :destroy
  has_many :sewuns, dependent: :destroy
  
  def saju_display
    "#{year_ganji} #{month_ganji} #{day_ganji} #{time_ganji}"
  end
end

Step 7: 테스트 및 Git 저장

bash

# 테스트 프로필 생성
rails runner "Profile.create!(name: '테스트', gender: '남', birth_date: '1990-01-15', myeongsik: '경오 정축 갑진 무진', year_ganji: '경오', month_ganji: '정축', day_ganji: '갑진', time_ganji: '무진')"

# Git 커밋 & 푸시
git add .
git commit -m "Day 1: 한바둑 Rails 환경 구축 완료"
git push

결과와 배운 점

결과

항목내용절기 데이터107년 (1920-2026), 2,568건 ✅Profile 테이블19필드 (기본 + 사주 + 명리) ✅Wonkuk 테이블원국 해석 (성품, 진로, 재물, 가족) ✅Daeun 테이블대운 정보 ✅Sewun 테이블세운 정보 ✅모델 관계has_many / belongs_to 설정 ✅

배운 점 & 꿀팁

🍯 꿀팁 1: Codespace 여러 개 주의

GitHub Codespaces를 여러 개 만들면 어떤 것이 실제 작업한 것인지 헷갈립니다. "uncommitted changes" 표시가 있는 Codespace가 진짜 작업 중인 환경입니다!

🍯 꿀팁 2: 대량 데이터 입력은 시드 파일로

2,568건의 절기 데이터를 하나씩 입력하면 시간이 오래 걸립니다. Claude에게 시드 파일 생성을 요청하면 한 번에 대량 입력이 가능합니다.

🍯 꿀팁 3: 짧은 프롬프트가 효과적

"107년 데이터 다 처리"처럼 목표만 명확히 전달하면 Claude가 알아서 최적의 방법을 제안합니다.

시행착오

  1. PostgreSQL 연결 문제: Codespace에서 PostgreSQL 권한 설정이 복잡해서 SQLite로 우선 진행

  2. 마이그레이션 파일 비어있음: rails generate migration 명령어가 제대로 전달되지 않아 수동으로 파일 수정

  3. 따옴표 인코딩 문제: 터미널에서 한글과 특수문자 처리 시 주의 필요

도움이 필요한 부분

  • PostgreSQL 설정 최적화 (production 환경 대비)

  • 310건 실제 상담 데이터 마이그레이션 방법


5. 앞으로의 계획

단기 계획 (이번 주)

  • 310건 실제 명리 상담 데이터 입력

  • 웹 인터페이스 구축 (프로필/절기 조회)

  • 데이터 입력 폼 개발

중기 계획 (1개월)

  • Dify AI 플랫폼 연동

  • RAG 기반 명리 상담 시스템 구축

  • 112만 건 조합 데이터 생성 (60간지 × 12월 × 60일주 × 13시 × 2성별)

장기 계획 (6개월)

  • UNESCO 디지털 문화유산 신청 준비

  • 모바일 앱 개발

  • 오픈소스 커뮤니티 공개

도움 받은 글 (옵션)

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요