Files
newwalls.pl/.paul/changelog/2026-04-24.md
Jacek Pyziak ac03f807c1 feat(02-product-actions-fixes): Phase 02 complete — customization, price label, structure fix
Plan 02-03: Customization save + success modal (5/5 AC)
- 26-field squaremeter POST payload (verbose PL dim, qty_alt/qty_alth)
- Chain POST /module/ps_shoppingcart/ajax -> Bootstrap #blockcart-modal
- Critical fix: moved {/block} so inline script actually renders
- __p02p02InFlight re-entrancy guard

Plan 02-04: Live cena per-sqm label obok "Dodaj do koszyka" (5/5 AC)
- .p02p04-total-price label, gorna .current-price static
- Separate __p02p04Bound + setInterval reconciliation
- Poll-retry prestashop.on registration

Plan 02-05: Struktura materialu w POST payload (4/4 AC)
- Enumerate [name^="group["] spoza formy, doklej do payload
- Fix: group_5 select w .product-bar-box nie trafial do koszyka

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

3.7 KiB
Raw Blame History

2026-04-24

Co zrobiono

  • [Phase 02, Plan 02-03] Customization save + success modal w nowym layoucie — 5/5 AC pass, milestone production-ready
  • Task 1: Playwright capture OLD layout payload (26 fields, verbose PL dim format) — IP gate temporary flip do 255.255.255.255, restored
  • Task 2: Injection squaremeter fields (discretion=on, dim VERBOSE, qty_alt/qty_alth, calculated_total, product_total_price_calc) w POST do /pl/koszyk
  • Task 3: Chain POST do /module/ps_shoppingcart/ajax → render Bootstrap #blockcart-modal z "Kontynuuj zakupy" + "Przejdź do kasy"
  • Krytyczny fix: przeniesiono {/block} tak żeby inline script rzeczywiście renderował (Smarty {extends} renderuje tylko blocki — Plan 02-02 mirror był dead code)
  • Dodano __p02p02InFlight re-entrancy guard (fix double POST)
  • basePrice fallback przez meta[property="product:price:amount"] (w NEW layout brak #product_base_price)
  • AC-5 regression test OLD layout: zero zmian, handler inert (p02p02Bound=false w OLD)
  • [Phase 02, Plan 02-04] Live cena per-sqm labelka obok "Dodaj do koszyka" w nowym layoucie — 5/5 AC pass
  • Task 1: __p02p04EnsureLabel + __p02p04RecalcPrice + delegated input bindings (custom.js + inline mirror w product.tpl)
  • Task 2: FTP deploy iteracyjny (iterations: 226/226 na każdym deployu)
  • Task 3: Live Playwright verification wszystkich 5 AC — user pivot mid-task: label obok buttona zamiast nadpisywania .current-price (gorna cena "Od XXX zł / m²" zostaje statyczna)
  • Scope pivot: label obok buttona zamiast nadpisywania .current-price — user request
  • Fix: separate __p02p04Bound guard (stale-cache custom.js nie blokuje inline mirror rejestracji)
  • Fix: synchronous IIFE init zamiast jQuery(document).ready (ready nie firuje konsekwentnie w inline Smarty block)
  • Fix: setInterval 10×500ms initial render retry (squaremeter init overwrituje .current-price post pierwszy recalc)
  • Fix: poll-retry rejestracja prestashop.on('updatedProduct') (prestashop bundle loads after inline script parse)
  • [Phase 02, Plan 02-05] Struktura materiału w POST payload (production bug fix) — 4/4 AC pass
  • Diagnoza Playwright: <select id="group_5" name="group[5]"> (Tekstura materiału) POZA formą #add-to-cart-or-refresh w .product-bar-box$form.serialize() nie łapie → PS saves default
  • Task 1: Enumerate [name^="group["] spoza formy, encodeURI + doklej do payload (custom.js + inline mirror, identyczna logika)
  • Task 2: FTP deploy 226/226
  • Task 3: Playwright network capture: group%5B5%5D=16 w payload, id_product_attribute=4175 (new combination), cart pokazuje "Extra fine"
  • Future-proof: enumeracja wszystkich grup (nie hardcode group[5]) — kolejne atrybuty automatycznie pokryte

Zmienione pliki

  • themes/ayon/assets/js/custom.js (+175 linii handler update, +55 linii Plan 02-04 block, +13 linii Plan 02-05 externalGroups)
  • themes/ayon/templates/catalog/product.tpl (block move fix + inline mirror update + 50 linii Plan 02-04 IIFE + 13 linii Plan 02-05 mirror)
  • .paul/STATE.md (Plan 02-03/02-04/02-05 decisions + loop position + phase 02 COMPLETE)
  • .paul/PROJECT.md (evolved: Phase 02 requirements shipped, Established Patterns aggregated, Key Decisions table)
  • .paul/ROADMAP.md (Plan 02-05 added + Phase 02 COMPLETE)
  • .paul/phases/02-product-actions-fixes/02-03-SUMMARY.md (created)
  • .paul/phases/02-product-actions-fixes/02-04-SUMMARY.md (created)
  • .paul/phases/02-product-actions-fixes/02-04-PLAN.md (created)
  • .paul/phases/02-product-actions-fixes/02-05-PLAN.md (created)
  • .paul/phases/02-product-actions-fixes/02-05-SUMMARY.md (created)
  • .claude/memory/feedback_ftp_autoupload.md (created)
  • .claude/memory/project_newwalls_layout_context.md (created)
  • .claude/memory/MEMORY.md (2 new entries)