- Email notyfikacji zawiera numer zamówienia, klienta, datę, kwotę - Order joby (send_order, sync_payment, sync_status) ponawiane w nieskończoność co 30 min - Rozróżnienie PONAWIANY vs TRWAŁY BŁĄD w emailu - Cleanup stuck jobów po udanym wysłaniu zamówienia - +2 testy infinite retry w CronJobRepositoryTest Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.9 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 |
| 8 | Apilo orders not sending — diagnoza i naprawa | 1 | Done | 2026-03-16 |
| 9 | Apilo email notification + infinite retry | 1 | Done | 2026-03-19 |
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
ApiloRepositoryz 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-19