SEONGGUK.SYS
◀ ITEM BOX

Myeongri Seojae

PRODUCT

10년 단위 대운을 타임라인으로 보여주는 명리 서비스

기간
2026.08 ~ 2026.09
역할
기획 · 구현 · 검증 단독
사용 기술
React · TypeScript · Playwright · golden test

개요

생년월일을 입력하면 사주 원국과 10년 단위 대운, 연도별 세운을 하나의 타임라인으로 보여주는 웹 앱입니다.

대운 시작 시점이 어긋나면 이후 구간 전체가 달라지므로, 해석 문구보다 시간 보정과 계산 결과의 재현성을 우선했습니다.

문제와 해결

  1. 01

    시대별 한국 표준시 보정

    한국은 표준자오선과 서머타임 시행 이력이 여러 차례 바뀌어 고정 보정값만으로는 경계 시각을 안정적으로 계산하기 어렵습니다.

    입력 시각을 Asia/Seoul 기준 UTC로 변환한 뒤 경도 보정을 적용해, 역사적 오프셋은 IANA tzdata가 담당하도록 계산 경로를 단순화했습니다.

  2. 02

    계산 결과 교차 검증

    외부 라이브러리의 결과가 같아도 같은 계산 전제를 공유한다면 함께 틀릴 수 있습니다.

    절기 3,624개를 천체력과 대조하고 일주 73,414일을 전수 확인했습니다. 경계 연도와 과거 오류 사례는 골든 데이터로 저장해 변경 전후 결과를 비교합니다.

  3. 03

    민감한 입력값 보호

    생년월일과 출생 시각은 서버 API로 보내지 않고 브라우저에서 계산합니다.

    공유 URL에는 원본 입력 대신 필요한 범위만 인코딩하고, Sentry 전송 전 개인정보 필드를 제거했습니다. 외부 웹폰트도 자체 호스팅으로 전환했습니다.

  4. 04

    초기 계산 번들 경량화

    절기표와 해석 데이터를 진입 번들에 모두 넣으면 사용자가 입력 화면을 보기 전부터 큰 스크립트를 내려받습니다.

    계산 엔진을 동적으로 불러오고 절기 4,824개를 델타·36진수로 압축했습니다. 진입 청크에는 250KB 예산을 두고 CI에서 확인합니다.

  5. 05

    계산 실패 상태 분리

    계산 도중 예외가 발생하면 UI는 어느 단계가 실패했는지 구분하기 어렵고, 앞 단계의 결과가 정상처럼 남을 수 있습니다.

    각 계산 단계가 성공 또는 원인이 포함된 오류를 반환하도록 계약을 통일하고, 입력 오류·지원 범위·링크 손상·엔진 로딩 실패를 서로 다른 안내로 연결했습니다.

주요 구현

회고

하나의 정답을 정하기 어려운 계산 도메인에서는 구현만큼 계산 전제를 공개하고 독립된 자료와 대조하는 과정이 중요했습니다.

화면

◀ ITEM BOX