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

44 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)