Files
shopPRO/.paul/phases/13-basket-logging-ttl-token/13-01-SUMMARY.md
Jacek 1c747af1b6 fix: Checkout flow — summaryView redirect fix + TTL token + order logging
- Usunięty błędny guard w summaryView() blokujący kolejne zamówienia
- Token zamówienia z jednorazowego na TTL 30 min (multi-tab safe)
- Logowanie błędów zamówień do logs/logs-order-YYYY-MM-DD.log
- Redirect przy złym tokenie na /koszyk-podsumowanie zamiast /koszyk
- Double-submit guard przeniesiony przed sprawdzenie tokena

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 21:32:46 +01:00

3.4 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established duration completed
13-basket-logging-ttl-token 01 frontend
basket
checkout
logging
token
session
TTL
phase provides
12-summaryview-redirect-fix summaryView() redirect guard removed
Order error logging to logs/logs-order-YYYY-MM-DD.log
TTL-based order submit token (30 min, multi-tab safe)
Double-submit guard with logging
added patterns
TTL-based session tokens with backward compatibility
created modified
autoload/front/Controllers/ShopBasketController.php
Token format: array ['token' => ..., 'created_at' => ...] with backward compat for plain string
Token failure redirect: /koszyk-podsumowanie instead of /koszyk (user keeps context)
Double-submit guard moved BEFORE token validation (empty basket + existing order)
Order logging via logOrder() to logs/logs-order-YYYY-MM-DD.log
5min 2026-03-25

Phase 13 Plan 01: Basket logging + TTL token fix Summary

Dodano logowanie błędów zamówień do pliku + przerobiono token z jednorazowego na TTL 30 min, umożliwiając składanie zamówień z wielu kart/po odświeżeniu.

Performance

Metric Value
Duration ~5 min
Completed 2026-03-25
Tasks 2 completed
Files modified 1

Acceptance Criteria Results

Criterion Status Notes
AC-1: Logowanie błędów w basketSave() Pass 4 punkty logowania via logOrder()
AC-2: Token TTL 30 min — wiele kart działa Pass createOrderSubmitToken() reuses valid token
AC-3: Token wygasa po 30 min Pass isValidOrderSubmitToken() checks TTL, redirect → /koszyk-podsumowanie
AC-4: Double-submit guard dla pustego koszyka Pass Nowy guard przed sprawdzeniem tokena

Accomplishments

  • Dodano metodę logOrder() zapisującą do logs/logs-order-YYYY-MM-DD.log + 4 punkty logowania w basketSave()
  • Token zamówienia przerobiony z jednorazowego na TTL 30 min — wiele kart, odświeżenie, "wstecz" nie unieważniają tokena
  • Backward compatibility ze starymi stringowymi tokenami w sesji
  • Double-submit guard przeniesiony PRZED sprawdzenie tokena (pusty koszyk + istniejące zamówienie → redirect)
  • Redirect przy błędzie tokena zmieniony z /koszyk na /koszyk-podsumowanie

Files Created/Modified

File Change Purpose
autoload/front/Controllers/ShopBasketController.php Modified Stała TTL, logOrder(), TTL token, logowanie, double-submit guard

Decisions Made

Decision Rationale Impact
Token jako array z created_at Umożliwia TTL check bez dodatkowej sesji Backward compat z plain string
Redirect na /koszyk-podsumowanie Użytkownik nie traci kontekstu, dostaje nowy token Lepsza UX
Double-submit guard przed token check Pusty koszyk = pewny double-submit, nie trzeba sprawdzać tokena Szybsze wykrycie

Deviations from Plan

None — plan executed exactly as written

Issues Encountered

None

Next Phase Readiness

Ready:

  • Poprawka gotowa do wdrożenia w update package
  • Fazy 12 + 13 razem stanowią kompletny fix checkout flow

Concerns:

  • None

Blockers:

  • None

Phase: 13-basket-logging-ttl-token, Plan: 01 Completed: 2026-03-25