Пř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.
Zamrznuté snímky
Sekce “Zamrznuté snímky”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 čemu | Co ověřuje | Rozchod |
|---|---|---|
| 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í pozice | 8-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.
Co jede na každém PR
Sekce “Co jede na každém PR”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.
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.