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>
- engine/lots.py: formuła Lot = C + A − B z odwracaniem w horoskopach nocnych
(zamiana A<->B); 7 Lots hermetycznych (Fortuna, Duch, Eros, Konieczność,
Odwaga, Zwycięstwo, Nemezis) — Fortuna i Duch liczone pierwsze, bo pozostałe
się do nich odwołują. Dwa warianty: degree (domyślny) i sign (całe znaki).
- build_chart: liczy sektę (reużyta is_day_birth z Firdarii) i zwraca lots
ze znakiem, pozycją i domem; parametr lots_method.
- wyszukiwarka: token [PF (tak Fortuna występuje w realnej bazie) + rozwinięcie
skrótu do "Part of Fortune".
- widok Horoskop: tabela Lots z formułami i sektą.
Walidacja (dwie niezależne wyrocznie z notes3):
- Fortuna = Can 12°35'27" vs astro-seek Can 12°35'24" (3 sekundy różnicy), dom 1;
- Duch potwierdzony przez swoją antyscję (Taurus 28°14' z tabeli antyscji);
- odwracanie nocne: Fortuna nocna == Duch dzienny i odwrotnie;
- Lots pochodne faktycznie używają Fortuny/Ducha; wariant sign trafia w 0° znaku.
85 testów przechodzi (nowy test_lots).
Odblokowuje Zodiacal Releasing (LOG-11), które startuje z Fortuny/Ducha.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Aspekty:
- engine/aspects.py: aspekty główne (conj/sex/sq/tri/opp) z orbami
(bonus dla luminarzy), separacja z obsługą zawinięcia. Applying/sep na później.
- build_chart zwraca listę aspektów; /chart/positions je udostępnia;
widok Horoskop pokazuje tabelę aspektów.
Bogatsze sygnifikatory:
- trzecia faseta "w aspekcie": dla każdego aspektu głównego obiektu filtruje
rekordy po tokenie aspektu + drugiej planety ([conj + [Mo). Cookbook
komplet: znak + dom + aspekt.
Dopieszczenie wyników:
- ODSIEWANIE DUPLIKATÓW: duplikat = ten sam sygnifikator ORAZ ten sam opis
(po normalizacji). Dedup wewnątrz fasety, działa też na wynikach z wielu baz.
- _facet_samples przyjmuje wiele tokenów (AND); dedup + istniejące odsiewanie szumu.
Zweryfikowano na realnym main_base.xlsx (30.04.1984): 16 aspektów zgodnych z
astro.com (Sun conj Moon 9.59°, Sun opp Saturn 3.17°); faseta aspektu daje
bogate trafienia (Sun koniunkcja z Moon 84, opozycja z Saturn 43); dedup obniżył
duplikaty (Sun w znaku 46->44). 36 testów przechodzi.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Kontynuacja silnika efemeryd o osie i domy.
- engine/houses.py: czysta matematyka sferyczna — Asc, MC (z RAMC + ε + φ),
cusps dla Whole Sign / Equal / Porphyry, przypisanie obiektu do domu.
- SkyfieldEngine.sidereal(): RAMC (lokalny apparent ST) + średnie nachylenie
ekliptyki ze Skyfielda.
- engine/chart.py: build_chart() składa pełny horoskop (pozycje + osie + domy).
- Endpoint /chart/positions rozszerzony o house_system i zwraca angles + cusps
+ numer domu per obiekt.
- Prezentacja: lokalizacja i wybór systemu domów w formularzu, tabela osi,
kolumna Dom, rozwijane cusps.
Walidacja względem astro.com (30.04.1984, Warszawa): Asc Can 22°10'43",
MC Pis 22°35'29" (~1' od referencji); wszystkie przypisania domów Whole Sign
zgodne (Sun 11, Mercury 10, Mars 5, ...). 20 testów przechodzi.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>