운명:8

8체질부터 주역까지, 9개 운명 도메인을 한 곳에서.
AI와 고전이 만나 당신의 오늘을 해석합니다.

Gemini 2.5 face-api.js PWA Free
➜ 바로 체험하기
What is this?

당신의 운명을 한눈에

운명:8은 9개 운명 도메인을 단일 모바일 웹앱에 통합한 플랫폼입니다. 8체질 자가진단, 타로, 사주, 운세, 연애 매칭, 관상, 손금, 꿈해몽, 주역 — 각 분야를 AI·고전 엔진으로 실제 분석하고 상담사 톤 해설까지 자동 생성합니다.

기존 운세 앱들이 광고·결제 유도에 바쁘다면, 운명:8은 무료로 고전과 AI의 만남을 체험하는 데 집중합니다. 이 가이드는 운명:8이 어떤 기술로 9개 도메인을 해석하는지, 그리고 어떻게 써야 내 삶에 실제로 쓸모가 있는지 정리합니다.

Why 9?

동서양 점술의 9가지 축

운명을 읽는 방법은 크게 세 갈래로 나뉩니다.

이 네 축을 9개 도메인으로 세분화해서, 사용자가 원하는 관점 어디서든 자신의 오늘을 해석할 수 있도록 설계했습니다.

Pipeline Overview

분석 파이프라인

1

입력 수집

생년월일 · 성별 · 질문 · 사진(얼굴·손바닥) · 꿈 텍스트 등 도메인별 최소 입력. 모든 데이터는 브라우저 localStorage에만 저장, 서버 송신 없음.

2

엔진 분석

각 도메인 전용 엔진이 고전 규칙을 적용합니다. 사주는 십간십이지, 주역은 64괘, 관상은 face-api.js CNN, 손금은 Gemini Vision.

3

점수화 + 카테고리화

총운 / 연애 / 재물 / 건강처럼 카테고리 축으로 점수를 산출합니다. 각 점수는 0~100 스케일로 비교 가능하도록 정규화.

4

AI 해설 생성

Gemini 2.5 Flash가 상담사 톤으로 400~600자 해석문을 작성합니다. 점수 뿐 아니라 생애기(학업/경력/성숙/지혜)별 보이스까지 반영.

5

교차 검증

연애 매칭은 체질 궁합 + 띠 궁합 + 오형 매칭을 삼중 교차. 단일 점괘가 아닌 여러 축의 합의로 신뢰도를 보강합니다.

핵심 원칙

운명은 결정론이 아닙니다

운명:8은 고전과 AI로 가능성의 지도를 그립니다. 미래를 단정하지 않고, 오늘의 선택이 어떤 방향으로 기우는지 관점을 제공합니다.

TIP

점수가 낮게 나왔다고 낙심할 필요 없습니다. 각 카드는 "오늘 어디에 더 주의할까"를 알려주는 나침반일 뿐. 결과 카드 하단의 AI 해설에서 실질적 행동 팁을 확인하세요.

9 Domains

9개 도메인 한눈에 보기

8체질 진단

15+4문항 자가진단

🔮

타로

질문 + 3카드 해석

📅

사주

십간십이지 8자

🌟

운세

생년별 5년 예측

💕

연애 매칭

체질+띠 삼중

👤

관상

face-api CNN 분석

손금

Gemini Vision

💤

꿈해몽

상징 5축 + 점수

주역

64괘 + 변괘

Detail · 도메인별 방법론
☯ 8체질

8체질 건강 진단

이레한의원 강의록 기반. 성격·체형·질병·식성 15문항 + 카드형 본능 4문항으로 8체질(금양/금음/목양/목음/토양/토음/수양/수음) 판별.

결과: 체질별 GOOD/BAD 식품, 생활수칙, 성격 프로필, 직업 궁합, 강의록 기반 쌍 비교까지.

🔮 타로

질문 + 3카드 해석

메이저 아르카나 기반. 질문 입력 → 3장 무작위 뽑기(정·역 포함) → 과거/현재/미래 배치. 카드 조합과 정역에 따라 점수+티어+AI 해설.

