개발 기록으로
BUILDING NOTE

주역: 오늘을 말하다 — 사주·주역 계산의 근거를 보여주는 웹 만들기

기기 안에서 계산하고 기록하며, 모호한 출생 시각과 계산 불일치를 숨기지 않는 사주·주역 웹 프로젝트 제작기.

목차

계산한 근거를 직접 확인할 수 있게

사주와 주역을 AI에게 물으면 그럴듯한 설명은 쉽게 나온다. 그런데 어떤 시각을 기준으로 계산했는지, 질문에 대응하는 괘가 어떻게 만들어졌는지까지 확인하려면 이야기가 달라진다. ‘주역: 오늘을 말하다’는 계산 자료를 먼저 만들고, 그 자료를 바탕으로 풀이를 이어가도록 만든 웹 프로젝트다.

주역: 오늘을 말하다 웹 열기

계산은 기기에서, 풀이는 선택해서

사주와 주역 계산은 사용자의 기기에서 수행한다. 별도의 계산 서버는 두지 않았다. 결과 화면에는 네 기둥과 일간·일주를 먼저 보여주고, 자세한 근거를 펼치면 천간·지지·십성·지장간과 시각 보정 자료를 확인할 수 있다.

주역은 기기의 암호학적 난수로 세 동전 던지기를 모의해 본괘·동효·지괘를 만든다. 결과와 전승 경문을 함께 보여주며, 사용자가 AI 풀이를 요청하기 전까지 질문을 외부 AI로 보내지 않는다. 프롬프트를 복사해 ChatGPT나 Claude에서 직접 이어가는 방식도 지원한다.

여기서 중요한 경계가 있다. 계산 과정이 일관되다는 사실은 운세의 예측력이 검증됐다는 뜻이 아니다. 이 서비스는 전통적 해석을 살펴보고 생각을 정리하는 실험용 도구다. 의료·법률·투자처럼 중요한 결정을 대신하지 않는다.

가장 까다로웠던 것은 출생 시각

같은 시계 시각이라도 당시 표준시와 서머타임에 따라 실제 기준이 달라진다. 한국의 역사 시간 변경표와 출생지 경도, 균시차를 고려하고, 절기와 일주 경계도 함께 계산하도록 구성했다.

시계를 앞으로 돌려 존재하지 않는 시각은 입력을 다시 확인하도록 한다. 시계를 뒤로 돌려 두 번 존재하는 시각은 두 경우를 계산하고, 공통으로 확인되는 글자만 확정해서 보여준다. 출생 시간을 모를 때도 임시로 넣은 정오를 실제 출생 시각처럼 해석하지 않도록 했다.

두 계산 엔진을 교차검증하되 불일치를 숨기지 않는다. 보조 계산기의 지원 범위 밖에서는 교차검증할 수 없다는 안내를 남긴다. 오행 표시는 확인된 여덟 글자의 개수이며, 이를 곧바로 오행의 강약이나 용신 판정이라고 부르지 않는다.

질문과 기록을 보관하는 방식

웹 기록은 IndexedDB, Android 구현의 기록은 SQLite를 사용한다. 기기와 브라우저 사이에 자동 동기화하지 않으며, 브라우저 데이터나 앱을 삭제하면 기록도 사라질 수 있다. 출생정보 자동 입력은 선택 사항이고 AI 키는 상담 기록 DB에 넣지 않는다.

화면이 로드된 뒤에는 인터넷을 끊어도 계산할 수 있다. 다만 웹에 처음 들어오는 과정까지 오프라인으로 지원하는 PWA 캐시는 아직 없다. AI 풀이에는 선택한 제공사의 연결과 이용 조건이 따로 적용된다.

공개 범위와 남아 있는 검증

공개 웹을 이용할 수 있으며 Android APK의 웹 다운로드는 현재 중단한 상태다. PC용 GPT 연결기는 같은 컴퓨터에서 Codex를 실행하는 고급 연결 방식이다. 설치 없이 웹에서 바로 GPT 로그인이 끝나는 기능으로 소개하지 않는다.

개발 기록에는 역사 시각·계산 경계·주역 효 조합을 비교한 테스트와 모바일 화면 검증을 남겼다. 반면 실제 계정의 OAuth 승인과 AI 제공사의 답변 완료, Android 실기기 설치·동작은 별도 검증이 필요하다. 화면의 모의 응답 테스트를 실제 서비스 연결 성공으로 바꾸어 적지 않았다.

이 프로젝트에서 가장 많이 다듬은 것은 결과의 화려함보다 불확실성을 보여주는 방식이었다. 입력이 모호하거나 계산이 갈리면, 그 지점부터 사용자가 알 수 있어야 한다.

서비스 사용하기 · 포트폴리오 보기