AstroWay/api v2.325.2 · tr
tüm sistemler normal

Doğruluğu nasıl kontrol altında tutuyoruz: swetest ve NASA'ya karşı CI

Bir astroloji API'sinde doğruluk, efemeris kodundaki tek bir refactoring ile kolayca bozulabilir. Korumayı inceliyoruz: uygulama ve API için tek bir Swiss Ephemeris çekirdeği, referans haritalar üzerinde yüzlerce dondurulmuş snapshot ve her PR'ın swetest CGI, Kerykeion, Prokerala ve NASA tutulma kataloğuna karşı üçgenlenmesi.

Doğruluk, kullanıcının sizi sessizce Astrodienst ile karşılaştırarak kontrol ettiği şeydir. Bir doğum haritası bir yay dakikası saparsa şikâyet hızlı gelir. İşin en kötü yanı, doğruluğun fark edilmeden kolayca bozulabilmesidir: efemeris kodunda tek bir refactoring ve endpoint’lerin yarısı sessizce birkaç yay saniyesi kayar.

Bunun olmasını şöyle engelliyoruz.

Gezegen konumlarını Swiss Ephemeris hesaplar. Kilit nokta: uygulamamız ve API aynı hesaplama çekirdeğini, aynı kod tabanını kullanır. Birbirinden sapabilecek iki ayrı uygulama yok, yani sapacak bir şey de yok.

Efemerislerin ana aralığının dışındaki tarihler için analitik bir fallback (Moshier) vardır; biraz daha kaba ama sınırlarda kopukluk olmadan. Bilinçli bir dürüstlük: motorun belirli bir sürümünü kamuya açık olarak belirtmiyoruz, çünkü çekirdeğin gerçek sürümü en yeni upstream’in gerisinde ve iddialı bir rakam yazmak yalan olurdu.

Her hesaplama endpoint’inin bir dondurulmuş snapshot seti vardır: bu build itibarıyla 888 JSON fixture. Runner endpoint’i referans haritalar üzerinde çalıştırır ve sonucu fixture ile bayt bayt (tolerans dahilinde) karşılaştırır. Bir gezegen boylamındaki 5e-5°‘den (0.18″) büyük her sapma testi düşürür.

Referans haritalar yalnızca “rahat” ortayı değil, kenarları zorlayacak şekilde seçildi:

  • Monroe, Diana, Einstein, Bowie: doğum verileri bilinen tarihi haritalar
  • kutup enlemi: ev sistemlerinin dejenere olduğu yer
  • ekvator: farklı davrandıkları yer
  • güney yarımküre: ayna simetrisinin kontrolü

Sınır durumları, sıradan bir Kyiv doğumlunun haritasında görünmeyen gerilemeleri tam olarak yakalar.

Snapshot’lar kendilerine göre gerilemeleri yakalar. Mutlak doğruluğu kontrol etmek için her sürüm bağımsız kaynaklarla karşılaştırılır:

Neye karşıNeyi kontrol ederFark
swetest CGI (Astrodienst)gezegen boylamları, ev başlangıçları0.000″
Kerykeion (Python, pyswisseph)SwEph’in bağımsız bir uygulaması< 0.2″
Prokerala (sidereal Lahiri)sidereal konumlar8-17″, motordan değil ayanamsa formülünden kaynaklanan sistematik fark
NASA 5-Millennium Eclipse Catalogtutulmaların zamanı ve türü< 1 хв

Prokerala ile olan fark bir hata değildir: bunlar Lahiri formülünün farklı uygulamalarıdır ve bunu saklamak yerine açıkça belgeliyoruz. Sektörün referansı olan swetest ile sapma sıfırdır.

Astrokartografi çizgileri ayrıca geometrik olarak kontrol edilir: ekvatordaki doğruluk 1.5 km’den iyidir.

Doğruluk tek seferlik bir kontrol değil, bir CI gate’idir:

  • api-accuracy.yml: backend koduna gelen her PR’da tüm snapshot setini ve üçgenlemeyi çalıştırır. Kırmızı bir test merge’ü engeller.
  • check-eclipse-accuracy.yml: yılda bir tutulmaları NASA kataloğuyla karşılaştırır; eşiği aşan bir fark otomatik olarak issue açar.
  • check-sweph-updates.yml: her hafta Swiss Ephemeris upstream’ini izler; yeni bir sürüm inceleme için issue açar, automerge yoktur (efemeris motorunu güncellemek otomatik güncellemeye bırakılamayacak kadar hassas bir iştir).

Garanti basit: gezegen konumları referans Swiss Ephemeris’ten < 0.1 yay saniyesi içindedir ve bu sınır README’deki bir vaatle değil, otomasyonla korunur. Bir gün bir gerileme ortaya çıkarsa, kullanıcınızın şikâyetinde değil, bizim CI’ımızda düşer.

Bu rakamların, belirli haritalara göre fark tablosunu içeren kamuya açık sürümü Doğruluk sayfasında.

MakSeong · AstroWay

I build the AstroWay API: arc-second astrology math on a clean REST surface, and I write about the dull parts that turn out to matter.

// bunu kullanarak inşa et

Yay saniyesi hassasiyetinde konumlar, 4 satır kodla.

Kart gerekmeden ücretsiz anahtar. İlk ödemeye kadar ayda 5.000 istek.

Daha fazla blog yazısı tüm yazılar →

Engineering 2026-07-15

Üç resmi SDK: ham curl yerine TypeScript, Python, PHP

Ham HTTP çalışır, ama tipli bir istemci saatler kazandırır: yol otomatik tamamlama, istek ve yanıt tipleri, 408/409/429/5xx için yerleşik retry ve Stainless tarzı hata hiyerarşisi. Üç resmi SDK'yı, @astroway/sdk (npm), astroway (PyPI) ve astroway/sdk (Packagist), ve bunların tek bir OpenAPI sözleşmesinden nasıl üretildiğini inceliyoruz.

Industry 2026-06-05

Free Astrology API: Which One Has the Best Free Tier in 2026?

A side-by-side of free tiers across the major astrology APIs - credits, request caps, card requirements - and how much you can actually build for free.

Engineering 2026-06-05

Horoscope API Tutorial: Build a Daily Horoscope Feature

Add daily, weekly and monthly horoscopes to your app via API - sign-based text vs transit-based personalization - with TypeScript and Python code.