diff --git a/.gitignore b/.gitignore index ae46525..14e7aed 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,16 @@ services/data/data_files/*.xlsx services/data/data_files/.files-state.json !services/data/data_files/.gitkeep +# Materiały w docs/, które NIE trafiają do repo: +# - kupione bazy interpretacji i eksport ich opisów — pułapki (DAN-26) działają +# tylko, gdy każda kopia ma inne markery, a kopia w gicie trafia do każdego klona i CI; +# - dane urodzeniowe prawdziwych osób (kosmogramy). +docs/astro19 version2026.xlsm +docs/The Encyclopaedia of Medical Astrology_FILENAMEtymcz-tab6 4parser.xlsx +docs/astro-excel4_4parser2.xlsm +docs/interpretacje.xlsx +docs/kosmogramy z astro2019.xlsx + # Narzędzia .env .DS_Store diff --git a/docs/SIGNIFICATORS KEY.xlsx b/docs/SIGNIFICATORS KEY.xlsx new file mode 100644 index 0000000..c403d12 Binary files /dev/null and b/docs/SIGNIFICATORS KEY.xlsx differ diff --git a/docs/analiza-klient-2026-09.md b/docs/analiza-klient-2026-09.md new file mode 100644 index 0000000..674a627 --- /dev/null +++ b/docs/analiza-klient-2026-09.md @@ -0,0 +1,204 @@ +# Analiza materiałów od klienta — wrzesień 2026 + +Źródła: +- `astro parser TO DO LIST 2026-09-05.xlsx` — dalej **TO DO**, +- `astro parser_2026-09-13.docx` — dalej **specyfikacja**, +- dosłane 2026-10-04: `wznoszenie znaków ascensional times.xlsx` i `fidaria calculator.xls`. + +Architektura (trzy warstwy) zostaje bez zmian. Uwagi klienta o architekturze i stosie technologicznym są tu celowo pominięte. + +Wnioski są naniesione do rejestru `astrololo_wymagania.xlsx` w tym samym PR. Każda zmiana — z wartością „było / jest", powodem i dowodem — jest w arkuszu **„Zmiany 2026-10"**. + +Legenda pewności: **[kod]** sprawdzone w kodzie · **[hipoteza]** wniosek z objawów, niesprawdzony. + +## TL;DR + +1. **Interpretacje pokazują sygnifikatory, których w horoskopie nie ma.** Klient ma rację, mechanizm potwierdzony w kodzie, a ten sam błąd zasila prompt do LLM. Dodatkowo wyszukiwanie ucina rekordy limitem 5000, więc część bazy w ogóle nie jest sprawdzana. +2. **Specyfikacja (docx) to w ~90% wynik AI, którego klient jeszcze nie przejrzał** (znacznik „{DOTĄD SPRAWDZONE}" w części 2 z 21). Służy jako skorowidz, nie jako wymagania. +3. **Priorytety bierzemy z TO DO.** Astrologia wedyjska, chińska i majańska występuje tylko w specyfikacji — trafiła do pytań (Q-15), nie do wymagań. +4. **Wygląd i interfejs zapisane jako opcje do wyboru:** język, motyw jasny obok obecnego ciemnego, kolorowanie, „symbol + skrót", styl koła. +5. **Rejestr:** 56 nowych wymagań, 103 zmiany w istniejących, 34 nowe pytania (Q-15…Q-48), 21 haseł słownika. +6. **17 statusów skorygowanych w dół.** Te wiersze już w pierwotnej treści obiecywały funkcje, których w kodzie nie ma. +7. **Pięć plików z `docs/` celowo poza repozytorium** — kupione bazy i dane osobowe (sekcja 7). + +## 1. Interpretacje działają źle (potwierdzone w kodzie) + +**Zgłoszenie (TO DO, wiersz 11, \*\*\*).** Pod nagłówkiem „Sun w Taurus" pojawia się rekord „Sun in Gemini or Sagittarius, in square or opposition the Moon", choć żaden z warunków nie zachodzi. Fasetka „koniunkcja z Moon — 84 dopasowań" zbiera każdą koniunkcję czegokolwiek z Księżycem. Pokazują się też rekordy o dyrekcjach („by dir."), których nie liczymy, i o godnościach („well-dig. at B."), które w tym horoskopie nie są spełnione. + +**Mechanizm [kod].** `_facet_samples` w [significators.py](../services/logic/app/significators.py#L70) przepuszcza rekord, jeśli tekst jego sygnifikatora *zawiera* wszystkie tokeny fasetki ([linia 82](../services/logic/app/significators.py#L82)). Sprawdza więc, czy rekord *wspomina* te tokeny, a nie czy *wszystkie jego warunki* są spełnione w horoskopie. Skutki: + +- Nie rozróżnia, **która** planeta jest w aspekcie. Rekord `[Ve [conj [Mo … [Su in 7th H.` trafia do fasetki „Słońce w koniunkcji z Księżycem". +- Ignoruje **dodatkowe warunki** rekordu: inny znak, inny aspekt, kwalifikatory techniki („by dir.", „tr."), godności („at B."). +- **Limit 5000 [kod].** Wyszukiwanie po tokenie planety jest ucinane do 5000 rekordów ([main.py](../services/logic/app/main.py#L253), [excel_provider.py](../services/data/app/providers/excel_provider.py#L166)). Licznik „[Su: 5415 rekordów" jest liczony *przed* ucięciem, więc ok. 400 rekordów Słońca nigdy nie trafia do sprawdzania, a liczba w nagłówku nie odpowiada temu, co sprawdzono. + +Ta sama funkcja obsługuje Kalendarz ([`interpret_events`](../services/logic/app/significators.py#L265)), a generator promptów (LOG-29/30) bierze dopasowania z tego samego `build_report` ([main.py](../services/logic/app/main.py#L338), [prompt.py](../services/logic/app/prompt.py#L66)). Model z przekonaniem cytuje więc świadectwa, których w horoskopie nie ma. + +**W rejestrze:** +- LOG-15 (parser) → „Do zrobienia"; +- LOG-16 (atomy) i LOG-19 (wypis) → „W trakcie"; +- kryteria odbioru naprawy, z przykładami klienta jako testami, są w LOG-19; +- ekran opisuje PRE-36; +- przypadek „rekord nie do oceny" — pytanie Q-35. + +## 2. Czym są te dokumenty + +**TO DO (xlsx)** to właściwa lista robocza: arkusz „LISTA TO DO" z priorytetami (\*\*\* / \*\* / \* / brak = na tym etapie niekonieczne) oraz 16 arkuszy-wzorców tabel. Arkusz ma też **legendę kolorów [kod — odczyt stylów]**: +- **pomarańczowy** = „muszę uzupełnić ten opis — lepiej poczekać": wiersze 24, 32–34, 37, 40, 42–45, 73–76, 79, 87, 89, 91, 92, 94, 96, 98, 100; +- **żółty** = „jeszcze w ogóle nie ugryzione — poczekać": wiersze 27 i 38. + +Wymagania z tych wierszy mają w rejestrze dopisek „opis u klienta do uzupełnienia". + +**Specyfikacja (docx)** to „Kompletna specyfikacja techniczna" w 21 częściach. Według klienta to efekt ponad 20 godzin pracy z agentem AI, wciąż niedokończony. Ustalenia z formatowania [kod — odczyt XML]: + +- Legenda cieniowania akapitów: pomarańczowy = „to jeszcze uzupełnię", żółty = „kompletnie do poprawki", łososiowy = „chyba out". +- Flagi występują **tylko w częściach 1–2**, a w części 2 — zaraz po „Accidental dignities" — stoi znacznik **„{DOTĄD SPRAWDZONE}"**. Części 3–21 to **nieprzejrzany wynik AI**. +- Kolor „chyba out" nie występuje ani razu. +- Czerwona czcionka w częściach 1–2 to specyfikacja kolorów UI (osłabienia, domy kadentne, ujemne punkty), a nie znacznik „bzdura". +- Dokument jest urwany („TU WYWALIŁ BŁĄD" w części 11, „TU SIĘ SKOŃCZYŁ LIMIT WĄTKU" w części 21). +- Zawiera błędy merytoryczne, np. „0.5° Vigintile (1/40)" zamiast 18° (1/20). Arkusz „ASPECTS" w TO DO ma to poprawnie. **Przy konflikcie źródłem prawdy jest xlsx.** + +## 3. Błędy w działającej aplikacji + +| TO DO | Prio | Zgłoszenie | Ocena | Rejestr | +|---|---|---|---|---| +| 11 | \*\*\* | Interpretacje pokazują nieobecne sygnifikatory | **[kod]** potwierdzone, sekcja 1 | LOG-15/16/19, PRE-36 | +| 9 | \*\*\* | Pliki 5 MB i 7,75 MB kończą się „Gateway Timeout" | **[hipoteza]** 504 zwraca proxy/ingress — w aplikacji nie ma limitu rozmiaru. Rozmiary pasują do `astro19 version2026.xlsm` (7,76 MiB) i `Encyclopaedia of Medical Astrology` (4,9 MiB). **[kod]** Nawet po usunięciu przekroczenia czasu domyślna reguła wgrywania przyjmuje tylko `.xlsx` ([files.py](../services/data/app/files.py#L64)), więc `.xlsm` zostanie odrzucony. | DAN-29, DAN-16 (→ Must) | +| 9 | \*\*\* | Komunikat „nie nadaje się do użycia" dopiero przy ponownym wgraniu | Walidacja od razu po wgraniu + stały opis wymaganego układu | DAN-30, PRE-34 | +| 10 | \*\*\* | Brak listy wgranych plików | **[hipoteza]** Lista istnieje w astrololo (DAN-27). Klient pracuje najpewniej na astrokliencie, który z założenia jest „bez administracji". | PRE-35, Q-19, Q-21 | +| 12 | \*\*\* | Ekran „Sygnifikatory" — nie wiadomo, do czego służy | Wymaga wpisywania tokenów w składni bazy | PRE-37 | + +## 4. Wygląd i interfejs — jako opcje do wyboru + +Zgodnie z decyzją: zmiany wyglądu są **opcjami**, nie zamiennikami — obecny wygląd zostaje dostępny. + +| Wymaganie | Opcja | +|---|---| +| PRE-30 | język interfejsu: angielski lub polski | +| PRE-31 | motyw jasny obok obecnego ciemnego | +| PRE-32 | kolorowanie komórek wg planet, znaków i aspektów | +| PRE-33 | zapis „symbol + skrót" (`☍ opp`, `☉ Su`, `♐ Sag`) | +| PRE-49 | zakotwiczenie koła: Asc / whole sign / Baran / Rak / Słońce / Księżyc | +| PRE-50 | granice terminów i dekanatów na kole | +| PRE-51 | styl linii aspektów | + +Wartości domyślne motywu i języka oraz zasięg przełącznika języka (wszystkie warianty? raporty LLM?) — pytania Q-17 i Q-18. + +## 5. Co zostało naniesione do rejestru + +| Warstwa | Wymagania przed → po | Zrobione / W trakcie / Do zrobienia — przed | po | +|---|---|---|---| +| Dane | 28 → 37 | 14 / 3 / 11 | 13 / 5 / 19 | +| Logika | 34 → 51 | 29 / 3 / 2 | 18 / 12 / 21 | +| Prezentacja | 29 → 59 | 27 / 1 / 1 | 23 / 5 / 31 | +| Pytania otwarte | 14 → 48 | | | + +### Korekty statusów (17) + +Zasada: status opisuje to, co wiersz obiecuje **w swojej pierwotnej treści**. Lipcowy audyt czytał te wiersze łagodnie („rdzeń działa"). Obecny czyta je ściśle, z dowodem w kodzie dla każdej korekty. + +- **LOG-15** → Do zrobienia: parsera nie ma (moduł sam nazywa się zalążkiem). +- **LOG-17** → Do zrobienia: brak obsługi „asp" / „asp+" / „asp-". +- **LOG-16, LOG-19** → W trakcie: sekcja 1. +- **LOG-20** → W trakcie: brak „as-is-in-chart" i liczby trafień. +- **LOG-02** → W trakcie: brak gwiazd stałych oraz węzła i Lilith w wersji true. +- **DAN-09** → W trakcie: efemerydy tylko głównych ciał, bez asteroid i gwiazd. +- **LOG-03** → W trakcie: brak prędkości w % ruchu i konfigurowalnej stacji umownej. +- **LOG-04, PRE-07** → W trakcie: brak zodiaku RA. +- **LOG-06, PRE-06** → W trakcie: z aspektów pobocznych tylko 30/45/150°, jedna orba dla wszystkich, brak harmonik, poziomów dokładności i aspektu przez znak. +- **LOG-07** → W trakcie: orb paraleli stały (1°), niekonfigurowalny. +- **LOG-10** → W trakcie: tylko profekcje roczne; brak miesięcznych, dziennych, ciągłych i Lord of the Orb. +- **LOG-12** → W trakcie: brak monthly revolutions. +- **PRE-01** → W trakcie: brak listy lokalizacji domyślnych i domyślnej daty/godziny. +- **PRE-04** → W trakcie: z technik relacyjnych tylko synastria; solariusz i lunariusz nie mają ekranu. + +**LOG-08 i LOG-14 zostają „Zrobione"** — ich pierwotna treść jest spełniona: By Degree / By Sign, odwracanie i 7 Lots hermetycznych w [lots.py](../services/logic/app/engine/lots.py#L29); tabela technique | significator | start | exact | end w [timeline.py](../services/logic/app/engine/timeline.py#L30). Nowy zakres klienta wydzielony do **LOG-50** (Lots z listy klienta) i **LOG-51** (docelowy format tabeli predykcji). + +### Priorytety podniesione (13, nigdy nie obniżane) + +- **Dane:** DAN-06 (orby), DAN-07 (czasy wznoszenia), DAN-08 (Lots), DAN-10 (katalog aspektów), DAN-16 (`.xlsm`). +- **Logika:** LOG-07, LOG-10, LOG-11, LOG-12, LOG-13, LOG-17. +- **Prezentacja:** PRE-06, PRE-08. + +Wszystkie na Must, zgodnie z \*\*\* u klienta albo zależnością od naprawy z w.11. + +### Nowe wymagania według tematów + +- **Wgrywanie i bazy:** DAN-29 (duże pliki), DAN-30 (walidacja od razu), PRE-34, PRE-35, PRE-37. +- **Horoskopy i dane wejściowe:** + - DAN-31 i PRE-40: kopiuj/wklej; + - DAN-32: format Zet; + - DAN-33 i PRE-41: lokalizacje domyślne; + - LOG-38 i PRE-38: strefa z DST, UT, czas gwiazdowy; + - PRE-39: zapisane horoskopy. +- **Aspekty i orby:** LOG-37 (daty dokładności, tabela ASPECT LIST), PRE-43, PRE-44, PRE-45 i macierz orbów w zmianach DAN-06, LOG-06, PRE-06. +- **Synastria:** LOG-42 (obliczenia z pełnymi ustawieniami), PRE-46–48 (dane obu osób, tabela A–aspekt–B, koło podwójne, pełny kwadrat aspektów). +- **Tabele:** + - LOG-36: godności i faza; + - LOG-39 i PRE-53: dane obiektów; + - LOG-40 i PRE-52: tabela stopni; + - LOG-41: midpointy; + - PRE-59: godziny planetarne, syzygia, żywioły, asteroidy. +- **Predykcja:** + - LOG-35: Firdaria — wariant i pełny cykl, sekcja 6; + - LOG-43: tranzyty; + - LOG-44: ingresy, okresy cienia, OOB, lunacje; + - LOG-45: progresje sekundarne; + - LOG-46: Days of the Moon; + - LOG-51 i PRE-54: zunifikowana tabela; + - PRE-55: tabele technik okresowych. +- **Poza astrologią zachodnią (niski priorytet):** numerologia (LOG-47, DAN-35, PRE-56), chiromancja i fizjonomika (LOG-48, PRE-57), Astro\*Carto\*Graphy (LOG-49), atlasy medyczny i historyczny (DAN-36, PRE-58). +- **Luka w rejestrze uzupełniona:** DAN-28 (lustro baz w SQL). Numer był już używany w kodzie (`services/data/requirements.txt`, commit 003deb9) i w repo deploy, ale w rejestrze go brakowało. + +## 6. Dosłane materiały + +### Czasy wznoszenia znaków (`wznoszenie znaków ascensional times.xlsx`) + +- Tabela © 2004 The Golden Hind Press: szerokości 0–66° N, wartości w stopniach i minutach (1° = 1 rok życia), pary znaków o równym czasie. +- **Sprawdzone wzorem [kod]** (wznoszenie skośne): przy nachyleniu ekliptyki ok. 23,4465° (wartość z ok. 1945 r.) zgadza się do 0,6′ w 305 z 306 komórek. +- **Jedna literówka:** 40°, Lew/Skorpion — w tabeli 38°20′, powinno być 38°02′ (tylko ten wiersz nie sumuje się do 180°). +- **Tabela nie wystarcza do algorytmu z TO DO w.57–65:** brak szerokości ułamkowych (dla Warszawy odczyt z wiersza 52° myli się o ok. 7 tygodni), półkuli południowej i pasa 66,6°–78,5°, gdzie część znaków ma czasy ujemne. +- **Rekomendacja:** liczyć wzorem, a tabelę trzymać jako wyrocznię testów (DAN-07, LOG-13). Decyzja i rozbieżności spec ↔ TO DO — pytania Q-37…Q-41. +- Gotowe elementy w kodzie: `_ascensional_difference` i `mean_obliquity` w `houses.py`. + +### Kalkulator firdarii (`fidaria calculator.xls`) + +- Arkusz liczy okresy z samej daty urodzenia, w trzech wariantach obok siebie: dzienny, nocny Zollera (węzły zaraz po Marsie — poleca go autor arkusza) i nocny Abu Ma'shara (węzły na końcu). +- **Nasz `firdaria.py` zgadza się z arkuszem [kod]** w wariancie dziennym i nocnym Abu Ma'shara: 51/51 władców okresów na przykładzie z arkusza. Daty różnią się w 2 z 51 wierszy — inna długość roku: 365,2422 u nas, 365,2425 w arkuszu. +- **Braki:** + - wariant Zollera — dla przykładowego urodzenia nocnego z 1984 r. daje dziś inny okres (Węzeł Południowy zamiast Słońca); + - liczenie po 75. roku życia — arkusz zaczyna cykl od nowa, u nas wynik się kończy; + - ręczny wybór sekty. +- W rejestrze: LOG-35 (wariant do wyboru, pełny cykl, test referencyjny na danych arkusza), Q-42 (wariant domyślny). + +## 7. Pliki poza repozytorium + +Do repo trafiła cała zawartość `docs/` poza pięcioma plikami, dopisanymi do `.gitignore`: + +- **Kupione bazy interpretacji:** `astro19 version2026.xlsm` (ok. 50 tys. rekordów), `The Encyclopaedia of Medical Astrology…xlsx` (ok. 54 tys., na bazie książki Cornella), `astro-excel4_4parser2.xlsm`. +- **Eksport opisów z baz:** `interpretacje.xlsx` (444 opisy). +- **Dane osobowe:** `kosmogramy z astro2019.xlsx` — dane urodzeniowe ok. 49 prawdziwych osób. + +Powód: pułapki (DAN-26) działają tylko wtedy, gdy każda kopia baz ma inne markery, a kopia w gicie trafiłaby do każdego klona i runnera CI. Historii gita praktycznie nie da się wyczyścić. `lots astroseek.xlsx` i `lots astroseek 2.xlsx` są identyczne — oba w repo, bo leżały w `docs/`. + +## 8. Pytania do klienta + +Pełna lista w arkuszu „Pytania otwarte" (Q-15…Q-48). Najważniejsze: + +- **Q-15** — czy astrologia wedyjska, chińska i majańska to zakres; +- **Q-16** — kiedy będą przejrzane części 3–21 specyfikacji; +- **Q-17, Q-18** — domyślny motyw i język, zasięg przełącznika języka; +- **Q-19** — na którym wariancie i koncie widać problemy z wgrywaniem; +- **Q-26** — reguły łączenia orbów i bonus świateł; +- **Q-35** — co pokazywać przy rekordach nie do oceny; +- **Q-37…Q-41** — czasy wznoszenia: tabela czy wzór, zamiana na datę, skrajne szerokości, małe lata Wenus; +- **Q-42** — wariant firdarii nocnej; +- **Q-43…Q-46** — techniki z opisem „do uzupełnienia": ZR, Annual Divisions, Days of the Moon, Solar Monthly Revolutions. + +## 9. Proponowana kolejność + +1. **Naprawa dopasowania sygnifikatorów** (LOG-15/16/19, PRE-36). Psuje Interpretacje, Kalendarz i prompt do LLM; dopóki działa źle, każda funkcja na nim dziedziczy błąd. +2. **Wgrywanie plików** (DAN-29/30, DAN-16, PRE-34/35) — klient nie może wgrać własnych baz. +3. **Horoskopy, kopiuj/wklej, lokalizacje domyślne** (DAN-31–33, PRE-39–41) — codzienna wygoda, \*\*\*. +4. **Orby i aspekty** (DAN-06, LOG-06, PRE-43/45), potem **synastria** (LOG-42, PRE-46–48) — synastria korzysta z tych samych orbów. +5. **Opcje wyglądu** (PRE-30–33, 49–51) razem z porządkowaniem wariantów astrololo / astroklient / astrodemo, żeby nie robić tego trzy razy. +6. Dalej techniki z \*\*\* według TO DO. Wiersze oznaczone u klienta kolorem „do uzupełnienia" — po uzupełnieniu opisu. diff --git a/docs/astro parser TO DO LIST 2026-09-05.xlsx b/docs/astro parser TO DO LIST 2026-09-05.xlsx new file mode 100644 index 0000000..274b862 Binary files /dev/null and b/docs/astro parser TO DO LIST 2026-09-05.xlsx differ diff --git a/docs/astro parser_2026-09-13.docx b/docs/astro parser_2026-09-13.docx new file mode 100644 index 0000000..a45d3f2 Binary files /dev/null and b/docs/astro parser_2026-09-13.docx differ diff --git a/docs/astrololo_wymagania.xlsx b/docs/astrololo_wymagania.xlsx index 63e679c..3ea496c 100644 Binary files a/docs/astrololo_wymagania.xlsx and b/docs/astrololo_wymagania.xlsx differ diff --git a/docs/astroparser notes3.docx b/docs/astroparser notes3.docx new file mode 100644 index 0000000..5b7fb5f Binary files /dev/null and b/docs/astroparser notes3.docx differ diff --git a/docs/astroparser_notes2.docx b/docs/astroparser_notes2.docx new file mode 100644 index 0000000..7b80493 Binary files /dev/null and b/docs/astroparser_notes2.docx differ diff --git a/docs/fidaria calculator.xls b/docs/fidaria calculator.xls new file mode 100644 index 0000000..c87e65b Binary files /dev/null and b/docs/fidaria calculator.xls differ diff --git a/docs/lots astroseek 2.xlsx b/docs/lots astroseek 2.xlsx new file mode 100644 index 0000000..f6065e7 Binary files /dev/null and b/docs/lots astroseek 2.xlsx differ diff --git a/docs/lots astroseek 3.xlsx b/docs/lots astroseek 3.xlsx new file mode 100644 index 0000000..260d105 Binary files /dev/null and b/docs/lots astroseek 3.xlsx differ diff --git a/docs/lots astroseek.xlsx b/docs/lots astroseek.xlsx new file mode 100644 index 0000000..f6065e7 Binary files /dev/null and b/docs/lots astroseek.xlsx differ diff --git a/docs/wznoszenie znaków ascensional times.xlsx b/docs/wznoszenie znaków ascensional times.xlsx new file mode 100644 index 0000000..7a1500d Binary files /dev/null and b/docs/wznoszenie znaków ascensional times.xlsx differ