# Pontosság

## TL;DR

Az AstroWay API a **Swiss Ephemeris**t használja (az Astrodienst hivatalos C-kódja,
az **astro.com** alkotóitól, akik 30+ éve szolgálnak ki professzionális asztrológusokat
a **Solar Fire ($495), Kepler ($995), Astro Gold ($29.99/hó)** és a Janus számára).
Mi WebAssembly-ben összeállítottuk, és REST API réteggel láttuk el, közvetlenül,
származékos felár nélkül. Minden alapvető számítási endpointot regressziós
snapshot-teszttel fedtünk le; a motor pontosságát triangulációval három független
forrás + az **NASA 5-Millennium Eclipse Catalog** ellenőriztük:

- **Bolygópályák**: `< 0.1 ívmásodperc` az Astrodienst hivatalos `swetest` CGI-jéhez képest
- **Placidus házak kuszpidjai**: `0.000"` pontos egyezés
- **Nap- és holdfogyatkozások**: `< 1 perc` az NASA katalógusához képest
- **ACG vonalak**: `< 1.5 km` az egyenlítőnél a `swetest`hez képest
- **Napkelte/napnyugta**: `< 10 másodperc` a timeanddate.com-hoz képest
- **Hold VOC, ingressusok, bolygókonjunkciók**: másodperc töredéke pontosság

## A motor

| Komponens | Érték |
|-----------|-------|
| Könyvtár | Swiss Ephemeris C kód (aloistr/swisseph) |
| Verzió | upstream Astrodienst C kód |
| Bindings | swisseph-wasm (WebAssembly Node.js-ben) |
| Ephemeris | DE431 JPL ephemeris (`.se1` fájlokon keresztül) |
| Fallback | Moshier analitikus (1800–2399-on kívül) |
| Kódmegosztás | Shared `@/core` az app.astroway.info-ról — egy motor, két szállítás |

## Módszertan

A pontosságot **triangulációval** ellenőrizzük — három független forrás összehasonlításával:

### 1. swetest CGI (referencia)

Az Astrodienst hivatalos referencia-implementációja a Swiss Ephemerisből — a kód,
amely létrehozta az **Astro.com**-t és millió asztrológust szolgál ki szerte a világon.
A legmegbízhatóbb nyilvános forrás. A mi motorunk **azonos** (0.00–0.07 ívmásodperc
szórás).

### 2. Kerykeion (Python)

Független Python-könyvtár, amely a mi WASM-nk helyett a `pyswisseph` bindungokat
használja. Bizonyítja, hogy a WASM rétegünk nem torzítja az adatokat.

### 3. Prokerala API

Távoli Swiss Ephemeris API (sidereal Lahiri). A 8–17 ívmásodperces rendszeres
szórás a különböző Lahiri ayanamsa képletekből ered, **nem** a motor pontosságából.

## Triangulációs eredmények

| Születési lap | szemben swetest (Astrodienst) | szemben Kerykeion (Python) | szemben Prokerala API |
|---------------|-------------------------------|----------------------------|-----------------------|
| Monroe 1926   | **0.00"** | 0.19" | 16.95" (szisztematikus) |
| Diana 1961    | **0.00"** | 0.69" | 8.18" (szisztematikus)  |
| Einstein 1879 | 0.07"     | Kerykeion LMT-artefaktuma | 14.96" (szisztematikus) |

## Endpoint-szintű regressziós teszt

Minden alapvető számítási endpointot fagyasztott snapshot-teszttel fedtünk le 3
referencia-születési lapon (Monroe / Diana / Einstein) = **{siteMeta.snapshotCount} snapshot**.

A snapshot-suite elkapja:

- **Bemeneti adatok leképezési hibáit** — helytelen bolygóazonosító, UT, házrendszer
- **Utófeldolgozási hibákat** — kerekítés, egységkonverzió, előjelvesztés
- **Alapértelmezett eltéréseket** — mean vs true node, geocentrikus vs topocentrikus
- **Schema driftet** — a validáció elmulasztotta a helytelen formátumot
- **Elavult deploymentet** — a prod dist nem felel meg a kódnak

Tolerancia: `5e-5°` (≈0.18 ívmásodperc) alapértelmezés szerint minden numerikus mezőre.

## Részletes benchmarkok

### Bolygópályák (trópusi, szemben swetest)

| Születési lap | Dátum | Maximális szórás |
|---------------|-------|------------------|
| Marilyn Monroe  | 1926-06-01 | **0.00"** |
| Princess Diana  | 1961-07-01 | **0.00"** |
| Albert Einstein | 1879-03-14 | 0.07"     |

### Placidus házak kuszpidjai (szemben swetest)

