정확도는 사용자가 Astrodienst에서 조용히 너를 검사하는 기준이야. 만약 출생 차트가 각분 정도 차이가 나면, 불만이 빨리 들어올 거야. 그리고 가장 안 좋은 점은 정확도를 눈에 띄지 않게 깨기 쉽다는 거야: 에페머리스 코드에서 한 번 리팩터링만 하면, 절반 정도의 엔드포인트가 조용히 몇 초 정도 차이로 이동해버려.
우리가 이런 일이 일어나지 않게 하는 방법은 이래.
두 환경을 위한 하나의 코어
섹션 제목: “두 환경을 위한 하나의 코어”행성 위치는 Swiss Ephemeris가 WASM으로 컴파일해서 계산해. 핵심은: 우리 앱의 브라우저와 API 서버 모두에서 같은 코어를 사용한다는 거야. 하나의 코드베이스 core/가 cross-repo alias를 통해 백엔드에 끌어와서 빌드 시 번들에 포함돼. ‘브라우저용’과 ‘서버용’ 구현이 따로 없어, 차이가 생길 수 없지.
주요 범위를 벗어나는 날짜에 대해서는 분석용 fallback (Moshier)이 있어, 약간 거칠지만 경계에서 끊김이 없어. 솔직히 말하면: 엔진의 정확한 버전을 공개하지 않아, 실제 코어 버전이 최신 upstream보다 낮고, 큰 숫자를 적는 건 거짓말이 되거든.
고정된 스냅샷
섹션 제목: “고정된 스냅샷”각 계산 엔드포인트는 고정된 스냅샷 집합을 가지고 있어 - 873개의 JSON 픽처가 이 빌드 시점에 존재해. 러너는 엔드포인트를 기준 차트에 실행하고 바이트 단위(허용 오차 범위 내)로 픽처와 비교해. 행성 경도가 5e-5° (0.18″)보다 벗어나면 테스트가 실패해.
기준 차트는 가장자리까지 테스트하도록 선택했어, 단순히 ‘편리한’ 중심만이 아니라:
- Monroe, Diana, Einstein, Bowie - 알려진 출생 데이터가 있는 역사적 차트
- полярна широта - 도메인 시스템이 퇴화하는 극지
- екваторіальна - 그들이 다르게 동작하는 적도
- південна півкуля - 대칭성 검증
극한 경우는 가상의 키예프 차트에서 보이지 않는 회귀를 포착해.
외부 소스와의 삼각 검증
섹션 제목: “외부 소스와의 삼각 검증”스냅샷은 자체 대비 회귀를 잡아. 절대적인 진실을 검증하려면, 각 릴리즈를 독립 소스와 비교해:
| 대상 | 검증 내용 | 차이 |
|---|---|---|
| swetest CGI (Astrodienst) | 행성 경도, 하우스 큐스피드 | 0.000″ |
| Kerykeion (Python, pyswisseph) | 독립적인 SwEph 구현 | < 0.2″ |
| Prokerala (sidereal Lahiri) | 황도 위치 | 8-17″, 시스템 차이 아얀무시 공식, 엔진이 아니라 |
| NASA 5-Millennium Eclipse Catalog | 시간 및 일식 유형 | < 1 хв |
Prokerala와의 차이는 오류가 아니야: 이것은 Lahiri 공식의 다른 구현이고, 우리는 숨기지 않고 명시적으로 문서화해. 업계 표준인 swetest와는 드리프트가 0이야.
천문 지도 라인은 별도로 기하학적으로 검증돼 - 적도에서 정확도가 1.5km 이하야.
각 PR마다 실행되는 검사
섹션 제목: “각 PR마다 실행되는 검사”정확도는 CI 게이트이며, 일회성 검사가 아니야:
api-accuracy.yml- 각 PR마다 백엔드 코드를 실행해 전체 스냅샷 세트와 삼각 검증을 수행해. 빨간 테스트가 머지를 차단해.check-eclipse-accuracy.yml- 매년 한 번 NASA 카탈로그와 일식을 비교해. 임계값을 초과하는 차이는 자동으로 이슈를 생성해.check-sweph-updates.yml- 매주 upstream Swiss Ephemeris와 WASM 패키지를 확인해; 새 버전이 나오면 리뷰용 이슈를 만들고 자동 머지는 하지 않아 (에페머리스 엔진 업데이트는 자동 업데이트에 너무 민감해).
통합자에게 주는 이점
섹션 제목: “통합자에게 주는 이점”보장은 간단해: 행성 위치가 기준 Swiss Ephemeris와 < 0.1 초각 이내이며, 이 한계는 자동화된 시스템으로 보호돼, README의 약속이 아니라. 언제든 회귀가 발생하면 우리 CI에서 잡히고, 사용자 불만이 아니라.
이 수치들의 공개 버전과 구체적인 차트별 차이 표는 정확도 페이지에 있어.
Solar Fire에 사용된 것과 동일한 Swiss Ephemeris - 단 4줄의 코드로.
카드 없이 무료 키. 첫 결제 전까지 월 5,000 API 호출.