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

Hogyan tartjuk a pontosságot ellenőrzés alatt: CI a swetest és a NASA ellen

A pontosság az astro-API-ban könnyen romlik egy ephemeris refaktorálás miatt. Megvizsgáljuk a védelmet: egy Swiss Ephemeris mag a böngészőben és a szerveren, több száz fagyasztott snapshot a referencia térképeken, és minden PR háromszögelése a swetest CGI, Kerykeion, Prokerala és a NASA árnyék katalógusa ellen.

Pontosság - ez az, amit a felhasználó szemmel ellenőrizni fogja téged az Astrodienst-en. Ha a jelenlegi naplók elszakadtak a kerek órában, a panaszok gyorsan megjelennek. És a legrosszabb ebben az, hogy a pontosságot könnyen megsérthetjük észrevétlenül: egy kis refactoring a kódjában az ephemerisben, és a fele az endpointek csendben elmennek a sekély szögökbe.

Ez az, hogyan nem engedjük ezt megtörténni.

A bolygók pozícióit számolja a Swiss Ephemeris, amit WASM-ben összeállítottunk. A kulcs: ez ugyanaz a kód és a két környezetben, a böngészőnkben és a szerverünkön. Az egyetlen kód core/, amit áthúzunk a háttérben egy cross-repo alias segítségével, és beépítjük a buildbe. Nem létezik “böngésző” és “szerver” megvalósítás, amelyek eltérhetnek egymástól.

A különleges esetekhez a fallback-analitikus (Moshier) szolgál, amely kissé durvább, de nem szakad meg a határokon. Szándékosan őszinte: a valós verziót nem hirdetjük nyilván, mert a valós verzió a kód alacsonyabb, mint a legújabb felsőállomány, és a nagy számnak hangosat kiáltani volna hazugság.

Minden számítási endpointnek van egy fagyos szenzora - 873 JSON-fixturát az adott buildnél. A build futtatja az endpointet az alapértelmezett térképeken és a fixturával, és a fixturával együtt. Bármilyen eltérés a bolygók hosszúságában több mint 5e-5° (0.18″) elutasítja a tesztet.

A referencia térképeket úgy választjuk, hogy a határokon ütjék, nem csak a “kényelmes” közepén:

  • Monroe, Diana, Einstein, Bowie - történelmi térképek ismert születési adatokkal
  • pólus szélesség - ahol a rendszerek kivérzése
  • ekvator - ahol másként viselkednek
  • dél féltek - a tükörképek ellenőrzése

A határok a kisregressziókat azokat a regressziókat fogják elkapni, amelyeket a kisember nem lát a térképen.

A háromszöghöz viszonyítva az külső források

Szekció neve “A háromszöghöz viszonyítva az külső források”

A szenzorok a regressziókat azokat fogják elkapni, amelyek a saját magukhoz viszonyítva vannak. Hogy a teljes igazságot ellenőrizzük, minden buildet ellenőrizzük független forrásokkal:

EllenőrzésEllenőrzésEltérés
swetest CGI (Astrodienst)bolygók hosszúságai, kúpok a rendszerekben0.000″
Kerykeion (Python, pyswisseph)független SwEph megvalósítás< 0.2″
Prokerala (sidereal Lahiri)szaiderikus pozíciók8-17″, rendszeres különbség a Lahiri formulában, nem a rúgás
NASA 5-Millennium Eclipse Catalogidő és típus a sötétség< 1 h

A Prokerala eltérései nem hibák: különböző megvalósítások a Lahiri formulában, és dokumentáljuk ezt nyíltan, nem titkoljuk el. A swetest, amely az iparágban az alapértelmezett, nélküli dülöngéssel.

A csillagászati vonalakat külön ellenőrizzük geometriailag - a pontosság az ekvatoron jobb, mint 1.5 km.

A pontosság - ez a CI-gate, nem a szóban forgó ellenőrzés:

  • api-accuracy.yml - minden PR-n a háttérkód futtatja a teljes szenzorokat + háromszöghöz viszonyítva. A vörös teszt blokkolja a merge-t.
  • check-eclipse-accuracy.yml - évente ellenőrzi a sötétséget a NASA-katalógussal; a különbség több mint a küszöböt automatikusan elindítja a problémát.
  • check-sweph-updates.yml - havonta figyeli a felsőállományt a Swiss Ephemeris és a WASM-pakettel; új verzió - a probléma a revízióban, nincs automatikus frissítés (a rúgás a rúgásokat túl érzékeny a számára).

A garantáló egyszerű: a bolygók pozíciói a < 0.1 kúposzekund-ban vannak az alapértelmezett Swiss Ephemerishez képest, és ezt a garantáló automatikusan védjük, nem a README-ben tett ígérettel. Ha valaha is megjelenik egy regresszió, az a CI-ben fogja esni, nem a felhasználó panaszaiban.

A nyilvános verzió ezen számok, a különbségekkel a konkrét térképeken, él a Pontosság oldalon.

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.