feat(prezentacja): wskazówki partnerów 1–3 — offset GMT, „Tu i teraz”, wspólne dane (PRE-19/20/21) #28

Merged
gitea merged 2 commits from feat/qol-partners-1-2 into master 2026-07-24 15:12:50 +00:00
Owner

Trzy pierwsze wskazówki od partnerów. Pozostałe (Skompiluj + PDF) zapisane jako
wymagania PRE-22…PRE-24; Q-14 rozstrzygnięte — LaTeX pójdzie jako osobna
usługa render.

1 · PRE-19 — offset względem GMT

Etykieta mówiła Strefa (offset h)nie było jasne, względem czego. Teraz
Offset względem GMT (h) z podpowiedzią. Krok 15-minutowy już był; dołożyłem
zakres −12…+14, żeby nie dało się wpisać nieistniejącej strefy.

2 · PRE-20 — „Tu i teraz” zostawiał starą nazwę miejsca

Współrzędne skakały na bieżące położenie, ale w polu tekstowym zostawała stara
nazwa: formularz pokazywał jedno miejsce, a liczył dla innego. Cicha pomyłka.
Naprawione + pole czyszczone zanim poleci zapytanie, żeby przy braku sieci nie
została nieprawdziwa nazwa.

3 · PRE-21 — wspólne dane między zakładkami (+ imię i nazwisko)

Każdą zakładkę wypełniało się od nowa. Teraz raz wpisane dane wędrują za
użytkownikiem, a zmiana w jednej przenosi się na pozostałe.

Stan trzymany w localStorage, nie w sesji serwerowej — serwer zostaje
bezstanowy: żadnych danych urodzeniowych po stronie usługi (spójne z postawą
z LOG-32/PRE-16). Przy okazji dane synchronizują się też między osobnymi kartami
przeglądarki
(zdarzenie storage).

Dołożone pole imię i nazwisko — potrzebne do nagłówka PDF (PRE-24).

Dwie rzeczy, które trzeba było domknąć, żeby to działało naprawdę:

  • Kolejność skryptów. formsync.js w <head> z defer — skrypty defer idą
    w kolejności dokumentu, więc zdąży odtworzyć współrzędne zanim geo.js
    zbuduje mapę. Mapa startuje od razu we właściwym miejscu, zamiast przeskakiwać.
  • geo.js ustawia pola z kodu (.value = ...), co nie wywołuje zdarzeń —
    bez tego synchronizacja przegapiłaby każdy wybór z mapy, z wyszukiwarki
    i z „Tu i teraz”. Dołożony setVal(), który jawnie zgłasza change.

Zakładka bez danego pola (np. Sygnifikatory) nie kasuje wartości zapamiętanej
gdzie indziej; uszkodzony wpis w localStorage nie blokuje formularza.

Weryfikacja

Na żywym stacku (dane + logika + prezentacja) w przeglądarce:
dane z Horoskopu pojawiły się w Interpretacjach → zmiana godziny w Interpretacjach
dotarła do Kalendarza → pola nieobecne na zakładce (zodiak, system domów)
przetrwały → po POST imię zostało, a horoskop policzył się normalnie.

34 nowe testy strukturalne (JS-a w tym zestawie nie uruchomimy, a wszystkie te
regresje są ciche). Sprawdzone sabotażem. Całość: prezentacja 67 passed.

Zostaje

