Po deployu przeglądarka trzymała stare styles.css / *.js — ten sam URL, więc
serwowała z cache mimo nowej wersji. Doklejamy do URL-a krótki HASH TREŚCI pliku:
zmienił się plik → zmienił się URL → przeglądarka pobiera nowy; bez zmian URL
zostaje ten sam i cache dalej działa (bustujemy tylko to, co się zmieniło).
- `static_url(name)` + globalny helper Jinja `static()`: `/static/x?v=<md5[:8]>`.
Hash liczony raz na proces (lru_cache) — nowy pod po deployu = świeży hash;
brak pliku → `?v=0`, nie wywala strony.
- Wszystkie odwołania w szablonach (styles.css, nasze *.js, vendor Leaflet) idą
teraz przez helper zamiast surowego `/static/...`.
Testy: +5 (hash w URL, zależny od treści, brak-pliku-bezpieczny, żaden szablon nie
serwuje surowej ścieżki, base używa helpera). Test kolejności skryptów zaktualizowany
pod nowy format. Prezentacja 214.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
QoL 2/2: pole „Szukaj miejsca" (nazwa/adres/POI) + interaktywna mapa na
formularzach horoskopu / interpretacji / kalendarza. Bez klucza API.
- geocode.py: proxy OSM/Nominatim PO STRONIE SERWERA (poprawny User-Agent,
throttling ~1 req/s, cache TTL 1h) — endpointy /geocode i /reverse.
Wolanie z serwera, nie z przegladarki: latwiej trzymac polityke Nominatim
i dziala niezaleznie od secure-context (http://<ip>).
- _location_picker.html: wspolny partial (search + wyniki + mapa + atrybucja),
wpiety includem do 3 formularzy z polami lat/lon.
- geo.js: Leaflet — wyszukiwanie (debounce), klik na wynik ustawia lat/lon i
centruje mape, klik/drag pineski ustawia wspolrzedne + /reverse pokazuje
nazwe; sync z „Tu i teraz" (now.js emituje event astrololo:coords).
- Leaflet 1.9.4 vendorowany lokalnie (static/vendor/leaflet, BSD-2-Clause,
permisywny) — niezaleznosc od CDN; kafelki mapy z OSM. Marker jako divIcon
(bez plikow PNG).
- styles.css: style pod ciemny motyw.
Zweryfikowane w przegladarce: domyslny widok (pineska na Szpitalu Barlickiego),
wyszukanie „Wawel Krakow" -> lista -> klik ustawia 50.0547/19.9361 i przesuwa
mape, klik w mape ustawia wspolrzedne + reverse wypelnia nazwe. Zero bledow
w konsoli. /geocode i /reverse zwracaja szpital; cache dziala.
Uwaga wdrozeniowa: pod prezentacji potrzebuje egressu do
nominatim.openstreetmap.org; przegladarki — do tile.openstreetmap.org.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>