8체질부터 주역까지, 9개 운명 도메인을 한 곳에서.
AI와 고전이 만나 당신의 오늘을 해석합니다.
운명:8은 9개 운명 도메인을 단일 모바일 웹앱에 통합한 플랫폼입니다. 8체질 자가진단, 타로, 사주, 운세, 연애 매칭, 관상, 손금, 꿈해몽, 주역 — 각 분야를 AI·고전 엔진으로 실제 분석하고 상담사 톤 해설까지 자동 생성합니다.
기존 운세 앱들이 광고·결제 유도에 바쁘다면, 운명:8은 무료로 고전과 AI의 만남을 체험하는 데 집중합니다. 이 가이드는 운명:8이 어떤 기술로 9개 도메인을 해석하는지, 그리고 어떻게 써야 내 삶에 실제로 쓸모가 있는지 정리합니다.
운명을 읽는 방법은 크게 세 갈래로 나뉩니다.
이 네 축을 9개 도메인으로 세분화해서, 사용자가 원하는 관점 어디서든 자신의 오늘을 해석할 수 있도록 설계했습니다.
생년월일 · 성별 · 질문 · 사진(얼굴·손바닥) · 꿈 텍스트 등 도메인별 최소 입력. 모든 데이터는 브라우저 localStorage에만 저장, 서버 송신 없음.
각 도메인 전용 엔진이 고전 규칙을 적용합니다. 사주는 십간십이지, 주역은 64괘, 관상은 face-api.js CNN, 손금은 Gemini Vision.
총운 / 연애 / 재물 / 건강처럼 카테고리 축으로 점수를 산출합니다. 각 점수는 0~100 스케일로 비교 가능하도록 정규화.
Gemini 2.5 Flash가 상담사 톤으로 400~600자 해석문을 작성합니다. 점수 뿐 아니라 생애기(학업/경력/성숙/지혜)별 보이스까지 반영.
연애 매칭은 체질 궁합 + 띠 궁합 + 오형 매칭을 삼중 교차. 단일 점괘가 아닌 여러 축의 합의로 신뢰도를 보강합니다.
운명:8은 고전과 AI로 가능성의 지도를 그립니다. 미래를 단정하지 않고, 오늘의 선택이 어떤 방향으로 기우는지 관점을 제공합니다.
점수가 낮게 나왔다고 낙심할 필요 없습니다. 각 카드는 "오늘 어디에 더 주의할까"를 알려주는 나침반일 뿐. 결과 카드 하단의 AI 해설에서 실질적 행동 팁을 확인하세요.
15+4문항 자가진단
질문 + 3카드 해석
십간십이지 8자
생년별 5년 예측
체질+띠 삼중
face-api CNN 분석
Gemini Vision
상징 5축 + 점수
64괘 + 변괘
이레한의원 강의록 기반. 성격·체형·질병·식성 15문항 + 카드형 본능 4문항으로 8체질(금양/금음/목양/목음/토양/토음/수양/수음) 판별.
결과: 체질별 GOOD/BAD 식품, 생활수칙, 성격 프로필, 직업 궁합, 강의록 기반 쌍 비교까지.
메이저 아르카나 기반. 질문 입력 → 3장 무작위 뽑기(정·역 포함) → 과거/현재/미래 배치. 카드 조합과 정역에 따라 점수+티어+AI 해설.
활용: 중요한 결정 앞에서 관점 정리용. "이 제안을 받아도 될까?" 같은 구체적 질문에 더 좋은 답.
생년월일시 → 연·월·일·시주 4기둥 계산 → 천을귀인·도화살·공망 등 신살 추출. 일간(태양격) 중심으로 십성(비견/겁재/식신/상관...) 관계 분석.
탭: 총운 / 연애 / 재물 / 건강 / 직업 / 건강 6개. 탭 전환 시 AI 해설 재생성.
사용자의 5개 띠 동기 생년(예: 양띠 67/79/91/03/15)을 각기 다른 카드로 보여줍니다. 생애기(학업·경력·성숙·지혜)별 보이스를 입혀 같은 띠라도 카드가 전부 다름.
v7.5에서 STAGE_VOICE 16개 프리픽스 통합. 학업기엔 "학생 시기의 당신에겐 —", 경력기엔 "커리어를 쌓는 지금 —" 식으로.
Mode A: 내 체질·띠로 Top3 이상형 추천. Mode B: 두 사람의 생년월일로 궁합 점수(6축 분해).
교차 검증: 체질 궁합(금양+목음 등) · 띠 궁합 · 손 오형 매칭 모두 합산. 단일 점괘보다 견고.
브라우저에서 실행되는 TensorFlow.js 신경망으로 실제 얼굴 68개 랜드마크를 추출. 오형(金木水火土) 판별 + 10부위 분석 + 기색 추정.
사진은 서버에 올라가지 않습니다. 전부 브라우저 내부 처리. 개인정보 걱정 없음.
손바닥 사진 → Cloudflare Pages Functions 프록시 → Gemini 2.5 Flash Lite가 생명선·두뇌선·감정선·운명선·결혼선과 지문·손 오형을 실제 판독.
v7.5: Gemini가 불확실한 경우 ⚠️ "AI 판독 불확실" 배지 자동 표시. 밝은 곳에서 정면 재촬영 유도.
꿈 이야기를 한두 문장으로 입력 → 5개 상징축(물·동물·사람·장소·행위)으로 분해 → 한국 전통 꿈풀이 + Gemini 상담사 톤 해설.
태몽·길몽·흉몽만이 아니라 심리적 맥락까지 반영. 같은 뱀꿈이라도 상황에 따라 해석이 달라짐.
질문 → 6효 동전점(또는 무작위 추출) → 본괘·변괘 확정. 각 괘는 카테고리(사업/연애/건강/결정)별로 다른 주석을 제공.
변괘가 있는 경우 "지금은 A인데 B로 변한다"는 시간 축 해석까지. 고전 주역의 괘사·효사를 현대어로 풀어 제공.
운명:8은 10,000줄 단일 HTML 파일입니다. 번들러·프레임워크 없이 순수 ES5 JavaScript로 9개 도메인을 구현했습니다. 빠른 로딩 + PWA 오프라인 캐시 + 단일 파일 배포의 장점.
| 도메인 | 엔진 | AI 역할 |
|---|---|---|
| 8체질 | 규칙 기반 점수 | 결과 상담사 톤 해설 |
| 타로 | 카드 조합 규칙 | 질문 맥락 해석 |
| 사주 | 십간십이지 연산 | 탭별 개인화 해설 |
| 운세 | 생년 × 생애기 | 카드별 차별 문구 |
| 매칭 | 삼중 궁합 점수 | Top3 조합 이유 |
| 관상 | face-api.js CNN | 오형+10부위 해석 |
| 손금 | Gemini Vision | 판독 + 신뢰도 배지 |
| 꿈 | 상징 5축 | 심리 맥락 생성 |
| 주역 | 64괘 규칙 | 괘사·효사 현대어 |
관상은 온디바이스(브라우저 내부), 손금은 Cloudflare Functions 프록시 경유. 사진은 절대 Sean의 서버에 저장되지 않습니다. Gemini 요청은 일회성, 응답 후 즉시 폐기.
HTML은 network-first, 정적 자원은 cache-first. 새 배포 시 캐시 키(VERSION)가 바뀌어 구 캐시 자동 삭제. skipWaiting + controllerchange로 자동 리로드.
Gemini API 키는 Cloudflare 환경변수에만 저장. 클라이언트 코드·git 이력에 노출 0. 프론트는 /api/palm-analyze 같은 동일 오리진 엔드포인트만 호출.
v7.5에서 모든 alert() 9곳을 커스텀 Toast로 교체. 모바일 UX 저해 없이 부드러운 피드백. 운세는 학업/경력/성숙/지혜 4단계 생애기별로 다른 톤의 해설.
Gemini 응답이 스키마 벗어날 경우 필드별 default로 폴백. 2개 이상 폴백되면 confidence: 'low' 반환, 클라이언트가 ⚠️ 경고 배지로 사용자에게 고지.
npx wrangler pages deploy dist --project-name=unmyeong --branch=main 한 줄. 배포 즉시 unmyeong.pages.dev 반영. 롤백도 wrangler deployment list로 과거 배포 URL 바로 복구 가능.
운명:8은 프레임워크 없이 순수 HTML + JS로 만든 단일 파일 앱입니다. 빌드 도구·Node 서버·데이터베이스 없이도 9개 도메인 + AI 해설 + PWA까지 구현 가능하다는 걸 보여주려 이 구조를 택했습니다. 이 탭은 처음부터 끝까지 어떤 순서로 쌓아올렸는지를 공개합니다.
HTML/CSS/JS 기초를 아는 1인 개발자. 프레임워크 경험 없어도 OK. 각 단계마다 "이때 막히면 이렇게" 팁 포함.
*.pages.dev 서브도메인 사용초기 비용 0원. Cloudflare 무료 티어는 하루 100,000회 요청, Gemini 무료는 분당 15회 호출까지 허용.
9개 도메인을 각각 <section id="view-xxx">로 나누고 기본은 display:none. 현재 뷰 전환은 location.hash로 제어.
SPA 라우터 라이브러리 불필요. window.onhashchange로 view-* 토글.
DB 없음. 사용자 체질·사주 결과는 STATE 오브젝트로 관리 후 localStorage.setItem('unmyeong_state', JSON.stringify(STATE)). 앱 시작 시 로드.
중요한 필드만 저장하고 나머지는 세션 메모리. 이미지(얼굴·손)는 저장하지 않음.
홈 화면 9개 카드 그리드. 각 카드 터치 → location.hash = '#view-tarot' 같은 식. 뒤로가기는 브라우저 기본 기능 그대로.
뒤로가기 제스처를 직접 구현하지 마세요. history.pushState만 잘 쓰면 모바일 뒤로가기가 자연스럽게 동작.
AI를 붙이기 전에 모든 도메인이 고전 규칙만으로 결과를 내도록 만듭니다. AI는 해설 레이어로 나중에.
입력: 생년월일시 → 연주·월주·일주·시주 4기둥 산출. 갑자년표·월주 공식·일주 만세력(JS 함수 테이블)·시주 공식. 핵심 코드 200줄 정도.
만세력 데이터는 1900~2100 정도 배열 하나로 커버. 외부 API 필요 없음.
메이저 22 + 마이너 56 카드 오브젝트 배열. shuffle() → 3장 slice → 각 카드마다 50% 확률로 reversed 플래그. 카드 조합별 가중치는 테이블로.
6효를 각각 2.5% 확률로 노양/노음(변효)으로 돌림. 본괘 이진코드 → 괘사 테이블 조회. 변효가 있으면 변괘까지 같이 제공.
문항별 답을 8체질 × 문항 가중치 매트릭스에 내적. 최고점 체질이 결과. 체질별 식단·수칙 테이블은 이레한의원 강의록 기반으로 구조화.
Cloudflare Pages는 functions/ 폴더를 자동으로 서버리스 API로 배포. /api/commentary 엔드포인트가 프론트에서 fetch 가능.
키는 env.GEMINI_API_KEY로만 접근. 클라이언트 코드에는 키 노출 0.
"당신은 30년 경력 운명 상담사입니다. 400~600자, 존댓말, 점수는 언급하지 말고 카테고리 축으로 말하세요." 식으로 톤과 길이를 명시. JSON 스키마로 응답 강제.
Gemini의 response_mime_type: 'application/json' 옵션으로 구조화 응답 강제. 파싱 실패 방어.
/api/palm-analyze는 이미지를 Gemini 2.5 Flash Lite에 전달. 응답 스키마에 lines·fingers·handShape 필드 정의. 필드 벗어나면 fallback 카운터 증가.
fallback ≥2 → confidence: 'low' 반환. 프론트는 이 플래그로 ⚠️ 배지 표시.
face-api.js를 CDN으로 로드. 모델 4개(~4MB)는 /models 경로에 정적 배포. 얼굴 사진을 캔버스로 처리 후 68 랜드마크 추출. 서버 송신 없음.
name, short_name, icons 192/512, display: 'standalone', theme_color. HTML에 <link rel="manifest"> 추가하면 끝.
sw.js에 VERSION 상수 + install/activate/fetch 핸들러. HTML은 network-first(항상 최신), 정적은 cache-first(빠른 로딩).
새 배포 때 VERSION 문자열만 바꾸면 구 캐시 자동 삭제. 핵심 한 줄.
skipWaiting() + clients.claim() + 메인에서 controllerchange 감지 시 location.reload(). 사용자 개입 없이 새 버전 자동 반영.
무작정 리로드하지 말고, 진행 중 입력이 있다면 Toast로 "새 버전 준비됨" 안내 후 유저 확인.
npx wrangler pages deploy dist --project-name=unmyeong --branch=main. 30초 안에 unmyeong.pages.dev 반영. main 브랜치가 프로덕션 — 다른 이름은 Preview로 감.
wrangler 성공 메시지만 믿지 말고 curl -s https://unmyeong.pages.dev | grep VERSION으로 실제 반영 확인. 엉뚱한 브랜치에 배포한 적 실제로 여러 번 있음.
npx wrangler pages deployment list --project-name=unmyeong로 전체 배포 이력 확인. 특정 deployment를 다시 프로덕션으로 올리기 한 번에 가능.
v7.5 기준 개선: STAGE_VOICE(생애기별 보이스) / 손금 confidence 배지 / alert→Toast 교체. 각 버전 차이는 ver-badge 한 줄에 기록 → 사용자도 현재 버전 인지.
배포할 때마다 VERSION 문자열 업데이트 필수. 안 하면 PWA 캐시 때문에 사용자는 구버전 계속 봄.
"이 사람과 결혼해도 될까?" (X) → "이 사람과의 관계에서 내가 지금 주의할 점은?" (O)
예/아니오 질문보다 관점 질문이 더 유용한 해석을 끌어냅니다.
정면, 밝은 자연광, 안경·모자 없이, 표정 없이. 머리카락이 이마를 가리지 않게.
face-api가 68개 랜드마크를 잡아야 정확도 높아집니다. 각도 틀어진 사진은 오형 오판 가능.
손바닥 전체가 프레임에 들어오게, 손가락 끝 포함. 밝고 균일한 조명. 선이 또렷이 보이도록.
흐린 사진이면 ⚠️ 배지가 뜹니다. 그때는 더 밝은 곳에서 재촬영 후 다시 업로드.
"큰 뱀이 물을 건너 내 품으로 왔어" 한두 문장이면 충분. 감정·장소·대상 포함 시 더 정확.
너무 짧으면 상징 추출이 약해지고, 너무 길면 초점이 흐려집니다. 두 문장 원칙.
주역은 중요한 결정에 쓰세요. "오늘 점심 뭐 먹지?" 말고 "이 회사로 이직해야 할까?" 수준.
같은 질문을 여러 번 반복하지 마세요. 주역은 "첫 답이 진짜 답"이라는 원칙이 있습니다.
네. 9개 도메인 전부 무료. 향후 결제 기능은 추가될 수 있지만 기본 분석은 영구 무료.
아니요. 관상은 브라우저 안에서 처리되고, 손금은 Gemini로 한 번 프록시된 뒤 즉시 폐기. Sean 서버에는 저장 안 됨.
운세·주역은 날짜(일진)가 변수로 들어가기 때문. 타로는 카드가 매번 무작위. 사주·체질·관상은 본래 고정.
고전 규칙은 엄격히 적용, AI 해설도 전문가 톤. 다만 삶의 최종 결정은 본인의 몫. 참고 자료로 활용하세요.