활용: 중요한 결정 앞에서 관점 정리용. "이 제안을 받아도 될까?" 같은 구체적 질문에 더 좋은 답.

📅 사주

십간십이지 사주 분석

생년월일시 → 연·월·일·시주 4기둥 계산 → 천을귀인·도화살·공망 등 신살 추출. 일간(태양격) 중심으로 십성(비견/겁재/식신/상관...) 관계 분석.

탭: 총운 / 연애 / 재물 / 건강 / 직업 / 건강 6개. 탭 전환 시 AI 해설 재생성.

🌟 운세

생년카드 · 5년 예측

사용자의 5개 띠 동기 생년(예: 양띠 67/79/91/03/15)을 각기 다른 카드로 보여줍니다. 생애기(학업·경력·성숙·지혜)별 보이스를 입혀 같은 띠라도 카드가 전부 다름.

v7.5에서 STAGE_VOICE 16개 프리픽스 통합. 학업기엔 "학생 시기의 당신에겐 —", 경력기엔 "커리어를 쌓는 지금 —" 식으로.

💕 연애 매칭

체질 + 띠 + 오형 삼중

Mode A: 내 체질·띠로 Top3 이상형 추천. Mode B: 두 사람의 생년월일로 궁합 점수(6축 분해).

교차 검증: 체질 궁합(금양+목음 등) · 띠 궁합 · 손 오형 매칭 모두 합산. 단일 점괘보다 견고.

👤 관상

face-api.js 온디바이스 CNN

브라우저에서 실행되는 TensorFlow.js 신경망으로 실제 얼굴 68개 랜드마크를 추출. 오형(金木水火土) 판별 + 10부위 분석 + 기색 추정.

사진은 서버에 올라가지 않습니다. 전부 브라우저 내부 처리. 개인정보 걱정 없음.

✋ 손금

Gemini Vision + confidence 배지

손바닥 사진 → Cloudflare Pages Functions 프록시 → Gemini 2.5 Flash Lite가 생명선·두뇌선·감정선·운명선·결혼선과 지문·손 오형을 실제 판독.

v7.5: Gemini가 불확실한 경우 ⚠️ "AI 판독 불확실" 배지 자동 표시. 밝은 곳에서 정면 재촬영 유도.

💤 꿈해몽

상징 5축 + AI 종합

꿈 이야기를 한두 문장으로 입력 → 5개 상징축(물·동물·사람·장소·행위)으로 분해 → 한국 전통 꿈풀이 + Gemini 상담사 톤 해설.

태몽·길몽·흉몽만이 아니라 심리적 맥락까지 반영. 같은 뱀꿈이라도 상황에 따라 해석이 달라짐.

☯ 주역

64괘 · 본괘 + 변괘

질문 → 6효 동전점(또는 무작위 추출) → 본괘·변괘 확정. 각 괘는 카테고리(사업/연애/건강/결정)별로 다른 주석을 제공.

변괘가 있는 경우 "지금은 A인데 B로 변한다"는 시간 축 해석까지. 고전 주역의 괘사·효사를 현대어로 풀어 제공.

Architecture

단일 HTML SPA + 서버리스 AI

운명:8은 10,000줄 단일 HTML 파일입니다. 번들러·프레임워크 없이 순수 ES5 JavaScript로 9개 도메인을 구현했습니다. 빠른 로딩 + PWA 오프라인 캐시 + 단일 파일 배포의 장점.

AI Stack

9개 도메인 × AI 통합

도메인엔진AI 역할
8체질규칙 기반 점수결과 상담사 톤 해설
타로카드 조합 규칙질문 맥락 해석
사주십간십이지 연산탭별 개인화 해설
운세생년 × 생애기카드별 차별 문구
매칭삼중 궁합 점수Top3 조합 이유
관상face-api.js CNN오형+10부위 해석
손금Gemini Vision판독 + 신뢰도 배지
상징 5축심리 맥락 생성
주역64괘 규칙괘사·효사 현대어
NOTE

