소개
시도하고자 했던 것
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:migrateStep 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:stringStep 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:textStep 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
endStep 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가 알아서 최적의 방법을 제안합니다.
시행착오
PostgreSQL 연결 문제: Codespace에서 PostgreSQL 권한 설정이 복잡해서 SQLite로 우선 진행
마이그레이션 파일 비어있음:
rails generate migration명령어가 제대로 전달되지 않아 수동으로 파일 수정따옴표 인코딩 문제: 터미널에서 한글과 특수문자 처리 시 주의 필요
도움이 필요한 부분
PostgreSQL 설정 최적화 (production 환경 대비)
310건 실제 상담 데이터 마이그레이션 방법
5. 앞으로의 계획
단기 계획 (이번 주)
310건 실제 명리 상담 데이터 입력
웹 인터페이스 구축 (프로필/절기 조회)
데이터 입력 폼 개발
중기 계획 (1개월)
Dify AI 플랫폼 연동
RAG 기반 명리 상담 시스템 구축
112만 건 조합 데이터 생성 (60간지 × 12월 × 60일주 × 13시 × 2성별)
장기 계획 (6개월)
UNESCO 디지털 문화유산 신청 준비
모바일 앱 개발
오픈소스 커뮤니티 공개
도움 받은 글 (옵션)
한국천문연구원(KASI) 절기 데이터: https://astro.kasi.re.kr
Rails 8.1 공식 문서: https://guides.rubyonrails.org
GitHub Codespaces 가이드: https://docs.github.com/codespaces