AstroWay/api v2.190.0 · it
tutti i sistemi sono operativi

Come manteniamo l'accuratezza sotto controllo: CI contro swetest e NASA

L'accuratezza dell'astra-API si deteriora facilmente da un refactoring degli ephemeridi. Analizziamo la protezione: un nucleo Swiss Ephemeris per browser e server, centinaia di snapshot congelati su mappe di riferimento e triangolazione di ogni PR contro swetest CGI, Kerykeion, Prokerala e catalogo delle ombre di NASA.

Precisazione - è quello per cui il tuo utente ti verifica in silenzio su Astrodienst. Se la carta attuale si è dispersa in una minuta di angolo, la segnalazione arriverà presto. E il peggio è che la precisione può essere facilmente rotta in modo trascurabile: un refactoring nel codice ephemeride, e metà dei punti di fine sono andati a secondi di dritta.

Ecco come evitiamo questo.

Le posizioni planetarie sono calcolate Swiss Ephemeris, compilato in WASM. Chiave: è lo stesso nucleo sia nel browser del nostro applicativo che sul server API. Una sola base di codice core/, integrata nel backend attraverso un alias di repo cross e incorporata nel bundle di build. Nessuna “implementazione del browser” e “server” che possono divergere - divergono in nulla.

Per le date al di fuori del diapason principale ephemeride sono utilizzati un fallback analitico (Moshier), un po’ più ruvido, ma senza interruzioni ai limiti. Sincerità consapevole: non dichiariamo pubblicamente la versione reale del raggio, perché la versione reale del nucleo è inferiore alla più recente upstream, e scrivere un numero pubblico sarebbe una menzogna.

Ogni punto di fine calcolato ha un set di sfer congelate - 873 JSON fixtures al momento di questo build. Il rilascio esegue il punto di fine sulle carte di riferimento e verifico con la fixture. Qualsiasi deviazione della longitudine planetaria superiore a 5e-5° (0,18”) fallisce il test.

Le carte di riferimento sono selezionate per colpire i bordi, non solo il “centro comodo”:

  • Monroe, Diana, Einstein, Bowie - carte storiche con dati di nascita noti
  • polar latitudine - dove le case si generano
  • equatoriale - dove si comportano diversamente
  • southern hemisphere - verifica la simmetria

I casi limite catturano proprio le regressioni che non sono visibili sulla mappa del condizionale.

Le sfere congelate catturano le regressioni rispetto a se stesse. Per verificare la verità assoluta, ogni rilascio è verificato con fonti indipendenti:

Contro di cheChe verificaDeviazione
swetest CGI (Astrodienst)longitudine planetaria, cuspidi case0.000"
Kerykeion (Python, pyswisseph)implementazione indipendente SwEph< 0.2"
Prokerala (sidereal Lahiri)posizioni siddereal`8-17”, differenza di sistema di formula Ayanamsha, non raggio

La deviazione da Prokerala - non è un errore: è diverse implementazioni della formula Lahiri, e lo documentiamo apertamente, non nascosto. Con swetest, che è l’etalon dell’industria, il drift è zero.

Le linee astronomiche sono verificate geometricamente separatamente - la precisione è migliore di 1,5 km sull’equatore.

La precisione è un CI-gate, non una verifica singola:

  • api-accuracy.yml - su ogni PR nel codice backend esegue l’intero set di sfere congelate + triangolazione. Il test rosso blocca il merge.
  • check-eclipse-accuracy.yml - una volta all’anno verifica gli eclissi con il catalogo NASA; la deviazione superiore al limite fallisce automaticamente l’issue.
  • check-sweph-updates.yml - ogni mese controlla l’aggiornamento di Swiss Ephemeris e il pacchetto WASM; una nuova versione - issue per revisione, senza auto-merge (aggiornamento del raggio ephemeride - troppo sensibile per l’auto-upgrade).

Garanzia semplice: le posizioni planetarie sono all’interno di < 0.1 secondi di angolo da Swiss Ephemeris di riferimento, e questa soglia è protetta automaticamente, non da una promessa nel README. Se mai si verificasse una regressione, cadrebbe nel nostro CI, non nella segnalazione del tuo utente.

La versione pubblica di questi numeri, con la tabella delle deviazioni per carte specifiche, vive sulla pagina Precisione.

MakSeong · AstroWay

Sto sviluppando l'API AstroWay: sto avvolgendo Swiss Ephemeris in un REST pulito e scrivo sui dettagli noiosi che sono in realtà importanti.

// costruisci su questo

Lo stesso Swiss Ephemeris di Solar Fire - in 4 righe di codice.

Chiave API gratuita senza carta. 5 000 chiamate al mese fino al primo pagamento.

Altro dal blog tutti gli articoli →

Engineering 2026-07-15

Tre SDK ufficiali: TypeScript, Python, PHP invece di curl grezzo

HTTP grezzo funziona, ma un client tipizzato risparmia ore: autocompletamento dei percorsi, tipi di richiesta e risposta, retry integrato per 408/409/429/5xx e gerarchia di errori allo stile Stainless. Analizziamo i tre SDK ufficiali - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - e come sono generati da un unico contratto 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.