Sari la conținut
AstroWay/api v2.158.7 · ro
toate sistemele sunt în stare normală

Precizia calculelor

API-ul AstroWay utilizează Swiss Ephemeris (codul C oficial de la Astrodienst, creatorii astro.com) - același motor pe care astrologii profesioniști lucrează de peste 30 de ani în Solar Fire ($495), Kepler ($995), Astro Gold ($29.99/lună) și Janus. L-am compilat în WebAssembly și l-am expus ca un strat API REST, fără marjă de intermediere. Fiecare dintre endpoint-urile de calcul de bază este acoperit de teste de regresie snapshot; precizia motorului este verificată prin triangulare cu trei surse independente + împotriva NASA 5-Millennium Eclipse Catalog:

  • Poziții planetare: mediana 0.0013", maxim 0.561" vs swetest CGI oficial Astrodienst (măsurat pe 29.07.2026, pe 130 de măsurători). Defalcare pe corpuri mai jos
  • Cuspidele caselor Placidus: 0.000" potrivire exactă
  • Eclipse: < 1 minut vs NASA Eclipse Catalog
  • Linii ACG: < 1.5 km la ecuator vs swetest
  • Răsărit/Apus de Soare: < 10 secunde vs timeanddate.com
  • Moon VOC, ingrese, conjuncții planetare: precizie până la o fracțiune de secundă

Aceste numere nu sunt o estimare, ci rezultatul unei rulări. Scriptul ia 10 hărți, distribuite între anii 1900 și 2050, solicită aceleași momente de la un swetest CGI Astrodienst live și compară toate cele 13 corpuri pe care le returnăm. În total 130 de măsurători.

CorpDerivă maximă
Soare, Venus, Saturn0.001"
Mercur0.002"
true Node0.004"
Marte0.007"
Jupiter0.009"
Lună0.022"
Uranus0.083"
Pluto0.097"
Neptun0.223"
Chiron0.561"
mean Apogee (Lilith)0.000"

Mediana pentru toate cele 130 de măsurători: 0.0013".

Anterior, pe această pagină, exista o promisiune generală de «< 0.1 arcsec». Măsurătorile din 29.07.2026 au arătat că Neptun, Pluto și Chiron nu o respectă, de aceea promisiunea a fost înlocuită cu cifrele reale. Chiron și planetele exterioare au o derivă mai mare deoarece pozițiile lor sunt preluate dintr-un set comprimat de efemeride în compilarea WASM.

Poți reproduce singur: api-calc/scripts/accuracy-vs-swetest.mjs efectuează exact aceste solicitări și tipărește același tabel.

Verifică singur. Scriptul cu care au fost măsurate cifrele de mai sus se află într-un depozit public sub licența MIT: astroway/astrology-accuracy-benchmark. Nu funcționează doar cu noi: un adaptor pentru orice alt API înseamnă treizeci de rânduri, așa că aceleași 130 de măsurători pot fi rulate împotriva unui concurent și comparate. Cheia de sandbox este suficientă.

ComponentăValoare
BibliotecăSwiss Ephemeris C code (aloistr/swisseph)
Versiunecod C upstream Astrodienst
Binding-uriswisseph-wasm (WebAssembly în Node.js)
EfemerideDE431 JPL ephemeris (prin fișiere .se1)
FallbackMoshier analytical (pentru date în afara intervalului 1800-2399)
Partajare codShared @/core cu app.astroway.info - un singur motor, două transporturi

Precizia este verificată prin triangulare - compararea cu trei surse independente:

Implementarea de referință oficială Swiss Ephemeris de la Astrodienst înșiși - echipa care a creat Astro.com și deservește milioane de astrologi din întreaga lume. Cea mai autoritară sursă publică. Motorul nostru este identic (0.00–0.07 secunde de arc derivă).

O bibliotecă Python independentă utilizează binding-uri pyswisseph în locul WASM-ului nostru. Confirmă că stratul nostru WASM nu denaturează datele.

API Swiss Ephemeris la distanță (Lahiri sideral). Deriva sistemică de 8–17 secunde de arc este legată de diferite versiuni ale formulei Lahiri ayanamsa, și nu de precizia motorului.

Hartăvs swetest (Astrodienst)vs Kerykeion (Python)vs Prokerala API
Monroe 19260.00”0.19”16.95” (sistemic)
Diana 19610.00”0.69”8.18” (sistemic)
Einstein 18790.07”artefact LMT Kerykeion14.96” (sistemic)

Fiecare dintre endpoint-urile de calcul de bază este acoperit de teste snapshot înghețate pe 3 hărți de referință (Monroe / Diana / Einstein) = 873 snapshot-uri.

Suita de snapshot-uri detectează:

  • Bug-uri de mapare a datelor de intrare - ID planetă incorect, UT, sistem de case
  • Post-procesare - rotunjire, conversie unități, pierdere de semn
  • Divergența valorilor implicite - nod mediu vs nod adevărat, geocentric vs topocentric
  • Schema drift - validarea a omis o formă incorectă
  • Deploy învechit - distribuția de producție nu corespunde codului

