Files
shopPRO/.paul/docs/TECH_CHANGELOG.md
Jacek Pyziak 6c924ae542 fix: wyciek meta_title homepage na podstrony kategorii/artykulu/produktu (v0.351)
LayoutEngine::show() w 3 galeziach (category/article/product) nadpisywal
tylko $page['language']['title'], a meta_title homepage zylo dalej i wygrywalo
w substytucji [TITLE]. Wyodrebniono applyEntityMetaToPage() jako pure-function
ktora zawsze nadpisuje meta_title/meta_keywords/meta_description encji
(nawet pustym/null), eliminujac wyciek.

5 nowych testow w LayoutEngineMetaTagsTest. Suita 846 testow zielona.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 22:38:02 +02:00

4.4 KiB

TECH_CHANGELOG

Chronologiczny log zmian technicznych — co i dlaczego.

v0.351 (2026-05-13)

  • Naprawiono wyciek metatagow ze strony glownej na podstrony kategorii/artykulu/produktu: <title> wszystkich podstron pokazywal tytul homepage ("Sklep z akcesoriami..."), bo LayoutEngine::show() nadpisywal w galezi kategorii/artykulu/produktu tylko $page['language']['title'], a meta_title z domyslnej strony zylo dalej i wygrywalo w linii substytucji [TITLE].
  • Wyodrebniono nowa metode publiczna \front\LayoutEngine::applyEntityMetaToPage($page, $entityLanguage, $fallbackTitle): zawsze nadpisuje meta_title, meta_keywords, meta_description w $page['language'] wartosciami encji (nawet pustym/null), eliminujac wyciek.
  • LayoutEngine.php: 3 galezie (category, article, product) wywoluja helper zamiast inline'ow z nadpisywaniem czesci pol.
  • Dodano 5 testow jednostkowych (tests/Unit/front/LayoutEngineMetaTagsTest.php) na pure-function helper: meta_title encji wygrywa, NULL czysci homepage, all-null product, null entity safe, empty page struct. Suita: 846 testow / 2348 assertions.
  • Diagnostyka root cause na produkcyjnej DB: pp_routes mapuje poprawnie (category=10, product=522); literalne 'description'/'keywords' w pp_shop_categories_langs.id=331 to dane klienta (admin uzupelnia w panelu), nie bug shopPRO.
  • .gitignore rozszerzony o temp/ (skrypty diagnostyczne z DB credentials).
  • Wymagane akcje na produkcji po deployu: poczekac na TTL cache Redis (24h) lub wyczyscic klucze pp_routes:all, front_category_details:*, shop\\product:* — opcjonalne (fix jest w warstwie poza cache).

v0.350 (2026-04-30)

  • Naprawiono linki produktow z permutacja atrybutow w feedzie Google: separator par attr-val w URL zmieniony z / na _. Stary format /slug/20-170/21-175 nie matchowal sie w pp_routes (regex [0-9-]+ nie obejmuje /), wiec klienci z GMC ladowali na strone glowna zamiast na produkt.
  • ProductRepository::appendCombinationToXml: str_replace('|', '/', ...) -> str_replace('|', '_', ...) w obu galeziach (z seo_link i fallback p-id-name).
  • Helpers::htacces: regex routingu produktow z permutacja rozszerzony do /([0-9_-]+)$ w obu wariantach.
  • LayoutEngine.php (// PRODUKT): konwersja _ -> | przed wywolaniem ProductRepository::findCached — format DB pozostaje bez zmian (attr-val|attr-val).
  • templates/shop-product/_partial/product-attribute.php: preselekcja wartosci atrybutu na podstawie permutation_hash z URL ($forced_value_id); wartosc is_default uzywana tylko gdy URL nie wymusza wyboru. Dotyczy checked na inpucie i emisji bloku fradio_label_click(...).
  • Dodano 7 testow jednostkowych: HelpersRoutingTest (4 testy regex + assercje na zawartosci pliku) i ProductFeedLinkTest (3 testy appendCombinationToXml via ReflectionMethod z mockiem TransportRepository). Suita: 841 testow / 2330 assertions.
  • Wymagane akcje na produkcji po deployu: regeneracja pp_routes (Helpers::htacces()), wyczyszczenie klucza pp_routes:all w Redis, regeneracja google-feed.xml, resubmit feedu w GMC.

v0.349 (2026-04-20)

  • Naprawiono wyswietlanie kosztu transportu na /koszyk-podsumowanie: transporty z delivery_free=1 pokazuja teraz rzeczywisty koszt ponizej progu settings.free_delivery, a 0,00 zl dopiero po osiagnieciu progu (spojnie z lista na /koszyk).
  • Dodano chroniona metode ShopBasketController::calculateTransportCostForSummary() wyliczajaca transport_cost_effective + free_delivery_applies — logika widokowa przeniesiona z szablonu do kontrolera.
  • Szablon templates/shop-basket/summary-view.php uzywa nowych kluczy zamiast sprawdzania surowej flagi delivery_free.
  • Dodano 6 testow jednostkowych (ShopBasketControllerSummaryViewTest) pokrywajacych AC + edge cases (prog rowny, prog 0, transport null). Suita: 834 testy / 2318 assertions.

v0.348 (2026-04-19)

  • Dodano przełącznik widoczności etykiet niestandardowych na liście produktów w panelu admina, z zapisem stanu w sesji.
  • Po włączeniu opcji renderowane jest 5 pól custom_label_0..4 bezpośrednio pod sekcją zdjęcie/nazwa produktu.
  • Dodano zapisywanie wartości etykiet niestandardowych do bazy oraz walidację dozwolonych typów etykiet po stronie kontrolera.
  • Wprowadzono podpowiedzi istniejących wartości jako wybieralne sugestie z możliwością wpisania własnej wartości.
  • Rozszerzono testy jednostkowe dla ShopProductController i ProductRepository pod nową funkcjonalność.