ID Rzecz
PRE-22 Wiele predykcji okresowych zapamiętywanych w sesji
PRE-23 Zakładka Skompiluj — zbiorczy raport
PRE-24 Raport PDF przez LaTeX (osobna usługa render)
Trzy pierwsze wskazówki od partnerów. Pozostałe (Skompiluj + PDF) zapisane jako wymagania **PRE-22…PRE-24**; **Q-14 rozstrzygnięte** — LaTeX pójdzie jako osobna usługa `render`. ## 1 · PRE-19 — offset względem GMT Etykieta mówiła `Strefa (offset h)` — **nie było jasne, względem czego**. Teraz `Offset względem GMT (h)` z podpowiedzią. Krok 15-minutowy już był; dołożyłem zakres **−12…+14**, żeby nie dało się wpisać nieistniejącej strefy. ## 2 · PRE-20 — „Tu i teraz” zostawiał starą nazwę miejsca Współrzędne skakały na bieżące położenie, ale w polu tekstowym zostawała stara nazwa: **formularz pokazywał jedno miejsce, a liczył dla innego**. Cicha pomyłka. Naprawione + pole czyszczone **zanim** poleci zapytanie, żeby przy braku sieci nie została nieprawdziwa nazwa. ## 3 · PRE-21 — wspólne dane między zakładkami (+ imię i nazwisko) Każdą zakładkę wypełniało się od nowa. Teraz raz wpisane dane wędrują za użytkownikiem, a zmiana w jednej przenosi się na pozostałe. Stan trzymany w **localStorage**, nie w sesji serwerowej — serwer zostaje **bezstanowy**: żadnych danych urodzeniowych po stronie usługi (spójne z postawą z LOG-32/PRE-16). Przy okazji dane synchronizują się też **między osobnymi kartami przeglądarki** (zdarzenie `storage`). Dołożone pole **imię i nazwisko** — potrzebne do nagłówka PDF (PRE-24). **Dwie rzeczy, które trzeba było domknąć, żeby to działało naprawdę:** - **Kolejność skryptów.** `formsync.js` w `<head>` z `defer` — skrypty defer idą w kolejności dokumentu, więc zdąży odtworzyć współrzędne **zanim** `geo.js` zbuduje mapę. Mapa startuje od razu we właściwym miejscu, zamiast przeskakiwać. - **`geo.js` ustawia pola z kodu** (`.value = ...`), co nie wywołuje zdarzeń — bez tego synchronizacja **przegapiłaby każdy wybór z mapy**, z wyszukiwarki i z „Tu i teraz”. Dołożony `setVal()`, który jawnie zgłasza `change`. Zakładka bez danego pola (np. Sygnifikatory) nie kasuje wartości zapamiętanej gdzie indziej; uszkodzony wpis w localStorage nie blokuje formularza. ## Weryfikacja Na **żywym stacku** (dane + logika + prezentacja) w przeglądarce: dane z Horoskopu pojawiły się w Interpretacjach → zmiana godziny w Interpretacjach dotarła do Kalendarza → pola nieobecne na zakładce (zodiak, system domów) przetrwały → po POST imię zostało, a horoskop policzył się normalnie. **34 nowe testy** strukturalne (JS-a w tym zestawie nie uruchomimy, a wszystkie te regresje są ciche). Sprawdzone sabotażem. Całość: **prezentacja 67 passed**. ## Zostaje | ID | Rzecz | |---|---| | PRE-22 | Wiele predykcji okresowych zapamiętywanych w sesji | | PRE-23 | Zakładka **Skompiluj** — zbiorczy raport | | PRE-24 | Raport PDF przez LaTeX (osobna usługa `render`) |
gitea added 1 commit 2026-07-24 14:21:28 +00:00
fix(prezentacja): offset wzgledem GMT + nazwa lokalizacji po „Tu i teraz”
Testy / Testy warstwy logicznej (silnik) (push) Successful in 11m23s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Successful in 9m53s
Testy / Build obrazu silnika B (swisseph) (push) Successful in 34s
Testy / Kontrola składni wszystkich warstw (push) Successful in 25s
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 11m3s
Testy / Testy warstwy prezentacji (dostęp do baz) (pull_request) Successful in 9m52s
Testy / Build obrazu silnika B (swisseph) (pull_request) Successful in 35s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 22s
740ed2302e
Dwie pierwsze wskazowki od partnerow biznesowych; pozostale piec zapisane jako
wymagania (PRE-21..PRE-24) do zrobienia w kolejnych krokach.

PRE-19 — offset wzgledem GMT. Etykieta mowila „Strefa (offset h)”, czyli nie
bylo jasne, wzgledem czego liczymy przesuniecie. Teraz „Offset wzgledem GMT (h)”
z podpowiedzia. Krok juz byl 15-minutowy (0,25 h) — dolozony zakres −12…+14,
zeby nie dalo sie wpisac strefy, ktora nie istnieje. Zmiana w trzech zakladkach,
ktore maja to pole (Horoskop, Interpretacje, Kalendarz).

PRE-20 — po „Tu i teraz” wspolrzedne i pineska skakaly na biezace polozenie, ale
w polu tekstowym zostawala STARA, wczesniej wpisana nazwa. Formularz pokazywal
jedno miejsce, a liczyl dla innego — cicha pomylka, nic sie nie wywalalo.
Handler zdarzenia astrololo:coords odswieza teraz nazwe przez reverseName.

Przy okazji druga strona tego samego bledu: reverseName czysci pole ZANIM
wysle zapytanie. Gdyby /reverse nie odpowiedzialo (brak sieci), zostalaby stara
nazwa — lepiej puste pole i poprawne wspolrzedne niz nazwa, ktora klamie.