Toleranță: 5e-5° (≈0.18 secunde de arc) implicit pentru toate câmpurile numerice.

HartăDatăDerivă maximă
Marilyn Monroe1926-06-010.00”
Princess Diana1961-07-010.00”
Albert Einstein1879-03-140.07”
Hartăderivă ASCderivă MCDerivă maximă cuspide
Monroe0.000”0.000”0.000”
Diana0.000”0.000”0.000”
EvenimentMaxim NASAMaximul nostruDerivă
2025-03-14 Totală Lunară06:58 UT06:58 UT0.8 min
2025-03-29 Parțială Solară10:47 UT10:47 UT0.5 min
2025-09-07 Totală Lunară18:11 UT18:11 UT0.8 min
2025-09-21 Parțială Solară19:41 UT19:42 UT1.0 min

Astrocartografie (vs formula RA din swetest)

Section titled “Astrocartografie (vs formula RA din swetest)”

Toate liniile MC/IC/ASC/DSC utilizează formula corectă longitude = RA − GMST (standard Kenneth Bowser). Derivă față de referință: < 1.5 km la ecuator pentru toate planetele.

Răsărit / Apus de Soare (vs timeanddate.com)

Section titled “Răsărit / Apus de Soare (vs timeanddate.com)”
LocațieDatăParametruDerivă
London2026-04-15Răsărit0.6 s
London2026-04-15Apus9 s

Locațiile polare (|lat| > 66.5°) returnează automat polarState + avertisment că orele planetare obișnuite nu sunt definite.

AstroWay utilizează orbe variabile per-planetă (regula MIN a două planete), la fel ca în ZET9 și astro.com. Orbe implicite (pentru harta natală):

AspectSunMoonInterioareJupiterExterioare
Conjuncție12°10°
Sextil6.5°
Cuadratură10°
Trigon12°
Opoziție12°10°

Aspectele minore (36°, 40°, 45°, 72°, 108°, 135°, 144°) sunt dezactivate implicit. Se activează explicit prin ALL_ASPECTS.

Pentru |lat| > 66.5° sistemele Placidus / Koch / Regiomontanus nu sunt definite matematic. În astfel de cazuri, Swiss Ephemeris returnează automat Porphyry, iar API-ul nostru adaugă un avertisment:

{
"system": "P",
"warning": "Система Placidus не визначена для lat=68.96° (> 66.5°). Swiss Ephemeris підставив Porphyry..."
}

Regresia este verificată la fiecare PR prin CI:

  • api-calc/tests/endpoints/ - 873 snapshot-uri împotriva hărților de referință (Monroe / Diana / Einstein) + synastry / composite / davison
  • .github/workflows/api-accuracy.yml - rulare automată la PR
  • Triangulare împotriva swetest CGI + Kerykeion - săptămânal
  • Monitorizarea upstream Swiss Ephemeris prin Dependabot

Precizia motorului este jumătate din încredere. Cealaltă jumătate este contractul de ieșire, pe care un agent (Claude, ChatGPT, Cursor) îl poate valida. Serverul nostru MCP nu returnează «text brut, descurcă-te singur»:

  • structuredContent tipizat. Peste 600 de instrumente MCP, iar majoritatea covârșitoare dintre ele publică o outputSchema strictă - clientul MCP primește o structură validată, nu un șir de caractere pe care trebuie să-l parseze la întâmplare.
  • Protecție împotriva schema drift. Testul CI openapi-example-drift validează fiecare snapshot de regresie împotriva schemei derivate din propriul său exemplu: dacă ieșirea reală a endpoint-ului diferă de schema publicată, compilarea eșuează. Exact această clasă de divergențe cauzează eroarea MCP -32602 Output validation error.
  • Erorile sunt erori. Eșecul instrumentului este întotdeauna returnat cu un flag isError și un cod tipizat (UPPER_SNAKE). Noi nu returnăm niciodată modelului un stack trace brut sau căi interne ale serverului ca «date».

Adică, integrarea prin MCP este la fel de previzibilă ca și un apel REST direct: ceea ce este descris în /openapi.json este ceea ce returnează instrumentul.

  • Date în afara intervalului (înainte de 1800 și după 2399): se utilizează Moshier analytical, precizie ~0.1” (vs < 0.01” pentru SWIEPH cu fișiere DE431)
  • True Lilith (id=13) vs Mean Lilith (id=12): diferență de până la 12° - implicit Mean Lilith (comportament stabil), True Lilith este disponibil prin planetIds: [13]
  • Topocentric vs geocentric: implicit geocentric

Pentru întrebări legate de precizie: scrie la support@astroway.info cu datele hărții și etalonul așteptat (astro.com sau altă sursă autoritară).

Util?
Запропонувати правку

Ultima actualizare: