Precizia este lucrul pe care utilizatorul ți-l verifică în tăcere pe Astrodienst. Dacă o hartă natală diferă cu un minut de arc, plângerea vine repede. Și cel mai rău este că precizia se strică ușor fără să observe nimeni: o refactorizare în codul efemeridelor și jumătate dintre endpoint-uri alunecă pe tăcute cu câteva secunde de arc.
Iată cum împiedicăm asta.
Un singur nucleu pentru două medii
Section titled “Un singur nucleu pentru două medii”Pozițiile planetare sunt calculate de Swiss Ephemeris. Esențialul: aplicația noastră și API-ul au același nucleu de calcul, aceeași bază de cod. Nu există două implementări care să poată diverge, deci nu are ce să diveargă.
Pentru datele din afara intervalului principal al efemeridelor există un fallback analitic (Moshier), puțin mai grosier, dar fără discontinuități la granițe. Onestitate asumată: nu declarăm public versiunea concretă a motorului, pentru că versiunea reală a nucleului este mai veche decât cea mai nouă din upstream, iar a scrie un număr impresionant ar fi o minciună.
Snapshot-uri înghețate
Section titled “Snapshot-uri înghețate”Fiecare endpoint de calcul are un set de snapshot-uri înghețate: 888 fixture-uri JSON la momentul acestui build. Runner-ul rulează endpoint-ul pe hărți de referință și compară rezultatul byte cu byte (în limita toleranței) cu fixture-ul. Orice abatere a longitudinii planetare mai mare de 5e-5° (0.18″) pică testul.
Hărțile de referință sunt alese astfel încât să lovească în margini, nu doar în centrul “comod”:
- Monroe, Diana, Einstein, Bowie: hărți istorice cu date de naștere cunoscute
- latitudine polară: acolo unde sistemele de case degenerează
- ecuatorială: acolo unde se comportă altfel
- emisfera sudică: verificarea simetriei în oglindă
Tocmai cazurile limită prind regresiile care nu se văd pe harta unui locuitor obișnuit al Kievului.
Triangulare contra surselor externe
Section titled “Triangulare contra surselor externe”Snapshot-urile prind regresiile față de ele însele. Pentru a verifica adevărul absolut, fiecare release este comparat cu surse independente:
| Contra ce | Ce verifică | Diferență |
|---|---|---|
| swetest CGI (Astrodienst) | longitudini planetare, cuspidele caselor | 0.000″ |
| Kerykeion (Python, pyswisseph) | implementare independentă a SwEph | < 0.2″ |
| Prokerala (sidereal Lahiri) | poziții siderale | 8-17″, diferență sistematică în formula ayanamsa, nu în motor |
| NASA 5-Millennium Eclipse Catalog | ora și tipul eclipselor | < 1 min |
Diferența față de Prokerala nu este o eroare: sunt implementări diferite ale formulei Lahiri, iar noi documentăm asta explicit, în loc să o ascundem. Față de swetest, care este referința industriei, deriva este zero.
Liniile de astrocartografie sunt verificate separat, geometric: precizia la ecuator este mai bună de 1.5 km.
Ce rulează la fiecare PR
Section titled “Ce rulează la fiecare PR”Precizia este un gate de CI, nu o verificare punctuală:
api-accuracy.yml: la fiecare PR în codul de backend rulează întregul set de snapshot-uri + triangularea. Un test roșu blochează merge-ul.check-eclipse-accuracy.yml: o dată pe an compară eclipsele cu catalogul NASA; o diferență peste prag deschide automat un issue.check-sweph-updates.yml: săptămânal urmărește upstream-ul Swiss Ephemeris; o versiune nouă înseamnă un issue pentru review, fără automerge (actualizarea motorului de efemeride este prea sensibilă pentru un update automat).
Ce îi oferă asta integratorului
Section titled “Ce îi oferă asta integratorului”Garanția este simplă: pozițiile planetare se încadrează în < 0.1 secunde de arc față de Swiss Ephemeris de referință, iar această limită este protejată de automatizare, nu de o promisiune în README. Dacă vreodată apare o regresie, ea va pica în CI-ul nostru, nu în plângerea utilizatorului tău.
Versiunea publică a acestor cifre, cu tabelul diferențelor pe hărți concrete, se află pe pagina Precizie.
Poziții la secundă de arc în 4 linii de cod.
Cheie gratuită fără card. 5.000 de apeluri pe lună până la prima plată.