관상은 온디바이스(브라우저 내부), 손금은 Cloudflare Functions 프록시 경유. 사진은 절대 Sean의 서버에 저장되지 않습니다. Gemini 요청은 일회성, 응답 후 즉시 폐기.

Engineering Detail

주요 기술 포인트

PWA

Service Worker 자동 업데이트

HTML은 network-first, 정적 자원은 cache-first. 새 배포 시 캐시 키(VERSION)가 바뀌어 구 캐시 자동 삭제. skipWaiting + controllerchange로 자동 리로드.

SECURITY

API 키 제로 노출

Gemini API 키는 Cloudflare 환경변수에만 저장. 클라이언트 코드·git 이력에 노출 0. 프론트는 /api/palm-analyze 같은 동일 오리진 엔드포인트만 호출.

UX

Toast 알림 + 생애기 보이스

v7.5에서 모든 alert() 9곳을 커스텀 Toast로 교체. 모바일 UX 저해 없이 부드러운 피드백. 운세는 학업/경력/성숙/지혜 4단계 생애기별로 다른 톤의 해설.

FALLBACK

AI 실패 시 graceful 처리

Gemini 응답이 스키마 벗어날 경우 필드별 default로 폴백. 2개 이상 폴백되면 confidence: 'low' 반환, 클라이언트가 ⚠️ 경고 배지로 사용자에게 고지.

DEPLOY

단일 명령 배포

npx wrangler pages deploy dist --project-name=unmyeong --branch=main 한 줄. 배포 즉시 unmyeong.pages.dev 반영. 롤백도 wrangler deployment list로 과거 배포 URL 바로 복구 가능.

Build Walkthrough

운명:8을 직접 만든다면

운명:8은 프레임워크 없이 순수 HTML + JS로 만든 단일 파일 앱입니다. 빌드 도구·Node 서버·데이터베이스 없이도 9개 도메인 + AI 해설 + PWA까지 구현 가능하다는 걸 보여주려 이 구조를 택했습니다. 이 탭은 처음부터 끝까지 어떤 순서로 쌓아올렸는지를 공개합니다.

대상 독자

HTML/CSS/JS 기초를 아는 1인 개발자. 프레임워크 경험 없어도 OK. 각 단계마다 "이때 막히면 이렇게" 팁 포함.

Phase 0 · 준비물

필요한 계정과 도구

초기 비용 0원. Cloudflare 무료 티어는 하루 100,000회 요청, Gemini 무료는 분당 15회 호출까지 허용.

Phase 1 · 뼈대

단일 HTML 파일 + 9개 화면 라우팅

STEP 1

index.html 한 장으로 시작

9개 도메인을 각각 <section id="view-xxx">로 나누고 기본은 display:none. 현재 뷰 전환은 location.hash로 제어.

SPA 라우터 라이브러리 불필요. window.onhashchangeview-* 토글.

STEP 2

상태는 localStorage에 저장

DB 없음. 사용자 체질·사주 결과는 STATE 오브젝트로 관리 후 localStorage.setItem('unmyeong_state', JSON.stringify(STATE)). 앱 시작 시 로드.

중요한 필드만 저장하고 나머지는 세션 메모리. 이미지(얼굴·손)는 저장하지 않음.

STEP 3

네비게이션 + 홈 카드

홈 화면 9개 카드 그리드. 각 카드 터치 → location.hash = '#view-tarot' 같은 식. 뒤로가기는 브라우저 기본 기능 그대로.

뒤로가기 제스처를 직접 구현하지 마세요. history.pushState만 잘 쓰면 모바일 뒤로가기가 자연스럽게 동작.

Phase 2 · 고전 엔진

AI 없이도 동작하는 규칙 엔진

AI를 붙이기 전에 모든 도메인이 고전 규칙만으로 결과를 내도록 만듭니다. AI는 해설 레이어로 나중에.

사주

십간십이지 계산

