데이터 출처 및 라이선스
운영자 또는 상용 정책 값이 아직 설정되지 않았습니다. 이 페이지는 준비 중이며 상용 출시 전에 반드시 확정해야 합니다.
이 계산기는 외부에서 만든 데이터와 소프트웨어 위에서 돌아간다. 일부는 출처를 밝히는 것이 라이선스상의 의무다. 이 페이지가 그 표시다.
한눈에 보기
이 서비스는 계산할 때 외부 서버를 부르지 않는다. 필요한 천문·시간대·도시 데이터를 미리 정적 테이블로 만들어 배포물 안에 넣는다. 아래 데이터는 이 서비스가 도는 서버 이미지 안에 함께 들어 있다.
| 데이터·소프트웨어 | 라이선스 | 용도 |
|---|---|---|
GeoNames cities500 |
CC BY 4.0 | 도시 이름 → 위경도, IANA 시간대 |
| IANA 시간대 데이터베이스 (2026c) | 퍼블릭 도메인 | 지역표준시 → UTC, 서머타임 이력 |
| astronomy-engine 2.1.19 | MIT | 태양 황경 계산 → 24절기 절입 시각 |
| Noto Serif KR (한자 104자 서브셋) | SIL OFL 1.1 | 간지 한자 표시. 자체 호스팅이며 외부 요청 없음. 라이선스 전문 |
| KASI 특일정보·음양력 API | 공공데이터포털 제공, 제공기관이 정한 이용 조건 | 자체 계산값의 외부 대조 (빌드 단계 한정) |
| 오픈소스 소프트웨어 | 아래 소프트웨어 의존성 표 참조 | 서버와 화면의 실행 |
GeoNames 도시 데이터
- 창작자 — GeoNames (geonames.org)
- 저작권 표시 — © GeoNames
- 라이선스 — Creative Commons 저작자표시 4.0 국제 (CC BY 4.0)
- 원본 —
cities500.txt(download.geonames.org) - 면책 — GeoNames는 데이터를 있는 그대로 제공하며 정확성·최신성·완전성에 대해 어떤 보증도 하지 않는다.
개작 사실. 이 서비스는 원본을 그대로 재배포하지 않는다.
cities500.txt 텍스트 덤프를 SQLite 데이터베이스로 변환하고,
같은 도시의 여러 표기를 검색할 수 있도록 별칭을 정규화해 별도 표로 만들고,
접두 검색용 인덱스를 붙였다. 그 결과물이 배포물에 실린다 —
도시 235,046건, 별칭 873,241건, 약 49.5 MiB다.
도시 검색은 이 로컬 데이터베이스 안에서만 처리한다. 검색할 때 GeoNames 서버로 나가는 요청이 없고, 이 데이터베이스에는 검색어를 기록하는 표가 없다. 연결은 읽기 전용으로 열고 조회만 한다.
IANA 시간대 데이터베이스
표준시와 서머타임 이력은 IANA 시간대 데이터베이스
(iana.org/time-zones)를 쓴다.
이 데이터베이스는 퍼블릭 도메인이다. 이 서비스가 쓰는 판은 IANA 2026c이며,
Python 배포 패키지 tzdata 2026.3으로 고정해 두었다.
배포 패키지 자체의 코드는 Apache License 2.0이다.
버전을 고정하는 이유. 이 데이터베이스는 해마다 여러 번 갱신되고 과거 구간도 소급해서 수정된다. 같은 생년월일이 지난달과 이번 달에 다른 결과를 내면 안 되므로, 버전을 고정하고 결과에 기록한다.
이 데이터의 한계. 시간대 구역은 “1970년 이후 시각이 일치하는가”를 기준으로 나뉜다. 그래서 1970년 이전에 서로 달랐던 지역이 한 구역으로 묶여 있는 경우가 있다. 그 시기의 출생지 시간대는 데이터 자체가 불확실하며, 이 서비스가 고칠 수 있는 문제가 아니다.
천문 계산 — astronomy-engine
절기 절입 시각은 태양의 황경으로 정해진다. 그 계산에 astronomy-engine 2.1.19를 쓴다. 라이선스는 MIT다.
이 계산은 빌드 단계에서 한 번만 돌린다. 1899년부터 2101년까지의 절입 시각 4,872건을 미리 표로 만들어 두고, 실제 조회는 그 표를 찾아보는 것으로 끝난다. 그렇게 만들어진 표는 이 서비스의 산출물이며 astronomy-engine의 배포물이 아니다.
KASI 절기·음양력 데이터
한국천문연구원(KASI)이 공공데이터포털 (data.go.kr)을 통해 제공하는 특일정보 서비스의 24절기 정보와 음양력 정보 서비스를 썼다. 이용 조건은 제공기관이 정한 바에 따른다.
용도는 대조다. 자체 계산한 절입 시각과 일진 간지를 KASI 값과 맞춰 보고, 어긋나는 구간을 기록으로 남겼다. 대조 기록과 확인된 결함 목록은 저장소에 함께 보관한다. 다만 계산의 정본은 자체 계산값이다.
실제 서비스가 도는 동안에는 KASI API를 호출하지 않는다. 인증키는 배포물에도 저장소에도 포함하지 않는다.
쓰지 않기로 한 것
무엇을 쓰지 않았는지도 라이선스 사실이라서 함께 적는다. 아래 두 가지는 기능이 부족해서가 아니라, 그 라이선스가 요구하는 조건을 이 서비스가 지킬 수 없어서 처음부터 쓰지 않은 것이다.
- Swiss Ephemeris — AGPL-3.0으로 배포된다. AGPL은 네트워크로 제공되는 서비스에도 전체 소스 공개 의무를 부과한다. 그 조건을 지킬 수 없으므로 도입하지 않았다. 사주 계산에 필요한 천문값은 태양 황경 하나뿐이라 MIT 라이선스인 astronomy-engine으로 충분했다.
- timezonefinder — 코드는 MIT지만 함께 배포되는 시간대 경계 폴리곤이 ODbL(OpenStreetMap 파생)이다. 폴리곤을 배포하면 그 데이터에 동일조건변경허락 조건이 따라붙는다. 도입하지 않았고, 시간대는 GeoNames가 도시마다 이미 갖고 있는 IANA 시간대 값으로 해결했다.
결과적으로 배포물에는 AGPL 성분도 ODbL 성분도 없다. 이것은 라이선스를 피해 간 것이 아니라 지킨 것이다 — 조건을 이행할 수 없는 라이선스의 코드와 데이터는 쓰지 않는다.
소프트웨어 의존성
주요 오픈소스 구성 요소는 아래와 같다. 정본은 각 패키지에 동봉된 라이선스
원문이며, 버전은 저장소의 requirements.txt와
frontend/package.json에 고정돼 있다.
| 이름 | 라이선스 | 용도 |
|---|---|---|
| Python | PSF License | 서버 실행 환경 |
| FastAPI | MIT | 웹 API |
| Starlette | BSD 3-Clause | FastAPI의 기반 웹 계층 |
| Uvicorn | BSD 3-Clause | 웹 서버 |
| Pydantic | MIT | 요청·응답 검증 |
| Jinja2 | BSD 3-Clause | 이 페이지를 포함한 서버 렌더링 |
| Requests | Apache-2.0 | 빌드 단계의 데이터 수집 |
| tzdata (Python 패키지) | Apache-2.0 | IANA 시간대 데이터 배포 |
| OpenAI Python SDK | Apache-2.0 | 문장 다듬기 기능이 켜져 있을 때만 사용 |
| httpx | BSD 3-Clause | 테스트 전용 |
| React · React DOM | MIT | 계산기 화면 |
| Vite | MIT | 프런트엔드 빌드 |
| TypeScript | Apache-2.0 | 프런트엔드 개발 도구 |
계산기 화면이 불러오는 스크립트·스타일·글꼴·이미지는 전부 이 서버가 직접 내보낸다. 외부 CDN에서 가져오는 프런트엔드 자산이 없어 브라우저가 제3자 서버로 요청을 보내지 않는다. 다만 간지 한자를 표시하는 글꼴 Noto Serif KR은 제3자 저작물이며, 자체 호스팅으로 재배포하므로 위 표에 라이선스를 표시했다 (SIL Open Font License 1.1). 화면에 나올 수 있는 한자 104자만 담은 서브셋이다.
이 서비스가 직접 만든 것
간지 표, 판단 규칙, 원국·시기 해석 규칙과 그 문장, 네 언어 번역은 이 서비스가 직접 작성했다. 전통 사주 방법론 자체는 특정 저작자가 있는 저작물이 아니지만, 그것을 어떻게 구현할지 정한 결정과 화면에 나가는 문장은 이 서비스의 것이다.
규칙 문장을 읽기 좋게 다듬는 데 외부 언어모델을 쓸 수 있다. 그 모델은 계산도 판단도 하지 않는다. 자세한 내용은 면책 고지에 있다.
이 페이지는 출처를 밝히는 문서이지 이용 허락을 주는 문서가 아니다. 계산 결과와 해석 문장을 어디까지 쓸 수 있는지는 이용약관이 정한다.
빠진 표시가 있다면
출처 표시나 라이선스 표기에 빠지거나 틀린 것이 있으면 알려 주기 바란다. 확인해서 고친다. 연락 방법은 문의 및 연락처에 있다.
이 목록은 구성 요소가 바뀔 때 갱신한다. 이 문서의 시행일과 버전은 맨 위에 있다.