feat(logic): systemy zodiaku — syderyczny + draconic (LOG-04) #7

Merged
gitea merged 1 commits from feat/log04-zodiac-systems into master 2026-07-21 14:32:52 +00:00
Owner

LOG-04 — Systemy zodiaku

Jedyne wymaganie Must bez implementacji. Dodaje zodiak syderyczny (ayanamsy),
draconic i konwersje. Domyslnie tropikalny — istniejace wyniki bez zmian.

Model ayanamsy (walidacja wyrocznia)

Wszystkie ayanamsy dziela te sama predkosc precesji, roznia je tylko stala (syderyczne zero):
ayan(jd) = ayan0 + B·x + C·x², x = jd − J2000. Stale skalibrowane do Swiss Ephemeris
(get_ayanamsa_ut) uzytego jako wyrocznia — silnika B nie importujemy w tescie (izolacja
AGPL), wartosci wpiete jak referencje astro-seek gdzie indziej.

Zgodnosc ze swissephem: do ~0,02" w latach 1900–2100 (Lahiri, Fagan-Bradley, Krishnamurti).

Jak

  • zodiac.py — ayanamsy, offset(), julian_day(), to_equatorial() (RA).
  • chart.pybuild_chart(..., zodiac): offset jednolicie przesuwa etykiety obiektow, osi,
    cusps i Lots. Domy licza sie po dlugosci tropikalnej — obrot zodiaku jest niezmienniczy
    wzgledem geometrii, wiec numery domow sie nie zmieniaja (tylko etykiety znakow).
  • /chart/positions przyjmuje zodiac (tropical | sidereal_lahiri|fagan_bradley|krishnamurti
    | draconic); bledny -> 422.
  • Prezentacja: dropdown „Zodiak" + ayanamsa w wynikach.

Weryfikacja

  • 14 nowych testow: ayanamsy vs wyrocznia (<0.1"), julian_day (J2000), draconic (wezel=0°
    Barana), niezmienniczosc numerow domow, RA w punktach charakterystycznych, odrzucenie bledow.
  • Cala logika: 99 passed, 1 skipped (bylo 85 — nic nie zepsute).
  • E2E w przegladarce: horoskop syderyczny Lahiri dla 30.04.1984 — Slonce Aries 16°34'19"
    (= tropikalne Taurus 10°12' − ayan 23.638°), draconic North Node dokladnie 0° Barana.

Zakres / dalej

RA jest zaimplementowane jako konwersja + test, ale nie jako osobny widok-zodiak
(wymaga per-obiekt szerokosci ekliptycznej) — do osobnego PR. Zostaje tez pelniejsza lista
ayanams i „true node" draconic.

## LOG-04 — Systemy zodiaku Jedyne wymaganie **Must** bez implementacji. Dodaje zodiak **syderyczny** (ayanamsy), **draconic** i konwersje. Domyslnie tropikalny — istniejace wyniki bez zmian. ## Model ayanamsy (walidacja wyrocznia) Wszystkie ayanamsy dziela te sama predkosc precesji, roznia je tylko stala (syderyczne zero): `ayan(jd) = ayan0 + B·x + C·x²`, `x = jd − J2000`. Stale skalibrowane do **Swiss Ephemeris** (`get_ayanamsa_ut`) uzytego jako wyrocznia — silnika B **nie importujemy** w tescie (izolacja AGPL), wartosci wpiete jak referencje astro-seek gdzie indziej. **Zgodnosc ze swissephem: do ~0,02" w latach 1900–2100** (Lahiri, Fagan-Bradley, Krishnamurti). ## Jak - `zodiac.py` — ayanamsy, `offset()`, `julian_day()`, `to_equatorial()` (RA). - `chart.py` — `build_chart(..., zodiac)`: offset jednolicie przesuwa etykiety obiektow, osi, cusps i Lots. **Domy licza sie po dlugosci tropikalnej** — obrot zodiaku jest niezmienniczy wzgledem geometrii, wiec **numery domow sie nie zmieniaja** (tylko etykiety znakow). - `/chart/positions` przyjmuje `zodiac` (`tropical` | `sidereal_lahiri|fagan_bradley|krishnamurti` | `draconic`); bledny -> 422. - Prezentacja: dropdown „Zodiak" + ayanamsa w wynikach. ## Weryfikacja - **14 nowych testow**: ayanamsy vs wyrocznia (<0.1"), `julian_day` (J2000), draconic (wezel=0° Barana), niezmienniczosc numerow domow, RA w punktach charakterystycznych, odrzucenie bledow. - **Cala logika: 99 passed, 1 skipped** (bylo 85 — nic nie zepsute). - **E2E w przegladarce**: horoskop syderyczny Lahiri dla 30.04.1984 — Slonce Aries 16°34'19" (= tropikalne Taurus 10°12' − ayan 23.638°), draconic North Node dokladnie 0° Barana. ## Zakres / dalej RA jest zaimplementowane jako konwersja + test, ale **nie** jako osobny widok-zodiak (wymaga per-obiekt szerokosci ekliptycznej) — do osobnego PR. Zostaje tez pelniejsza lista ayanams i „true node" draconic.
gitea added 1 commit 2026-07-21 01:48:12 +00:00
feat(logic): systemy zodiaku — syderyczny, draconic (LOG-04)
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 10m40s
Testy / Build obrazu silnika B (swisseph) (pull_request) Failing after 29s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 22s
Testy / Testy warstwy logicznej (silnik) (push) Successful in 10m55s
Testy / Build obrazu silnika B (swisseph) (push) Failing after 35s
Testy / Kontrola składni wszystkich warstw (push) Successful in 21s
04b4b5dacb
Jedyne wymaganie Must bez implementacji. Nowy zodiac.py + wpiecie w horoskop:

- zodiac.py: ayanamsy (Lahiri, Fagan-Bradley, Krishnamurti) modelem
  ayan(jd)=ayan0+B*x+C*x^2 (wspolna precesja, rozna stala) — skalibrowanym
  do Swiss Ephemeris jako WYROCZNI: zgodnosc do ~0,02" w latach 1900-2100.
  Draconic = wzgledem wzla wznoszacego (wzel = 0 Barana). RA: konwersja
  ekliptyka->rownik (to_equatorial) na przyszly widok rownikowy.
- chart.py: build_chart(..., zodiac): offset jednolicie przesuwa etykiety
  znakow/dlugosci obiektow, osi, cusps i Lots; DOMY licza sie po dlugosci
  tropikalnej (geometria niezmiennicza wzgledem obrotu -> numery domow bez
  zmian). Domyslnie tropical -> sciezka i wyniki bez zmian.
- main.py: /chart/positions przyjmuje `zodiac`; bledny -> 422.
- prezentacja: dropdown „Zodiak" + pokazanie ayanamshy w wynikach.

Testy (14): ayanamsy vs wyrocznia swisseph (<0.1"), julian_day, draconic
(wzel=0 Barana), niezmienniczosc domow, RA w punktach charakterystycznych,
odrzucenie bledow. Cala logika: 99 passed, 1 skipped. Zweryfikowane e2e w
przegladarce (horoskop syderyczny Lahiri: Slonce Aries 16°34', ayan 23.6382).

RA jako osobny widok zodiaku (per-obiekt, z szerokoscia) — do osobnego PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gitea merged commit 6f87b2b323 into master 2026-07-21 14:32:52 +00:00
gitea deleted branch feat/log04-zodiac-systems 2026-07-21 14:32:52 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gitea/astrololo#7