Przejdź do treści

Wystawianie ofert — przewodnik per platforma

Ta sekcja jest operacyjnym podręcznikiem sekcji panelu Marketplace → Oferty i Marketplace → Katalog. Pokazuje, czego się spodziewać po każdej z 7 platform sprzedażowych + integracji z BaseLinkerem, jakie reguły cenowe są wspierane, jak działa synchronizacja w tle i co robić, gdy coś idzie nie tak.

Jeżeli to Twój pierwszy kontakt z modułem ofert, zacznij od jednolinijkowego podsumowania w Oferty i Listingi, a tutaj wracaj punktowo po szczegóły.

Krótko

  • 8 zintegrowanych źródeł: Allegro, Amazon, eBay, Erli, Joom, Temu, WooCommerce + BaseLinker (jako źródło katalogu).
  • Jeden widok wystawiania — wszystko z panel.aiofactory.pl/marketplace/offers.
  • Ceny liczone wg reguły (cennik1 + cennik2) × współczynnik — działa po stronie serwerowej dla wszystkich 7 platform (rollout zakończony, TASK-290 / Forgejo #8).
  • Stany magazynowe czytamy z BaseLinkera. Panel nie zarządza magazynem — tylko go odczytuje.
  • Synchronizacja w tle co 5–15 min (per kanał). Logi → panel.aiofactory.pl/marketplace/history.

Macierz możliwości

Zbiorcze zestawienie tego, co dostarcza panel dla każdej platformy. Klikalne szczegóły — w odsyłaczach pod tabelą.

Platforma OAuth Pobieranie ofert Wystawianie pojedyncze Wystawianie rodzin (warianty) Cennik2 (flow serwerowy) Auto-retry Synchronizacja periodyczna Uwagi
Allegro ✅ (PARAMETER_MISMATCH) co 10 min (issues), token co 11 h Flagowy kanał — pełna obsługa GPSR, dispute, Message Center
Amazon 🟠 (publish_group bez cennika2) token co 50 min, returns co 3 h Tylko Amazon.PL podpięty; każdy rynek = osobne konto sprzedawcy (#20)
eBay ✅ (Inventory Item Group) token co 1 h, messages co 5 min, issues / disputes co 10–15 min Wymaga Business Policies po stronie konta sprzedawcy
Erli issues co 10 min Mapowanie kategorii i atrybutów Erli (ASN-style)
Joom ✅ (group_by_family) token co 50 min Moderacja Joom potrafi blokować bez wyjaśnienia (#22 — patrz Joom)
Temu ✅ (list_variant_products) token co 12 h, scan_expiry codzienny Moderacja przedoferta + długi czas approve; „kategoria wymagana" nieoczywiste
WooCommerce n/d (REST API key) ✅ (variations) issues co 10 min „Sklep własny" — buyspace.pl + przyszłe rynki
BaseLinker n/d (token API) ✅ (źródło katalogu) ⚪ poza zakresem n/d n/d sync TAGów rodzin na żądanie + cron Źródło prawdy dla katalogu i stanów; panel nie wystawia na BaseLinker — tylko z niego pobiera

Legenda: ✅ pełne · 🟠 częściowe · ⚪ poza zakresem · n/d — nie dotyczy.

→ Szczegóły per platforma: Allegro · Amazon · eBay · Erli · Joom · Temu · WooCommerce.


Model cenowy: (cennik1 + cennik2) × współczynnik

Jednolita reguła cenowa we wszystkich 7 kanałach. Konfigurujesz ją w Marketplace → Konfiguracja dla każdego konta sprzedawcy z osobna.

cena_oferty  =  ( cennik1 + cennik2 )  ×  współczynnik konta
  • cennik1 — bazowy cennik produktu z BaseLinkera (domyślny "koszt zakupu").
  • cennik2opcjonalny drugi cennik z BaseLinkera; służy zwykle do wkalkulowania kosztu wysyłki / kartonu na danym kanale (np. inny koszt logistyki na Allegro vs. eBay UK).
  • współczynnik — mnożnik per-konto (marża / VAT / koszt obsługi). Może być różny dla każdego konta na tej samej platformie.

Cennik2 jest opcjonalny

Jeśli zostawisz „Brak (×1 cennik)" w UI Konfiguracji, panel używa starej reguły cennik1 × współczynnik. Wartości z BaseLinkera wciąż są zaciągane normalnie.

Status rolloutu

Reguła (cennik1 + cennik2) × współczynnik działa end-to-end na wszystkich 7 platformach (TASK-269 + TASK-290, zakończone 2026-04-27). Wcześniej Allegro było jedynym kanałem z pełnym wsparciem; obecnie wszystkie kanały odbierają i stosują cennik2 po stronie serwerowej. Jeden wyjątek: joom/update_offer.ts i amazon/publish_group.ts (warianty Amazon) wciąż honorują tylko cennik1 — szczegóły w sekcjach platform.

→ Pełen kontekst zgłoszenia: FAQ #8.


Polityka stanów magazynowych

Panel nigdy nie zapisuje do BaseLinkera ile czego masz. BaseLinker jest źródłem prawdy. Panel:

  1. Czyta stany z BaseLinkera (synchronizacja katalogu — TAGI rodzin).
  2. Wystawia oferty na platformach z aktualnym stanem widzianym w momencie publikacji.
  3. Pobiera zamówienia z platform i przekazuje je do BaseLinkera (przez integrację BL ↔ marketplace; nie przez panel bezpośrednio).

Nie dwa źródła stanów

Nie próbuj edytować stanu magazynowego z poziomu platformy (Allegro, eBay, …) — to się nie zsynchronizuje z powrotem do BaseLinkera. Stan zawsze zmieniaj w BaseLinkerze, a panel zaktualizuje oferty przy najbliższej publikacji / synchronizacji.

Stany na samych ofertach (active / draft / removed / blocked) opisujemy per platforma — patrz każda strona w sekcji Stany ofert.


Synchronizacja periodyczna

Panel ma trzy niezależne mechanizmy synchronizacji per kanał:

  1. Refresh tokenów OAuth — zaplanowane co 11 h (Allegro), co 50 min (Amazon, Joom), co 1 h (eBay), co 12 h (Temu). Bez tego konto OAuth wygasa i wystawienie pada z błędem 401.
  2. Pobieranie zgłoszeń klienta z platformy — co 5–15 min, idzie do modułu Obsługa Klienta. Patrz Obsługa Klienta.
  3. Pobieranie / odświeżanie listy aktywnych ofert — uruchamiane na żądanie z UI ("Refresh now") oraz cyklicznie per konto. Snapshot trzymany w panelu, ostatnia synchronizacja widoczna w nagłówku zakładki ofert.

Wszystkie trzy mechanizmy logują się do panel.aiofactory.pl/marketplace/history — filtrujesz po platformie i typie zadania.

Dlaczego refresh tokenów tak często?

OAuth na większości platform wygasa po 1–24 h. Refresh-loop musi wstrzelić się przed wygaśnięciem, inaczej operatorka klika „Wystaw" i dostaje 401. Częstotliwości powyżej są dobrane z 2× zapasem względem rzeczywistego TTL tokenu danej platformy.


Diagram diagnostyczny — „Wystawienie się nie udało"

flowchart TD
    A[Klikam Wystaw, oferta padła] --> B{Jaki status<br/>w wątku oferty?}
    B -->|"failed (401, 403)"| C[Token OAuth wygasł]
    B -->|"failed (PARAMETER_MISMATCH)"| D[Allegro: parametr kategorii]
    B -->|"failed (kategoria wymagana)"| E[Brak mapowania kategorii]
    B -->|"failed (cennik = 0)"| F[Brak cennik1 w BaseLinkerze]
    B -->|"conflict"| G[Ten produkt już ma listing<br/>na drugim koncie tej samej platformy]
    B -->|"updating ponad 30 min"| H[Worker Windmill zawiesił się]
    C --> C1[Marketplace → Konfiguracja → Reauthorize]
    D --> D1[Auto-retry sam się odpalił<br/>jeśli nie — zgłoś bug w Forgejo]
    E --> E1[Otwórz konfigurację konta i ustaw<br/>kategorię domyślną dla tej rodziny]
    F --> F1[Sprawdź w BaseLinkerze<br/>czy produkt ma cennik1 wypełniony]
    G --> G1[Idź do Marketplace → Konflikty<br/>i wybierz, które konto wygrywa]
    H --> H1[Sprawdź /marketplace/history<br/>jeśli stuck — zgłoś bug]

→ Pełna ścieżka per kanał: Allegro — Troubleshooting, Amazon — Troubleshooting, itd.


Cross-linki


Co znajdziesz na stronach platform

Każda strona w tej sekcji ma stałą strukturę — łatwo skanowalną:

  1. Status delivery — czy działa w pełni, częściowo, czy jest ograniczone polityką platformy.
  2. Setup — jak podpiąć konto OAuth z poziomu panelu, krok po kroku.
  3. Wystawianie — co się dzieje w UI, co pod spodem trafia do platformy.
  4. Cenniki — które reguły są wspierane na poziomie flow serwerowego.
  5. Stany ofert — active / draft / removed / blocked i co znaczą u tego dostawcy.
  6. Synchronizacja — jakie crony chodzą.
  7. Edge cases / known gotchas — to, co wiemy z bólu.
  8. Troubleshooting — najczęstsze błędy + co zrobić.
  9. Dane techniczne (appendix) — gdzie szukać kodu, jeśli developer musi wejść głębiej.