AstroWay/api v2.217.2 · hu
minden rendszer működik rendben

Hogyan tartjuk kézben a pontosságot: CI a swetest és a NASA ellen

Egy asztrológiai API pontossága egyetlen efemerisz-refaktorálástól is könnyen leromlik. Bemutatjuk a védelmet: egyetlen Swiss Ephemeris mag az alkalmazásnak és az API-nak, több száz befagyasztott snapshot referenciaképleteken, és minden PR háromszögelése a swetest CGI, a Kerykeion, a Prokerala és a NASA fogyatkozáskatalógusa ellen.

A pontosság az, amit a felhasználó szó nélkül ellenőriz rajtad az Astrodienstnél. Ha a születési képlet egy ívperccel eltér, a panasz gyorsan megérkezik. És a legrosszabb az egészben, hogy a pontosságot könnyű észrevétlenül elrontani: egyetlen refaktorálás az efemeriszkódban, és a végpontok fele csendben elcsúszik néhány ívmásodperccel.

Így akadályozzuk meg, hogy ez megtörténjen.

A bolygópozíciókat a Swiss Ephemeris számolja. A lényeg: az alkalmazásunknak és az API-nak ugyanaz a számítási magja, ugyanaz a kódbázisa. Nincs két implementáció, amely eltérhetne egymástól, így nincs mi eltérjen.

Az efemerisz fő tartományán kívüli dátumokra van egy analitikus fallback (Moshier), valamivel durvább, de a határokon nincs benne szakadás. Tudatos őszinteség: a motor konkrét verzióját nyilvánosan nem adjuk meg, mert a mag valódi verziója régebbi a legújabb upstreamnél, és egy hangzatos szám kiírása hazugság lenne.

Minden számító végpontnak van egy befagyasztott snapshot készlete - 873 JSON-fixture ennek a buildnek az idején. A futtató a végpontot referenciaképleteken futtatja, és bájtról bájtra (a tűréshatáron belül) összeveti a fixture-rel. Ha bármely bolygó hosszúsága 5e-5°-nál (0.18″) jobban eltér, a teszt elbukik.

A referenciaképleteket úgy választottuk ki, hogy a széleket célozzák, ne csak a “kényelmes” közepet:

  • Monroe, Diana, Einstein, Bowie - történelmi képletek ismert születési adatokkal
  • sarki szélesség - ahol a házrendszerek elfajulnak
  • egyenlítői - ahol másként viselkednek
  • déli félteke - a tükrözés ellenőrzése

A határesetek pontosan azokat a regressziókat fogják meg, amelyek egy átlagos kijevi képletén nem látszanak.

Háromszögelés külső források ellen

Szekció neve “Háromszögelés külső források ellen”

A snapshotok a saját magukhoz képesti regressziókat fogják meg. Az abszolút igazság ellenőrzéséhez minden kiadást független forrásokkal vetünk össze:

Mi ellenMit ellenőrizEltérés
swetest CGI (Astrodienst)bolygóhosszúságok, házcsúcsok0.000″
Kerykeion (Python, pyswisseph)független SwEph-implementáció< 0.2″
Prokerala (sidereal Lahiri)sziderikus pozíciók8-17″, az ayanamsa-képlet rendszerszintű különbsége, nem a motoré
NASA 5-Millennium Eclipse Cataloga fogyatkozások ideje és típusa< 1 perc

A Prokeralától való eltérés nem hiba: a Lahiri-képlet különböző implementációiról van szó, és ezt kifejezetten dokumentáljuk, nem rejtjük el. A swetesttel, amely az iparági etalon, a sodródás nulla.

Az asztrokartográfiai vonalakat külön, geometriailag ellenőrizzük - a pontosság az egyenlítőn jobb 1.5 km-nél.

A pontosság CI-kapu, nem egyszeri ellenőrzés:

  • api-accuracy.yml - minden backendkódot érintő PR-en lefuttatja a teljes snapshotkészletet + a háromszögelést. A piros teszt blokkolja a merge-et.
  • check-eclipse-accuracy.yml - évente egyszer összeveti a fogyatkozásokat a NASA katalógusával; a küszöb feletti eltérés automatikusan issue-t nyit.
  • check-sweph-updates.yml - hetente figyeli a Swiss Ephemeris upstreamet; új verzió - issue review-ra, automatikus merge nélkül (az efemeriszmotor frissítése túl érzékeny dolog az automatikus frissítéshez).

A garancia egyszerű: a bolygópozíciók < 0.1 ívmásodpercen belül vannak a referencia Swiss Ephemeristől, és ezt a határt automatizálás védi, nem egy ígéret a README-ben. Ha egyszer regresszió jelenik meg, az a mi CI-unkban bukik el, nem a felhasználód panaszában.

Ezeknek a számoknak a nyilvános változata, konkrét képletekre bontott eltéréstáblázattal, a Pontosság oldalon található.

MakSeong · AstroWay

Az AstroWay API-t fejlesztem: a Swiss Ephemerist tiszta REST-be csomagolom és írok a unalmas részletekről, amelyek valójában fontosak.

// építs erre

Ugyanaz a Swiss Ephemeris, mint a Solar Fire-ben - 4 sor kóddal.

Ingyenes kulcs bankkártya nélkül. Havi 5 000 hívás a fizetésig.

További bejegyzések összes bejegyzés →

Engineering 2026-07-15

Három hivatalos SDK: TypeScript, Python, PHP a nyers curl helyett

A nyers HTTP működik, de a típusos kliens órákat spórol meg: útvonalak automatikus kiegészítése, kérés és válasz típusai, beépített újrapróbálkozás 408/409/429/5xx hibákra, és Stainless-stílusú hierarchia. Bemutatjuk a három hivatalos SDK-t - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - és hogy hogyan generálódtak egyetlen OpenAPI-szerződésből.

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.