입력: 생년월일시 → 연주·월주·일주·시주 4기둥 산출. 갑자년표·월주 공식·일주 만세력(JS 함수 테이블)·시주 공식. 핵심 코드 200줄 정도.

만세력 데이터는 1900~2100 정도 배열 하나로 커버. 외부 API 필요 없음.

타로

78장 카드 + 정역 + 3장 뽑기

메이저 22 + 마이너 56 카드 오브젝트 배열. shuffle() → 3장 slice → 각 카드마다 50% 확률로 reversed 플래그. 카드 조합별 가중치는 테이블로.

주역

64괘 + 효 변괘

6효를 각각 2.5% 확률로 노양/노음(변효)으로 돌림. 본괘 이진코드 → 괘사 테이블 조회. 변효가 있으면 변괘까지 같이 제공.

8체질

15문항 가중치 매트릭스

문항별 답을 8체질 × 문항 가중치 매트릭스에 내적. 최고점 체질이 결과. 체질별 식단·수칙 테이블은 이레한의원 강의록 기반으로 구조화.

Phase 3 · AI 해설 레이어

Cloudflare Functions + Gemini 통합

STEP 1

functions/api/commentary.js 생성

Cloudflare Pages는 functions/ 폴더를 자동으로 서버리스 API로 배포. /api/commentary 엔드포인트가 프론트에서 fetch 가능.

키는 env.GEMINI_API_KEY로만 접근. 클라이언트 코드에는 키 노출 0.

STEP 2

프롬프트 엔지니어링

"당신은 30년 경력 운명 상담사입니다. 400~600자, 존댓말, 점수는 언급하지 말고 카테고리 축으로 말하세요." 식으로 톤과 길이를 명시. JSON 스키마로 응답 강제.

Gemini의 response_mime_type: 'application/json' 옵션으로 구조화 응답 강제. 파싱 실패 방어.

STEP 3

비전(손금) 별도 엔드포인트

/api/palm-analyze는 이미지를 Gemini 2.5 Flash Lite에 전달. 응답 스키마에 lines·fingers·handShape 필드 정의. 필드 벗어나면 fallback 카운터 증가.

fallback ≥2 → confidence: 'low' 반환. 프론트는 이 플래그로 ⚠️ 배지 표시.

STEP 4

관상은 온디바이스

face-api.js를 CDN으로 로드. 모델 4개(~4MB)는 /models 경로에 정적 배포. 얼굴 사진을 캔버스로 처리 후 68 랜드마크 추출. 서버 송신 없음.

Phase 4 · PWA 전환

홈 화면 설치 + 오프라인 지원

STEP 1

manifest.json 작성

name, short_name, icons 192/512, display: 'standalone', theme_color. HTML에 <link rel="manifest"> 추가하면 끝.

STEP 2

Service Worker 등록

sw.js에 VERSION 상수 + install/activate/fetch 핸들러. HTML은 network-first(항상 최신), 정적은 cache-first(빠른 로딩).

새 배포 때 VERSION 문자열만 바꾸면 구 캐시 자동 삭제. 핵심 한 줄.

STEP 3

자동 업데이트 알림

skipWaiting() + clients.claim() + 메인에서 controllerchange 감지 시 location.reload(). 사용자 개입 없이 새 버전 자동 반영.

무작정 리로드하지 말고, 진행 중 입력이 있다면 Toast로 "새 버전 준비됨" 안내 후 유저 확인.

Phase 5 · 배포 + 반복

운영 루프

DEPLOY

한 줄 배포

npx wrangler pages deploy dist --project-name=unmyeong --branch=main. 30초 안에 unmyeong.pages.dev 반영. main 브랜치가 프로덕션 — 다른 이름은 Preview로 감.

VERIFY

배포 직후 curl 검증

wrangler 성공 메시지만 믿지 말고 curl -s https://unmyeong.pages.dev | grep VERSION으로 실제 반영 확인. 엉뚱한 브랜치에 배포한 적 실제로 여러 번 있음.

ROLLBACK

