AstroWay/api v2.217.2 · cs
všechny systémy jsou v pořádku

Jak držíme přesnost pod kontrolou: CI proti swetest a NASA

Přesnost astro API snadno utrpí jediným refaktoringem efemerid. Rozebíráme ochranu: jedno jádro Swiss Ephemeris pro aplikaci i API, stovky zmrazených snapshotů na referenčních horoskopech a triangulace každého PR proti swetest CGI, Kerykeion, Prokerala a katalogu zatmění NASA.

Přesnost je to, co si uživatel potichu ověřuje na Astrodienstu. Když se natální horoskop rozejde o úhlovou minutu, stížnost přiletí rychle. A nejhorší na tom je, že přesnost se dá snadno rozbít nenápadně: jeden refaktoring v kódu efemerid a polovina endpointů se tiše posune o obloukové vteřiny.

Takhle tomu bráníme.

Jedno jádro pro dvě prostředí

Sekce “Jedno jádro pro dvě prostředí”

Pozice planet počítá Swiss Ephemeris. Podstatné je, že naše aplikace i API mají jedno výpočetní jádro, jednu kódovou základnu. Nejsou tu dvě implementace, které by se mohly rozejít, takže se nemá co rozcházet.

Pro data mimo hlavní rozsah efemerid existuje analytický fallback (Moshier), o něco hrubší, ale bez skoků na hranicích. Vědomá poctivost: konkrétní verzi enginu veřejně neuvádíme, protože skutečná verze jádra je nižší než nejnovější upstream a psát tam efektní číslo by byla lež.

Každý výpočetní endpoint má sadu zmrazených snapshotů: 873 JSON fixtur v okamžiku tohoto buildu. Runner spustí endpoint na referenčních horoskopech a porovná výsledek s fixturou bajt po bajtu (v mezích tolerance). Jakákoli odchylka planetární délky větší než 5e-5° (0.18″) test shodí.

Referenční horoskopy jsou vybrané tak, aby mířily na okraje, a ne jen na “pohodlný” střed:

  • Monroe, Diana, Einstein, Bowie: historické horoskopy se známými údaji o narození
  • polární šířka: kde systémy domů degenerují
  • rovníková: kde se chovají jinak
  • jižní polokoule: kontrola zrcadlení

Hraniční případy chytají právě ty regrese, které na horoskopu běžného Kyjevana vidět nejsou.

Triangulace proti externím zdrojům

Sekce “Triangulace proti externím zdrojům”

Snapshoty chytají regrese vůči sobě samým. Aby se ověřovala absolutní pravda, každé vydání se porovnává s nezávislými zdroji:

Proti čemuCo ověřujeOdchylka
swetest CGI (Astrodienst)planetární délky, hroty domů0.000″
Kerykeion (Python, pyswisseph)nezávislá implementace SwEph< 0.2″
Prokerala (sidereal Lahiri)siderické pozice8-17″, systémový rozdíl ve vzorci ajanámši, ne v enginu
NASA 5-Millennium Eclipse Catalogčas a typ zatmění< 1 хв

Odchylka od Prokeraly není chyba: jde o různé implementace vzorce Lahiri a dokumentujeme to otevřeně, místo abychom to schovávali. Se swetestem, který je oborovým standardem, je drift nulový.

Astrokartografické linie se navíc ověřují geometricky: přesnost na rovníku je lepší než 1.5 km.

Co běží na každém PR

Sekce “Co běží na každém PR”

Přesnost je CI gate, ne jednorázová kontrola:

  • api-accuracy.yml: na každém PR do backendového kódu projede celou sadu snapshotů a triangulaci. Červený test blokuje merge.
  • check-eclipse-accuracy.yml: jednou ročně porovná zatmění s katalogem NASA; odchylka nad prahem automaticky založí issue.
  • check-sweph-updates.yml: každý týden sleduje upstream Swiss Ephemeris; nová verze znamená issue k review, bez automatického merge (aktualizace enginu efemerid je na automatický update příliš citlivá věc).

Co z toho má integrátor

Sekce “Co z toho má integrátor”

Záruka je jednoduchá: pozice planet v mezích < 0.1 obloukové vteřiny od referenčního Swiss Ephemeris, a tuto hranici hlídá automatizace, ne slib v README. Pokud se někdy objeví regrese, spadne v našem CI, ne ve stížnosti tvého uživatele.

Veřejná verze těchto čísel s tabulkou odchylek na konkrétních horoskopech je na stránce Přesnost.

MakSeong · AstroWay

Dělám AstroWay API: zabaluju Swiss Ephemeris do čistého REST a píšu o nudných detailech, které jsou ve skutečnosti důležité.

// postav na tom

Stejný Swiss Ephemeris jako v Solar Fire - ve 4 řádcích kódu.

Zdarma klíč bez karty. 5 000 volání za měsíc do první platby.

Více z blogu všechny příspěvky →

Engineering 2026-07-15

Tři oficiální SDK: TypeScript, Python, PHP místo holého curl

Holé HTTP funguje, ale typovaný klient ušetří hodiny: doplňování cest, typy požadavku i odpovědi, vestavěný retry na 408/409/429/5xx a hierarchie chyb ve stylu Stainless. Rozebíráme tři oficiální SDK, @astroway/sdk (npm), astroway (PyPI) a astroway/sdk (Packagist), a to, jak se generují z jednoho OpenAPI kontraktu.

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.