Files
shopPRO/.paul/ROADMAP.md
Jacek a45256e9f6 fix: naprawiono crash przy składaniu zamówienia z kuponem rabatowym
Fatal Error: Call to undefined method stdClass::is_one_time() w OrderRepository:793.
Zamieniono wywołania nieistniejących metod na stdClass na dostęp do właściwości
+ istniejącą metodę CouponRepository::markAsUsed().

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 14:04:18 +01:00

2.7 KiB

Roadmap: shopPRO

Overview

shopPRO to autorski silnik sklepu internetowego rozwijany iteracyjnie. Projekt jest już na produkcji (v0.333) — roadmap obejmuje planowane funkcje i usprawnienia kolejnych wersji.

Current Milestone

Security hardening (v0.33x) Status: In progress Phases: 3 of 4 complete

Phases

Phase Name Plans Status Completed
1 Sensitive data logging fix 1 Done 2026-03
2 Path traversal + XSS escaping 1 Done 2026-03 (v0.335)
3 Error handling w krytycznych ścieżkach 1 Done 2026-03 (v0.336)
4 CSRF protection — admin panel forms 1 Applied 2026-03 (v0.337)
5 Order bugs fix — duplicate + COD status 1 Applied 2026-03 (v0.338)

Next Milestone

Tech debt — Integrations refactoring Status: Planning

Phase Name Plans Status Completed
6 IntegrationsRepository split → ApiloRepository 2 Done 2026-03

Hotfix

Phase Name Plans Status Completed
7 Coupon Fatal Error — order placement crash 1 Done 2026-03-15

Phase Details

Phase 4 — CSRF protection

Problem: Brak tokenów CSRF na formularzach panelu admina. State-changing POST endpointy (create/update/delete) są potencjalnie podatne na ataki CSRF.

Scope: Dodanie CSRF tokenów do formularzy i walidacji w panelu administracyjnym.

Reference: .paul/codebase/concerns.md — MEDIUM — Missing CSRF tokens

Phase 6 — IntegrationsRepository split

Problem: IntegrationsRepository ma 875 linii — miesza logikę generyczną (settings, logi, product linking) z logiką specyficzną dla Apilo (~650 linii). Narusza zasadę jednej odpowiedzialności.

Scope:

  • Plan 06-01: Utwórz ApiloRepository z metodami apilo* (non-breaking)
  • Plan 06-02: Zmigruj konsumentów (IntegrationsController, ShopProductController, OrderAdminService, cron.php), usuń apilo* z IntegrationsRepository

Phase 5 — Order bugs fix

Problem 1: Zduplikowane zamówienia — klient widzi błąd i klika złóż zamówienie ponownie. Pierwsze zamówienie trafiło do bazy mimo błędu. Powrót do /podsumowanie regeneruje token i pozwala złożyć drugie zamówienie.

Problem 2: Zamówienia COD (płatność przy odbiorze) dostają status "Zamówienie złożone" zamiast "Przyjęte do realizacji". Kod sprawdza hardkodowane payment_id == 3, które jest inne w tej instancji sklepu.

Scope: Guard w summaryView(), try-catch w basketSave(), kolumna is_cod w pp_shop_payment_methods, użycie flagi zamiast hardkodowanego ID.


Roadmap created: 2026-03-12 Last updated: 2026-03-12