feat(prezentacja): cache-busting plików statycznych (PRE-26)
Testy / Testy warstwy logicznej (silnik) (pull_request) Successful in 10m29s
Testy / Testy warstwy prezentacji (dostęp do baz) (pull_request) Successful in 9m36s
Testy / Build obrazu silnika B (swisseph) (pull_request) Successful in 11s
Testy / Kontrola składni wszystkich warstw (pull_request) Successful in 8s
build / build (push) Successful in 50s
Testy / Testy warstwy logicznej (silnik) (push) Successful in 10m51s
Testy / Testy warstwy prezentacji (dostęp do baz) (push) Successful in 9m29s
Testy / Build obrazu silnika B (swisseph) (push) Successful in 11s
Testy / Kontrola składni wszystkich warstw (push) Successful in 8s

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>
This commit was merged in pull request #48.
This commit is contained in:
2026-08-03 11:22:38 +02:00
parent 81e09aa6df
commit a0d1135db1
9 changed files with 90 additions and 22 deletions
@@ -1,7 +1,7 @@
{# Wyszukiwarka lokalizacji + interaktywna mapa (OpenStreetMap / Leaflet, bez klucza API).
Wklejana do formularzy z polami input[name=lat] / input[name=lon]. Samowystarczalna:
ładuje CSS/JS Leafleta (vendorowane lokalnie) oraz geo.js. Kafelki mapy lecą z OSM. #}
<link rel="stylesheet" href="/static/vendor/leaflet/leaflet.css">
<link rel="stylesheet" href="{{ static('vendor/leaflet/leaflet.css') }}">
<div class="geo" id="geoPicker">
<div class="geo-search">
<input type="search" id="geoSearch" autocomplete="off"
@@ -16,5 +16,5 @@
contributors (Nominatim). Kliknij mapę lub przeciągnij pineskę, by ustawić współrzędne.
</p>
</div>
<script defer src="/static/vendor/leaflet/leaflet.js"></script>
<script defer src="/static/geo.js"></script>
<script defer src="{{ static('vendor/leaflet/leaflet.js') }}"></script>
<script defer src="{{ static('geo.js') }}"></script>