과거 버전 즉시 복구

npx wrangler pages deployment list --project-name=unmyeong로 전체 배포 이력 확인. 특정 deployment를 다시 프로덕션으로 올리기 한 번에 가능.

ITERATE

사용자 피드백으로 버전 올리기

v7.5 기준 개선: STAGE_VOICE(생애기별 보이스) / 손금 confidence 배지 / alert→Toast 교체. 각 버전 차이는 ver-badge 한 줄에 기록 → 사용자도 현재 버전 인지.

배포할 때마다 VERSION 문자열 업데이트 필수. 안 하면 PWA 캐시 때문에 사용자는 구버전 계속 봄.

핵심 교훈

운명:8을 만들며 배운 것

소스 구조 더 깊이 보기

실제 코드는 GitHub에 공개 예정 · 현재는 라이브 앱 + 이 가이드로 전체 구조 파악 가능

➜ 운명:8 라이브 데모
Getting Started

처음 쓰는 법

  1. unmyeong.pages.dev 접속 — 모바일·PC 모두 OK
  2. 홈 화면에 추가 (PWA) — 브라우저 공유 메뉴 → 홈 화면에 추가
  3. 8체질 진단부터 시작 — 15+4문항, 3분 소요. 이후 다른 기능에서 체질 정보 재사용
  4. 사주 입력 — 생년월일시 한 번 입력하면 운세·매칭·주역에서 재활용
  5. 궁금한 도메인 탐색 — 타로는 구체적 질문, 손금은 밝은 곳 정면 사진
Best Practices

더 정확한 결과를 위한 팁

🔮 타로 질문 작성법

"이 사람과 결혼해도 될까?" (X) → "이 사람과의 관계에서 내가 지금 주의할 점은?" (O)

예/아니오 질문보다 관점 질문이 더 유용한 해석을 끌어냅니다.

👤 관상 사진

정면, 밝은 자연광, 안경·모자 없이, 표정 없이. 머리카락이 이마를 가리지 않게.

face-api가 68개 랜드마크를 잡아야 정확도 높아집니다. 각도 틀어진 사진은 오형 오판 가능.

✋ 손금 사진

손바닥 전체가 프레임에 들어오게, 손가락 끝 포함. 밝고 균일한 조명. 선이 또렷이 보이도록.

흐린 사진이면 ⚠️ 배지가 뜹니다. 그때는 더 밝은 곳에서 재촬영 후 다시 업로드.

💤 꿈 입력

"큰 뱀이 물을 건너 내 품으로 왔어" 한두 문장이면 충분. 감정·장소·대상 포함 시 더 정확.

너무 짧으면 상징 추출이 약해지고, 너무 길면 초점이 흐려집니다. 두 문장 원칙.

☯ 주역 질문

주역은 중요한 결정에 쓰세요. "오늘 점심 뭐 먹지?" 말고 "이 회사로 이직해야 할까?" 수준.

같은 질문을 여러 번 반복하지 마세요. 주역은 "첫 답이 진짜 답"이라는 원칙이 있습니다.

FAQ

자주 묻는 질문

무료인가요?

네. 9개 도메인 전부 무료. 향후 결제 기능은 추가될 수 있지만 기본 분석은 영구 무료.

사진이 서버에 저장되나요?

아니요. 관상은 브라우저 안에서 처리되고, 손금은 Gemini로 한 번 프록시된 뒤 즉시 폐기. Sean 서버에는 저장 안 됨.

왜 매일 결과가 바뀌나요?

운세·주역은 날짜(일진)가 변수로 들어가기 때문. 타로는 카드가 매번 무작위. 사주·체질·관상은 본래 고정.

이 앱을 믿어도 되나요?

고전 규칙은 엄격히 적용, AI 해설도 전문가 톤. 다만 삶의 최종 결정은 본인의 몫. 참고 자료로 활용하세요.

지금 바로 운명:8 체험

9개 도메인 전부 무료 · 홈 화면 설치 가능

➜ 운명:8 열기