Precisie is het waarop de gebruiker je onopvallend controleert op AstroWay. Als de huidige kaart op een hoekminuut is uitgevallen, zal de klacht snel binnenkomen. En het ergste van alles is dat precisie gemakkelijk kan worden gebroken onopvallend: één refactor in de ephemeride-code, en de helft van de endpoints is stil naar de secundaire cirkel gegaan.
Dit is hoe we dit voorkomen.
Eén kern voor twee omgevingen
Section titled “Eén kern voor twee omgevingen”De posities van de planeten worden berekend door Swiss Ephemeris, samengesteld in WASM. Het belangrijkste is dat deze kern hetzelfde is in zowel de browser van onze applicatie als op de server van de API. Er is één codebasis core/, getrokken in de backend via cross-repo alias en ingebouwd in de build. Er is geen “browserische” en “serverische” implementatie die kan uitvallen - ze gaan nergens heen.
Voor data buiten het hoofdgebied van de ephemeride is er een analytische fallback (Moshier), iets grover, maar zonder uitvalpunten op de grenzen. Openheid van zaken: we publiceren geen specifieke versie van de ruis, omdat de reële versie van de kern lager is dan de meest recente upstream, en het schreeuwen van een grote cijfer zou een leugen zijn.
Bevroren snapshots
Section titled “Bevroren snapshots”Elke berekenende endpoint heeft een set bevroren snapshots - 873 JSON-fiks op het moment van deze build. De runner loopt de endpoint op de referentiekaarten en vergeleek hem met de fiks. Als het enige verschil in de planetaire breedte meer is dan 5e-5° (0.18 ″), dan valt de test.
De referentiekaarten zijn zo gekozen dat ze op de randen slaan, en niet alleen op het “handige” midden:
- Monroe, Diana, Einstein, Bowie - historische kaarten met bekende geboortegegevens
- polar breedte - waar systemen thuis worden geboren
- equatoriale - waar ze anders gedragen
- zuidelijke halveid - controle van de spiegelbeeldigheid
Randgevallen vangen precies die regressies die niet zichtbaar zijn op de kaart van de gewone man.
Triangulatie tegen externe bronnen
Section titled “Triangulatie tegen externe bronnen”Bevroren snapshots vangen regressies ten opzichte van zichzelf. Om de absolute waarheid te controleren, wordt elk release vergeleken met onafhankelijke bronnen:
| Tegen wie | Wat controleert | Verschillen |
|---|---|---|
| swetest CGI (Astrodienst) | planetaire breedtes, kuipunten van systemen | 0.000 ″ |
| Kerykeion (Python, pyswisseph) | onafhankelijke implementatie van SwEph | < 0.2 ″ |
| Prokerala (sidereel Lahiri) | sidereele posities | 8-17 ″, systeemverschillen in de formule van Ayanamshi, niet ruis |
| NASA 5-Millennium Eclipse Catalog | tijd en type eclipsen | < 1 min |
Verschillen met Prokerala - geen fout: het zijn verschillende implementaties van de formule van Lahiri, en we documenteren dit expliciet, en niet door het te verbergen. Met swetest, die de standaard van de industrie is, is de verschil nul.
Astronomische lijnen worden apart gecontroleerd op geometrische precisie - de precisie op de evenaar is beter dan 1.5 km.
Wat loopt op elk PR
Section titled “Wat loopt op elk PR”Precisie is CI-gate, en niet eenmalige controle:
api-accuracy.yml- op elk PR loopt de backend-code de hele set van bevroren snapshots + triangulatie. De rode test blokkeert de merge.check-eclipse-accuracy.yml- één keer per jaar controleert hij eclipsen met het catalog van NASA; als het verschil groter is dan de drempel, dan wordt automatisch een issue aangemaakt.check-sweph-updates.yml- één keer per week controleert hij de upstream Swiss Ephemeris en het WASM-pakket; als er een nieuwe versie is, dan wordt automatisch een issue aangemaakt.
Wat dit geeft aan de integrator
Section titled “Wat dit geeft aan de integrator”Garantie: planetaire posities binnen < 0.1 graden van het referentie-Swiss Ephemeris, en deze grens wordt automatisch beschermd, en niet door een belofte in README. Als er ooit een regressie optreedt, dan valt deze in onze CI, en niet in de klacht van je gebruiker.
De openbare versie van deze cijfers, met een tabel van de verschillen op specifieke kaarten, leeft op de pagina Precisie.
Dezelfde Swiss Ephemeris als in Solar Fire - in 4 regels code.
Gratis sleutel zonder kaart. 5.000 calls per maand tot de eerste betaling.