Wymagania: PRE-19/20 (zrobione), PRE-21 wspolne dane miedzy zakladkami wraz
z polem imie i nazwisko, PRE-22 wiele predykcji okresowych w pamieci sesji,
PRE-23 zakladka „Skompiluj”, PRE-24 raport PDF przez LaTeX. Dolozone pytanie
otwarte Q-14 o lancuch LaTeX→PDF (gdzie postawic TeX Live, silnik unicode owy
pod glify, konwersja SVG) — decyzja wplywa na deploy i rozmiar obrazow.

Testy: 12 nowych, strukturalnych na zrodle (JS-a nie uruchomimy, a obie regresje
sa ciche). Sprawdzone sabotazem — po cofnieciu kazdej poprawki czerwienieja.
Calosc: prezentacja 45 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gitea added 1 commit 2026-07-24 15:10:11 +00:00
feat(prezentacja): wspolne dane formularza miedzy zakladkami + imie i nazwisko (PRE-21)
Testy / Testy warstwy logicznej (silnik) (push) Successful in 11m8s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Successful in 9m47s
Testy / Build obrazu silnika B (swisseph) (push) Successful in 33s
Testy / Kontrola składni wszystkich warstw (push) Successful in 26s
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 11m6s
Testy / Testy warstwy prezentacji (dostęp do baz) (pull_request) Successful in 9m49s
Testy / Build obrazu silnika B (swisseph) (pull_request) Successful in 38s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 23s
a20047ff59
Trzecia wskazowka partnerow. Kazda zakladke (Horoskop / Interpretacje /
Kalendarz) wypelnialo sie od nowa — te same imie, data, godzina, strefa
i miejsce. Teraz raz wpisane dane wedruja za uzytkownikiem, a zmiana w jednej
zakladce przenosi sie na pozostale.

Nowy formsync.js trzyma stan w localStorage. Dlaczego nie sesja na serwerze:
serwer zostaje BEZSTANOWY — zadnego magazynu sesji, zadnych danych urodzeniowych
trzymanych po stronie uslugi (spojne z postawa z LOG-32/PRE-16). Przy okazji
dane synchronizuja sie tez miedzy osobnymi kartami przegladarki, bo zdarzenie
`storage` daje to za darmo.

Dolozone pole „imie i nazwisko" (wszystkie trzy zakladki) — potrzebne do
naglowka raportu PDF (PRE-24). Handlery przyjmuja je i oddaja, wiec nie znika
po przeliczeniu.

Dwie rzeczy, ktore trzeba bylo domknac, zeby to dzialalo naprawde:

1. KOLEJNOSC SKRYPTOW. formsync.js ladowany w <head> z `defer` — skrypty defer
   wykonuja sie w kolejnosci dokumentu, wiec ten zdazy odtworzyc wspolrzedne,
   ZANIM geo.js zbuduje mape. Mapa startuje od razu we wlasciwym miejscu,
   zamiast przeskakiwac po chwili.

2. geo.js ustawia pola z KODU (`.value = ...`), co samo z siebie NIE wywoluje
   zdarzen — bez tego synchronizacja przegapilaby kazdy wybor z mapy, z
   wyszukiwarki i z „Tu i teraz". Dolozony setVal(), ktory jawnie zglasza
   `change`.

Zakladka bez danego pola (np. Sygnifikatory) nie kasuje wartosci zapamietanej
gdzie indziej; uszkodzony wpis w localStorage nie blokuje formularza.

Q-14 rozstrzygniete: lancuch LaTeX->PDF stanie jako OSOBNA USLUGA render —
spojne z izolacja swisseph (LOG-27), obraz produktu zostaje maly.

Weryfikacja na zywym stacku (data+logika+prezentacja) w przegladarce: dane
wpisane w Horoskopie pojawily sie w Interpretacjach; zmiana godziny w
Interpretacjach dotarla do Kalendarza; pola nieobecne na zakladce (zodiak,
system domow) przetrwaly; po POST imie zostalo, a horoskop policzyl sie
normalnie. Testy: 22 nowe strukturalne. Calosc: prezentacja 67 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gitea changed title from fix(prezentacja): offset względem GMT + nazwa lokalizacji po „Tu i teraz” (PRE-19/20) to feat(prezentacja): wskazówki partnerów 1–3 — offset GMT, „Tu i teraz”, wspólne dane (PRE-19/20/21) 2026-07-24 15:10:44 +00:00
gitea merged commit f34016a4a5 into master 2026-07-24 15:12:50 +00:00
gitea deleted branch feat/qol-partners-1-2 2026-07-24 15:12:51 +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#28