229 lines
5.9 KiB
Markdown
229 lines
5.9 KiB
Markdown
# DB_SCHEMA
|
|
|
|
## Scope
|
|
|
|
Dokument opisuje praktyczny schema map dla `shopPRO`:
|
|
- najwazniejsze tabele i relacje,
|
|
- grupowanie po domenach biznesowych,
|
|
- kluczowe kolumny i indeksy, ktore maja znaczenie runtime,
|
|
- mapowanie tabela -> warstwa Domain.
|
|
|
|
Pelna lista tabel i historyczne notki migracyjne:
|
|
`docs/DATABASE_STRUCTURE.md` (source of truth dla detali kolumnowych).
|
|
|
|
## Konwencje globalne
|
|
|
|
- ORM: Medoo (`$mdb`)
|
|
- Prefix tabel: `pp_`
|
|
- Primary key: najczesciej `id` (INT AUTO_INCREMENT)
|
|
- Jezyki/translations: zwykle tabele `*_langs` z kluczem `lang_id`
|
|
- Wiele-do-wielu: tabele lacznikowe `*_products`, `*_payment_methods`, itp.
|
|
|
|
## Core commerce
|
|
|
|
### Produkty
|
|
|
|
- `pp_shop_products`
|
|
- core produktu i wariantu (`parent_id` dla kombinacji)
|
|
- ceny (`price_brutto`, `price_brutto_promo`), stany (`quantity`)
|
|
- flagi (`status`, `archive`, `promoted`)
|
|
- `pp_shop_products_langs`
|
|
- nazwy/opisy per jezyk
|
|
- `pp_shop_products_images`
|
|
- obrazy produktu
|
|
- `pp_shop_products_categories`
|
|
- przypisania produkt-kategoria
|
|
- `pp_shop_products_attributes`
|
|
- przypisania wariantu do wartosci cech
|
|
- `pp_shop_products_custom_fields`
|
|
- dodatkowe pola produktu
|
|
|
|
Warstwa: `Domain\Product\ProductRepository`, `Domain\Attribute\AttributeRepository`.
|
|
|
|
### Kategorie
|
|
|
|
- `pp_shop_categories`
|
|
- drzewo kategorii (`parent_id`), status, kolejnosc
|
|
- `pp_shop_categories_langs`
|
|
- tresci SEO i opisy kategorii
|
|
|
|
Warstwa: `Domain\Category\CategoryRepository`.
|
|
|
|
### Zamowienia
|
|
|
|
- `pp_shop_orders`
|
|
- dane klienta "w momencie zakupu", summary, status/platnosc, daty
|
|
- kluczowe pole integracyjne: `updated_at` (polling API)
|
|
|
|
Warstwa: `Domain\Order\OrderRepository`, `Domain\Order\OrderAdminService`.
|
|
|
|
### Klienci
|
|
|
|
- `pp_shop_clients`
|
|
- konto klienta i dane adresowe/logowania (uzywane przez ClientRepository)
|
|
|
|
Warstwa: `Domain\Client\ClientRepository`.
|
|
|
|
## Slowniki i checkout
|
|
|
|
### Platnosci
|
|
|
|
- `pp_shop_payment_methods`
|
|
- status, opis, mapowanie Apilo
|
|
- limity kwotowe: `min_order_amount`, `max_order_amount`
|
|
- COD flag: `is_cod`
|
|
|
|
Warstwa: `Domain\PaymentMethod\PaymentMethodRepository`.
|
|
|
|
### Transport
|
|
|
|
- `pp_shop_transports`
|
|
- koszt, status, limity, mapowanie Apilo
|
|
- `pp_shop_transport_payment_methods`
|
|
- relacja transport <-> platnosc (N:M)
|
|
|
|
Warstwa: `Domain\Transport\TransportRepository`.
|
|
|
|
### Statusy zamowien
|
|
|
|
- `pp_shop_statuses`
|
|
- statusy predefiniowane, kolor, mapowanie Apilo
|
|
|
|
Warstwa: `Domain\ShopStatus\ShopStatusRepository`.
|
|
|
|
## Marketing i merch
|
|
|
|
### Promocje i kupony
|
|
|
|
- `pp_shop_promotion`
|
|
- reguly promocji, daty aktywnosci, warunki i zakresy (JSON categories)
|
|
- `pp_shop_coupon`
|
|
- kupony, licznik uzyc, ograniczenia
|
|
|
|
Warstwa: `Domain\Promotion\PromotionRepository`, `Domain\Coupon\CouponRepository`.
|
|
|
|
### Producenci
|
|
|
|
- `pp_shop_producer`
|
|
- `pp_shop_producer_lang`
|
|
|
|
Warstwa: `Domain\Producer\ProducerRepository`.
|
|
|
|
### Zestawy produktow
|
|
|
|
- `pp_shop_product_sets`
|
|
- `pp_shop_product_sets_products`
|
|
|
|
Warstwa: `Domain\ProductSet\ProductSetRepository`.
|
|
|
|
### Cechy i wartosci
|
|
|
|
- `pp_shop_attributes`
|
|
- `pp_shop_attributes_langs`
|
|
- `pp_shop_attributes_values`
|
|
- `pp_shop_attributes_values_langs`
|
|
|
|
Warstwa: `Domain\Attribute\AttributeRepository`.
|
|
|
|
## CMS i frontend content
|
|
|
|
### Artykuly
|
|
|
|
- `pp_articles`
|
|
- `pp_articles_langs`
|
|
- `pp_articles_pages`
|
|
- `pp_articles_images`
|
|
- `pp_articles_files`
|
|
|
|
Warstwa: `Domain\Article\ArticleRepository`.
|
|
|
|
### Strony i layouty
|
|
|
|
- `pp_pages`
|
|
- `pp_layouts`
|
|
- `pp_layouts_pages`
|
|
- `pp_layouts_categories`
|
|
|
|
Warstwa: `Domain\Pages\PagesRepository`, `Domain\Layouts\LayoutsRepository`.
|
|
|
|
### Banery i kontenery statyczne
|
|
|
|
- `pp_banners`
|
|
- `pp_banners_langs`
|
|
- `pp_scontainers`
|
|
- `pp_scontainers_langs`
|
|
|
|
Warstwa: `Domain\Banner\BannerRepository`, `Domain\Scontainers\ScontainersRepository`.
|
|
|
|
## Ustawienia i system
|
|
|
|
### Ustawienia aplikacji
|
|
|
|
- `pp_settings`
|
|
- klucze globalne (w tym `api_key` dla REST API)
|
|
- `pp_shop_apilo_settings`
|
|
- `pp_shop_shoppro_settings`
|
|
|
|
Warstwa: `Domain\Settings\SettingsRepository`, `Domain\Integrations\IntegrationsRepository`.
|
|
|
|
### Jezyki i tlumaczenia
|
|
|
|
- `pp_langs`
|
|
- `pp_langs_translations`
|
|
|
|
Warstwa: `Domain\Languages\LanguagesRepository`.
|
|
|
|
### Uzytkownicy admina
|
|
|
|
- `pp_users`
|
|
- login, hash hasla, status
|
|
- pola 2FA (`twofa_*`)
|
|
|
|
Warstwa: `Domain\User\UserRepository`.
|
|
|
|
## Routing i URL mapping
|
|
|
|
- `pp_routes`
|
|
- regex `pattern` -> `destination` query string
|
|
- obsluguje trasy encji oraz trasy systemowe
|
|
- cache Redis: `pp_routes:all`
|
|
|
|
Runtime wykorzystanie:
|
|
- `index.php`
|
|
- `Shared\Helpers\Helpers::htacces()`
|
|
- repozytoria encji generujace/odswiezajace trasy.
|
|
|
|
## Kolejka cron
|
|
|
|
- `pp_cron_jobs`
|
|
- status processing pipeline (`pending`, `processing`, `completed`, `failed`, `cancelled`)
|
|
- retry/backoff: `attempts`, `max_attempts`, `scheduled_at`
|
|
- indeksy:
|
|
- `(status, priority, scheduled_at)`
|
|
- `(job_type)`
|
|
- `(status)`
|
|
- `pp_cron_schedules`
|
|
- harmonogramy okresowe (`interval_seconds`, `next_run_at`)
|
|
- indeks `(enabled, next_run_at)`
|
|
|
|
Warstwa: `Domain\CronJob\CronJobRepository`, `Domain\CronJob\CronJobProcessor`.
|
|
|
|
## Najwazniejsze relacje (FK logiczne)
|
|
|
|
- Produkt glowny -> wariant: `pp_shop_products.parent_id -> pp_shop_products.id`
|
|
- Produkt -> tlumaczenia: `pp_shop_products_langs.product_id -> pp_shop_products.id`
|
|
- Produkt -> kategoria: `pp_shop_products_categories.product_id -> pp_shop_products.id`
|
|
- Kategoria -> tlumaczenia: `pp_shop_categories_langs.category_id -> pp_shop_categories.id`
|
|
- Zamowienie -> klient: `pp_shop_orders.client_id -> pp_shop_clients.id` (opcjonalne)
|
|
- Transport <-> platnosc: `pp_shop_transport_payment_methods`
|
|
- Cecha -> wartosci -> warianty: `attributes -> values -> shop_products_attributes`
|
|
- Producent -> tlumaczenia: `pp_shop_producer_lang.producer_id -> pp_shop_producer.id`
|
|
- Kontener -> tlumaczenia: `pp_scontainers_langs.container_id -> pp_scontainers.id`
|
|
|
|
## Uwaga operacyjna
|
|
|
|
Ten dokument jest skrotem architektonicznym.
|
|
Przy zmianach SQL/migracji zawsze aktualizuj rownolegle:
|
|
1. `docs/DATABASE_STRUCTURE.md` (detal techniczny)
|
|
2. `.paul/docs/DB_SCHEMA.md` (mapa domenowa i impact runtime)
|