Produkty
Ogólny model produktu wygląda następująco:
Głównym modelem jest Product. Każdy Product może zawierać wiele MarketplaceProduct powiązanych z konkretnym marketplace. Produkty mogą być grupowane razem w modelu BaseProduct.
Model produktu bazowego (grupy) wygląda tak:
Modele
Product
Product określa wariant produktu bazowego (najczęściej zawierający się w BaseProduct). Jest to główne miejsce danych produktu w systemie i są one kluczowe dla wielu funkcji wewnętrznych. Ze względu na ograniczenie miejsca zajmowanego przez te dane część z nich jest współdzielona z platformami sprzedażowymi (np. zdjęcia lub tytuły i opisy).
Znaczna większość operacji na wybranym produkcie opiera się właśnie o ten model lub jest od niego zależna.
Każdy z produktów powinien posiadać unikalny, jednoznacznie opisujący dany produkt kod SKU. Zasady tworzenia poprawnych kodów SKU dostępne są pod tym linkiem: SKU Guidelines - 4mybaby
BaseProduct
Model BaseProduct (produkt bazowy) jest grupą tego samego rodzaju produktów. Zawiera w sobie wiele modeli Product, które są wariantami danego produktu. Służy głównie do grupowania produktów do wykonywania na nich działań masowych oraz do rozpoznawania produktów grupowanych na marketplace.
W późniejszym etapie aplikacji będzie to model do wykonywania działań na wielu produktach na raz (np. zmiana cen / opisów itp.), jednak na wczesnym etapie jeszcze nie daje zbyt wielu możliwości.
Przykładowe połączenie SKU:
- BaseProduct: KARO-K14-TRINITY-PARENT
- Product: KARO-K14-TRINITY-140x200-TRQ-LAE
- Product: KARO-K14-TRINITY-160x200-BLK-L
- Product: KARO-K14-TRINITy-200x200-PNK
Marketplace Product
MarketplaceProduct reprezentuje stan produktu na połączonym z nim marketplace (np. amazon_de / amazon_fr / otto_de). Zawiera informacje zmienne względem marketplace takie jak ceny, aktywne promocje czy stan magazynowy (dostępność produktu na marketplace, nie w magazynie). Synchronizacja danych z marketplace odbywa się na tym poziomie.
Zmiany wprowadzane na MarketplaceProduct zazwyczaj nie mają wpływu na Product. W związku z tym nie powinno się zmieniać kluczowych informacji o produkcie na modelu MarketplaceProduct.
Identyfikatorem tego modelu jest marketplace_reference, który jest niezmienialny i jednoznacznie określa produkt na wybranym marketplace. Zależy zatem od sposobu komunikacji aplikacji z API marketplace. Przykładowo: dla Amazon będzie to ASIN, dla Otto SKU a dla Ebay - id produktu w ebay.
Zależności i wzajemny wpływ modeli
Akcje wykonywane na wybranych modelach produktowych mogą mieć wpływ na inne modele. W zależności od akcji wpływ może się różnić, jednak zwykle zachowany będzie porządek kolejności: BaseProduct -> Product -> MarketplaceProduct.
BaseProduct może wpływać bezpośrednio na połączone z nim modele Product.
Product może wpływać bezpośrednio na połączone z nim modele MarketplaceProduct.
MarketplaceProduct może wpływać pośrednio na korespondujący Product.
Analogicznie BaseProduct może wpływać na pośrednio powiązane poprzez Product modele MarketplaceProduct. Przykładem może być podniesienie ceny na BaseProduct o 5% - cena wszystkich MarketplaceProduct zostanie podniesiona o 5% (przykład zakłada przyszłościowy wpływ i zarządzanie z poziomu grupy produktów).