Na podstronie /koszyk-podsumowanie transport z flaga delivery_free=1 byl pokazywany zawsze za 0,00 zl, niezaleznie od wartosci koszyka. Teraz kontroler wylicza transport_cost_effective i free_delivery_applies uwzgledniajac prog settings.free_delivery, a szablon uzywa tych kluczy. - Nowa chroniona metoda ShopBasketController::calculateTransportCostForSummary - Dodane 6 testow jednostkowych (ShopBasketControllerSummaryViewTest) - Suita: 834 testy / 2318 assertions OK Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.7 KiB
6.7 KiB
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
| phase | plan | subsystem | tags | requires | provides | affects | tech-stack | key-files | key-decisions | patterns-established | duration | started | completed | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 17-cart-summary-transport-cost-fix | 01 | checkout |
|
|
|
|
|
|
|
|
~25min | 2026-04-20T00:00:00Z | 2026-04-20T00:25:00Z |
Phase 17 Plan 01: Cart summary transport cost fix — Summary
Na /koszyk-podsumowanie wybrany transport z flaga delivery_free=1 pokazuje teraz rzeczywisty koszt ponizej progu darmowej dostawy i 0,00 zl powyzej progu — zgodnie z logika listy transportow na /koszyk.
Performance
| Metric | Value |
|---|---|
| Duration | ~25 min |
| Started | 2026-04-20 |
| Completed | 2026-04-20 |
| Tasks | 4 completed (3 auto + 1 checkpoint) |
| Files modified | 2 modified + 1 created |
Acceptance Criteria Results
| Criterion | Status | Notes |
|---|---|---|
| AC-1: Transport z delivery_free ponizej progu pokazuje rzeczywisty koszt | Pass | Test testTransportWithDeliveryFreeBelowThresholdShowsRealCost + manualna weryfikacja |
| AC-2: Transport z delivery_free powyzej progu pokazuje 0,00 zl | Pass | Test testTransportWithDeliveryFreeAboveThresholdShowsZero + manualna weryfikacja |
| AC-3: Transport bez flagi delivery_free zawsze pokazuje koszt | Pass | Test testTransportWithoutDeliveryFreeAlwaysShowsCost + manualna weryfikacja |
| AC-4: Suita PHPUnit zielona, nowy test przechodzi | Pass | 834/834 OK, 2318 assertions (6 nowych testow) |
Accomplishments
- Chroniona metoda
ShopBasketController::calculateTransportCostForSummary()enkapsuluje regule progowa darmowej dostawy i jest czysto testowalna. - Szablon
summary-view.phppozbyty dwoch duplikatow logikidelivery_free == 1— uzywa teraz gotowych kluczy widokowych. - 6 testow jednostkowych pokrywa 3 AC i 3 edge case'y (transport null, prog 0, wartosc koszyka rowna progowi).
- Pelna suita zgadza sie z docs/MEMORY.md (>800 testow, 821 -> 834 po fazie).
Task Commits
Commit transition-phase jeszcze nie wykonany w tym UNIFY (patrz Deviations).
| Task | Commit | Type | Description |
|---|---|---|---|
| Task 1: Calc effective cost w kontrolerze | (pending) | fix | ShopBasketController::summaryView + calculateTransportCostForSummary |
| Task 2: summary-view.php uzywa nowych kluczy | (pending) | fix | Usuniety odwolanie do transport.delivery_free w bloku podsumowania |
| Task 3: Nowy test jednostkowy | (pending) | test | ShopBasketControllerSummaryViewTest (6 testow) |
Files Created/Modified
| File | Change | Purpose |
|---|---|---|
autoload/front/Controllers/ShopBasketController.php |
Modified | Dodana protected method calculateTransportCostForSummary; summaryView przekazuje transport_cost_effective + free_delivery_applies |
templates/shop-basket/summary-view.php |
Modified | Wiersz kosztu transportu i suma koncowa uzywaja nowych kluczy zamiast transport.delivery_free |
tests/Unit/front/Controllers/ShopBasketControllerSummaryViewTest.php |
Created | 6 testow jednostkowych dla logiki kalkulacji kosztu |
Decisions Made
| Decision | Rationale | Impact |
|---|---|---|
| Kalkulacja w kontrolerze, nie w TransportRepository | Repository juz ma transportMethodsFront robiace to samo, ale dla listy metod — dla pojedynczego wybranego transportu to decyzja widokowa nalezaca do kontrolera |
Brak zmiany publicznego API Repository |
| protected + Reflection do testow | Zgodne z istniejacym wzorcem ShopBasketControllerTest (Reflection), nie rozszerza publicznego API |
Test izolowany od sesji i globali |
| Boundary na prog > 0 | Jesli settings.free_delivery = 0, darmowa dostawa jest wylaczona (brak progu = brak regul) |
Ochrona przed niezamierzonym zerowaniem kosztu w sklepach bez tej funkcji |
Deviations from Plan
Summary
| Type | Count | Impact |
|---|---|---|
| Auto-fixed | 0 | — |
| Scope additions | 2 | 2 dodatkowe edge-case testy (boundary rowny prog + prog 0) |
| Deferred | 1 | Git commit transition-phase do wykonania w transition-phase lub rece |
Total impact: Bez scope creepu; dodatki to defensywne testy edge-case'ow.
Auto-fixed Issues
None.
Scope Additions
1. Test dla wartosci koszyka rownej progowi
- Found during: Task 3 (test jednostkowy)
- Issue: Plan AC-2 mowi "powyzej progu", granica rowna progowi nie byla pokryta
- Fix: Dodany
testTransportWithDeliveryFreeAtExactThresholdShowsZero - Rationale: Stare
transportMethodsFrontuzywa>=— utrzymana spojnosc
2. Test dla settings.free_delivery = 0
- Found during: Task 1 (implementacja)
- Issue: Sklepy bez ustawionego progu darmowej dostawy nie mogly miec zerowanych transportow; guard na > 0 wart pokrycia testem
- Fix: Dodany
testZeroFreeDeliveryThresholdDisablesFreeDelivery
Deferred Items
- Transition-phase git commit do uruchomienia w ramach
/paul:transitionlub recznego commita (spojne z historycznym wzorcem faz 15 i 16).
Issues Encountered
| Issue | Resolution |
|---|---|
test.ps1 nie istnieje w repo (pomimo wzmianki w CLAUDE.md) |
Uruchomiono phpunit.phar bezposrednio przez C:/xampp/php/php.exe phpunit.phar -c phpunit.xml |
Next Phase Readiness
Ready:
- Logika kosztu transportu w checkoutu spojna miedzy /koszyk i /koszyk-podsumowanie.
- Pelna suita zielona.
Concerns:
- Git commit nie wykonany automatycznie — nalezy domknac w transition-phase.
- CLAUDE.md odwoluje sie do
./test.ps1ktorego nie ma w repo — do rozwazenia porzadkowo.
Blockers:
- None.
Phase: 17-cart-summary-transport-cost-fix, Plan: 01 Completed: 2026-04-20