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.
Egy mag két környezetre
Szekció neve “Egy mag két környezetre”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.
Befagyasztott snapshotok
Szekció neve “Befagyasztott snapshotok”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 ellen | Mit ellenőriz | Eltérés |
|---|---|---|
| swetest CGI (Astrodienst) | bolygóhosszúságok, házcsúcsok | 0.000″ |
| Kerykeion (Python, pyswisseph) | független SwEph-implementáció | < 0.2″ |
| Prokerala (sidereal Lahiri) | sziderikus pozíciók | 8-17″, az ayanamsa-képlet rendszerszintű különbsége, nem a motoré |
| NASA 5-Millennium Eclipse Catalog | a 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.
Mi fut minden PR-en
Szekció neve “Mi fut minden PR-en”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).
Mit jelent ez az integrátornak
Szekció neve “Mit jelent ez az integrátornak”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ó.
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.