Files
shopPRO/.paul/PROJECT.md
Jacek Pyziak fba215b372 fix: linki produktow z permutacja atrybutow w feedzie Google (v0.350)
Separator URL miedzy parami attr-val zmieniony z "/" na "_" w generatorze
feedu (ProductRepository::appendCombinationToXml). Wzorzec routingu
pp_routes rozszerzony do [0-9_-]+ w Helpers::htacces (oba warianty:
seo_link i fallback p-id-name). LayoutEngine konwertuje "_" -> "|"
przed wywolaniem ProductRepository::findCached — format DB pozostaje "|".
Partial product-attribute.php preselectuje wartosc z permutation_hash
URL (forced_value_id), co poprawia UX wejscia z linka feedu.

Suita: 834 -> 841 testow (+7), 2330 assertions.

Wymagane akcje na produkcji po deployu: regeneracja pp_routes
(Helpers::htacces), wyczyszczenie klucza pp_routes:all w Redis,
regeneracja google-feed.xml, resubmit feedu w GMC.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-30 01:58:29 +02:00

4.6 KiB

shopPRO

What This Is

Autorski silnik sklepu internetowego pisany od podstaw - odpowiednik WooCommerce lub PrestaShop, ale bez zależności od zewnętrznych platform. Składa się z panelu administratora (zarządzanie zamówieniami, produktami, klientami) oraz części frontowej dla klienta końcowego.

Core Value

Właściciel sklepu internetowego ma pełną kontrolę nad sprzedażą online - produktami, zamówieniami i klientami - w jednym spójnym systemie pisanym od podstaw, bez narzutów zewnętrznych platform.

Current State

Attribute Value
Version 0.333
Status Production
Last Updated 2026-04-30

Requirements

Validated (Shipped)

  • Panel administratora - zarządzanie produktami, kategoriami, atrybutami
  • Panel administratora - zarządzanie zamówieniami
  • Panel administratora - zarządzanie klientami
  • Część frontowa - przeglądanie i kupowanie produktów
  • Koszyk i składanie zamówień
  • Integracje płatności i dostaw
  • REST API (ordersPRO + Ekomi)
  • Redis caching
  • Ochrona przed podwójnym składaniem zamówienia
  • Domain-Driven Architecture (migracja z legacy zakończona)
  • Szybka edycja custom_label_0..4 na liscie produktow admina (toggle sesyjny + autocomplete)
  • Poprawna kalkulacja kosztu transportu na /koszyk-podsumowanie (fix delivery_free bez uwzglednienia progu)
  • Linki produktów z permutacją w feedzie Google działają (separator _ w URL, konwersja _| w warstwie front, regex [0-9_-]+ w pp_routes)

Active (In Progress)

  • [Do zdefiniowania podczas planowania]

Planned (Next)

  • [Do zdefiniowania podczas planowania]

Out of Scope

  • Multitenancy (wiele sklepów w jednej instancji) - nie planowane

Target Users

Primary: Właściciel/administrator sklepu internetowego

  • Zarządza produktami, zamówieniami, klientami przez panel admina
  • Potrzebuje niezawodnego, szybkiego narzędzia bez zbędnych zależności

Secondary: Klient końcowy sklepu

  • Przegląda produkty, dodaje do koszyka, składa zamówienia

Context

Technical Context:

  • PHP 7.4+ (produkcja: PHP < 8.0)
  • Medoo ORM ($mdb), Redis caching
  • Domain-Driven Design z Dependency Injection
  • PHPUnit 9.6, 810+ testów
  • Namespace: \Domain\, \admin\, \front\, \api\, \Shared\

Constraints

Technical Constraints

  • PHP < 8.0 na produkcji (brak match, named arguments, union types)
  • Medoo ORM - prepared statements bez wyjątków
  • Redis wymagany dla cache

Business Constraints

  • System wdrażany u klientów jako update package (ZIP)

Key Decisions

Decision Rationale Date Status
DDD + DI zamiast legacy architektury Testowalność, separacja odpowiedzialności 2025 Active
PHP < 8.0 kompatybilność Klienci na starszych serwerach 2025 Active
Własny silnik zamiast frameworka Pełna kontrola, brak narzutów - Active
id w tabbed FormEdit przez hiddenFields Zapobiega insert zamiast update przy edycji encji 2026-04-18 Active
Inline custom labels w product list przez sesyjny toggle Szybszy workflow dla Google XML bez wejscia w edycje produktu 2026-04-19 Active
Kalkulacja kosztu transportu na /koszyk-podsumowanie w kontrolerze (nie w szablonie) Spojnosc logiki progu darmowej dostawy miedzy /koszyk i /koszyk-podsumowanie 2026-04-20 Active
Separator URL permutacji _ zamiast / (DB pozostaje ` `) Jeden segment URL dopasowywalny przez pp_routes; konwersja _→` ` w warstwie front

Success Metrics

Metric Target Current Status
Testy >800 841 On track
Pokrycie architektury DDD 100% 100% Achieved

Tech Stack

Layer Technology Notes
Backend PHP 7.4+ < 8.0 na produkcji
ORM Medoo $mdb global
Cache Redis CacheHandler singleton
Frontend HTML/CSS/JS Własny silnik szablonów (Tpl)
Auth Sesje PHP CSRF, XSS protection
Testy PHPUnit 9.6 phpunit.phar

Specialized Flows

See: .paul/SPECIAL-FLOWS.md

Quick Reference:

  • /feature-dev -> Nowe funkcje, większe zmiany (required)
  • /koniec-pracy -> Release, update package (required)
  • /frontend-design -> Komponenty UI, szablony widoków
  • /code-review -> Przegląd kodu przed release
  • /simplify -> Upraszczanie po implementacji
  • /claude-md-improver -> Utrzymanie CLAUDE.md
  • /zapisz + /wznow -> Zapis i wznowienie sesji

PROJECT.md - Updated when requirements or context change Last updated: 2026-04-30 after Phase 18