| Születési lap | szórás ASC | szórás MC | Maximális kuszpid-szórás |
|---------------|------------|-----------|--------------------------|
| Monroe | 0.000" | 0.000" | 0.000" |
| Diana  | 0.000" | 0.000" | 0.000" |

### Nap- és holdfogyatkozások (szemben NASA 5-Millennium katalógus)

| Esemény | NASA maximum | Mi maximum | Szórás |
|---------|--------------|------------|--------|
| 2025-03-14 Holdfogyatkozás  | 06:58 UT | 06:58 UT | 0.8 perc |
| 2025-03-29 Napfogyatkozás   | 10:47 UT | 10:47 UT | 0.5 perc |
| 2025-09-07 Holdfogyatkozás  | 18:11 UT | 18:11 UT | 0.8 perc |
| 2025-09-21 Napfogyatkozás   | 19:41 UT | 19:42 UT | 1.0 perc |

### Asztro-kartográfia (szemben swetest RA-formula)

Minden MC/IC/ASC/DSC vonal a helyes `longitude = RA − GMST` formulát használja
(Kenneth Bowser szabványa). Szórás az etalonhoz képest: **< 1.5 km** az egyenlítőn
minden bolygóra.

### Napkelte/napnyugta (szemben timeanddate.com)

| Hely | Dátum | Paraméter | Szórás |
|------|-------|-----------|--------|
| London | 2026-04-15 | Napkelte | 0.6 s |
| London | 2026-04-15 | Napnyugta  | 9 s   |

**Sarkvidéki helyek** (|szélesség| > 66.5°) automatikusan visszaadják a `polarState`-t +
figyelmeztetést, hogy a szokásos planetary hours nem definiáltak.

### Aspektus orbiszok

Az AstroWay **változó orbiszokat** használ bolygónként (a két bolygó MIN szabálya),
ahogy a ZET9-ben és az astro.com-on. Alapértelmezett orbiszok (születési lapra):

| Aspektus | Nap | Hold | Belső | Jupiter | Külső |
|----------|-----|------|-------|---------|-------|
| Konjunkció | 12°  | 10° | 5° | 8° | 5° |
| Szextil   | 6.5° | 6°  | 5° | 5° | 5° |
| Négyzet    | 10°  | 8°  | 5° | 7° | 5° |
| Trínó      | 12°  | 8°  | 5° | 5° | 5° |
| Oppozíció  | 12°  | 10° | 5° | 8° | 5° |

Kisebb aspektusok (36°, 40°, 45°, 72°, 108°, 135°, 144°) **alapértelmezés szerint
ki vannak kapcsolva**. Aktiválásukhoz használd az `ALL_ASPECTS` opciót.

## Sarkvidéki szélességek

|szélesség| > 66.5° esetén a Placidus / Koch / Regiomontanus rendszerek matematikailag
nincs definiálva. Ilyen esetekben a Swiss Ephemeris automatikusan Porphyry-t ad vissza,
és az API egy figyelmeztetést ad:

```json
{
  "system": "P",
  "warning": "A Placidus rendszer nincs definiálva lat=68.96° (> 66.5°) esetén. A Swiss Ephemeris a Porphyry-t használja..."
}
```

## Folyamatos ellenőrzés

A regresszió minden PR esetén CI-n keresztül kerül ellenőrzésre:

- `api-calc/tests/endpoints/` — {siteMeta.snapshotCount} snapshot a referencia-születési
  lapokon (Monroe / Diana / Einstein) + synastry / composite / davison
- `.github/workflows/api-accuracy.yml` — automatikus futtatás PR esetén
- Trianguláció a swetest CGI + Kerykeion ellen — hetente
- Upstream Swiss Ephemeris monitorozás Dependabot-on keresztül

## Ismert korlátok

- **Dátumok a tartományon kívül** (1800 előtt és 2399 után): Moshier analitikus
  kerül használatra, pontosság ~0.1" (< 0.01" a DE431 fájlok SWIEPH-jához képest)
- **True Lilith (id=13) vs Mean Lilith (id=12)**: akár 12° különbség — alapértelmezés
  szerint Mean Lilith (stabil viselkedés), True Lilith az `planetIds: [13]`-on keresztül
  érhető el
- **Topocentrikus vs geocentrikus**: alapértelmezés szerint geocentrikus

## Hivatkozások

- Swiss Ephemeris: https://www.astro.com/swisseph/
- swetest CGI: https://www.astro.com/swisseph/swetest.htm
- NASA Nap- és holdfogyatkozási katalógus: https://eclipse.gsfc.nasa.gov/
- Kerykeion: https://github.com/g-battaglia/kerykeion
- Astrodienst: https://www.astro.com/

## Kapcsolat

Pontossági kérdésekkel: írj a support@astroway.info címre a születési lap adataival
és a várt etalonnal (astro.com vagy más megbízható forrás).
