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

Jak udržujeme přesnost pod kontrolou: CI proti swetest a NASA

Přesnost v astro-API snadno degraduje jeden refaktor ephemeridy. Rozdělíme ochranu: jedno jádro Swiss Ephemeris na prohlížeči a serverech, stovky zmražených snapshotů na referenčních mapách a triangulace každého PR proti swetest CGI, Kerykeion, Prokerala a katalogu zatmění NASA.

Пřesnost je to, co vaší uživatelem nenápadně ověřuje na Astrodienst. Pokud se aktuální mapa rozpadla na koutovou minutu, podá se rychle. A nejhorší v tom je, že přesnost lze snadno zlomit nepatrným způsobem: jeden refaktoring v kódu ephemerid a polovina endpointů se tiše odplazuje na sekundové dvojkrouhy.

Takto se tomu zabrání.

Jediné jádro pro dva prostřední

Sekce “Jediné jádro pro dva prostřední”

Pozici planet vypočítává Swiss Ephemeris, zkompilovaný do WASM. Klíč: to je stejné jádro jak v prohlížeči našeho aplikace, tak na serveru API. Jedna kódová základna core/, přitahovaná do backendu přes cross-repo alias a vtažená do balíčku na buildu. Neexistuje „prohlížečová“ a „serverová“ implementace, které se mohou rozcházet – rozcházet se nic.

Pro data mimo hlavní rozsah ephemerid je analytický fallback (Moshier), trochu hrubší, ale bez rozchodů na hranicích. Svézná čestnost: konkrétní verzi runtimeu nepublikujeme, protože skutečná verze jádra je nižší než nejnovější upstream, a psát oznámení o tom bylo by lžou.

Každý výpočetní endpoint má sadu zamrznutých snímků – 873 JSON-fikcí na okamžik tohoto buildu. Runner spustí endpoint na etalonových kartách a pobítně (v mezích tolerance) srovná se snímky. Jakýkoli rozchod planetární délky větší než 5e-5° (0,18”) vylučuje test.

Etalonové mapy jsou vybrány tak, aby bily na okrajích, ne pouze na „přátelském“ centru:

  • Monroe, Diana, Einstein, Bowie – historické mapy s známými daty narození
  • polar šířka – kde se systémy domů vyrodí
  • ekvator – kde se chovají jinak
  • jih – pro ověřování zrcadlení

Omezené případy chytají právě ty regrese, které nejsou vidět na mapě podmíněného kozlačka.

Trojúhelník proti vnějším zdrojům

Sekce “Trojúhelník proti vnějším zdrojům”

Snímky chytají regrese relativně k sobě samým. Abyste ověřili absolutní pravdu, každý release srovnává se nezávislými zdroji:

Oproti čemuCo ověřujeRozchod
swetest CGI (Astrodienst)planetární délky, kušpí domů0.000"
Kerykeion (Python, pyswisseph)nezávislá implementace SwEph< 0.2"
Prokerala (sidereal Lahiri)sáiderní pozice8-17" , systémová rozdílnost formule Ayanamši, ne runtime
NASA 5-Millennium Eclipse Catalogčas a typ zatemnění< 1 min

Rozchod s Prokerala – to není chyba: to jsou rozdílné implementace formule Lahiri, a my to dokumentujeme explicitně, ne skrývame.

Astronomické mapy jsou samostatně ověřovány geometricky – přesnost na ekvatoru je lepší než 1,5 km.

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

  • api-accuracy.yml – na každém PR v backend-kódu spustí celý sadu snímků + trojúhelník. Červený test blokuje merge.
  • check-eclipse-accuracy.yml – jednou ročně srovnává zatemnění s katalogem NASA; rozchod nad hranicí automaticky spustí issue.
  • check-sweph-updates.yml – jednou týdně sleduje aktualizace Swiss Ephemeris a WASM-paketu; nová verze – issue na revíze, bez automatického merge (aktualizace runtimeu ephemerid je příliš citlivá věc pro automatické aktualizace).

Co to dá integrátorovi

Sekce “Co to dá integrátorovi”

Garance jednoduchá: planetární pozice v mezích < 0.1 koutové sekundy od etalonového Swiss Ephemeris, a tato mez je chráněna automaticky, ne slibem v README. Pokud se někdy objeví regrese, spadne do našeho CI, ne do vaší sázky uživatele.

Veřejná verze těchto čísel, s tabulkou rozchodů na konkrétních mapách, žije 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 surového curl

Surový HTTP funguje, ale typovaný klient šetří hodiny: automatické doplňování cest, typy požadavků a odpovědí, 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), astroway/sdk (Packagist) - a jak jsou generovány 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.