AstroWay/api v2.190.0 · id
semua sistem normal

Bagaimana Kami Mengawasi Akurasi: CI vs swetest dan NASA

Akurasi dalam API Astro dapat menurun dengan mudah dari satu refaktor ephemeris. Kami memecahkan perlindungan: satu inti Swiss Ephemeris di browser dan server, ratusan snapshot beku pada peta standar dan triangulasi setiap PR terhadap swetest CGI, Kerykeion, Prokerala, dan katalog kegelapan NASA.

Akurasi adalah hal yang diam-diam diperiksa pengguna pada Astrodienst. Jika peta natal menyimpang satu menit sudut, keluhan akan datang cepat. Dan yang terburuk adalah akurasi mudah rusak tanpa terlihat: satu refactoring pada kode ephemeris, dan setengah endpoint diam-diam melenceng beberapa detik busur.

Begini cara kami mencegah hal ini terjadi.

Posisi planet dihitung oleh Swiss Ephemeris, yang dikompilasi ke WASM. Kuncinya: ini adalah inti yang sama baik di browser aplikasi kami maupun di server API. Satu basis kode core/, di‑pull ke backend melalui alias cross-repo dan dibundel pada build. Tidak ada implementasi “browser” atau “server” yang dapat berbeda – tidak ada perbedaan.

Untuk tanggal di luar rentang utama, ephemeris memiliki fallback analitik (Moshier), sedikit lebih kasar, tapi tanpa celah di batas. Kejujuran sadar: versi spesifik mesin tidak kami umumkan, karena versi inti yang sebenarnya lebih rendah dari upstream terbaru, dan menyebutkan angka besar akan menjadi kebohongan.

Setiap endpoint perhitungan memiliki sekumpulan snapshot yang dibekukan - 873 fixture JSON pada build ini. Runner menjalankan endpoint pada peta referensi dan membandingkan byte‑per‑byte (dalam toleransi) dengan fixture. Penyimpangan panjang planet lebih dari 5e-5° (0.18″) akan membuat tes gagal.

Peta referensi dipilih agar menguji tepi, bukan hanya pusat yang “nyaman”:

  • Monroe, Diana, Einstein, Bowie - peta historis dengan data kelahiran yang diketahui
  • polarna lintang - tempat sistem rumah terdegradasi
  • ekatorial - tempat mereka berperilaku berbeda
  • selatan belahan bumi - pemeriksaan simetri

Kasus batas menangkap regresi yang tidak terlihat pada peta pengguna hipotetis.

Snapshot menangkap regresi relatif terhadap dirinya sendiri. Untuk memverifikasi kebenaran absolut, setiap rilis dibandingkan dengan sumber independen:

Melawan apaApa yang diperiksaPerbedaan
swetest CGI (Astrodienst)panjang planet, cusp rumah0.000″
Kerykeion (Python, pyswisseph)implementasi SwEph independen< 0.2″
Prokerala (sidereal Lahiri)posisi siderial8-17″, perbedaan sistem formula ayanamsa, bukan mesin
NASA 5-Millennium Eclipse Catalogwaktu dan tipe gerhana< 1 хв

Perbedaan dengan Prokerala bukanlah kesalahan: itu adalah implementasi berbeda dari formula Lahiri, dan kami mendokumentasikannya secara jelas, bukan menyembunyikannya. Dengan swetest, yang merupakan standar industri, driftnya nol.

Garis astrokartografi diperiksa secara terpisah secara geometris – akurasi di ekuator lebih baik dari 1,5 km.

Akurasi adalah gerbang CI, bukan pemeriksaan satu kali:

  • api-accuracy.yml - pada setiap PR backend code menjalankan seluruh set snapshot + triangulasi. Tes merah memblokir merge.
  • check-eclipse-accuracy.yml - sekali setahun membandingkan gerhana dengan katalog NASA; perbedaan di atas ambang secara otomatis membuat issue.
  • check-sweph-updates.yml - setiap minggu memantau upstream Swiss Ephemeris dan paket WASM; versi baru - issue untuk review, tanpa auto‑merge (pembaruan mesin ephemeris terlalu sensitif untuk auto‑update).

Jaminannya sederhana: posisi planet berada dalam < 0.1 detik sudut dari Swiss Ephemeris referensi, dan batas ini dilindungi otomatisasi, bukan janji di README. Jika suatu saat muncul regresi, itu akan jatuh di CI kami, bukan di keluhan penggunamu.

Versi publik dari angka‑angka ini, dengan tabel perbedaan pada peta spesifik, tersedia di halaman Akurasi.

MakSeong · AstroWay

Aku membuat AstroWay API: membungkus Swiss Ephemeris ke dalam REST murni dan menulis tentang detail membosankan yang sebenarnya penting.

// bangun di atas ini

Swiss Ephemeris yang sama dengan Solar Fire - dalam 4 baris kode.

Kunci gratis tanpa kartu. 5.000 panggilan per bulan sebelum pembayaran pertama.

Lebih dari blog semua tulisan →

Engineering 2026-07-15

Tiga resmi SDK: TypeScript, Python, PHP alih-alih curl mentah

HTTP mentah bekerja, tetapi klien yang terjenis menghemat jam: otomatis melengkapi jalur, jenis permintaan dan respons, retry bawaan untuk 408/409/429/5xx dan hierarki kesalahan Stainless-style. Kami jelaskan tiga resmi SDK - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - dan bagaimana mereka dihasilkan dari satu kontrak OpenAPI.

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.