Rozwiązywanie problemów technicznych

Pierwszy krok w każdej sytuacji: poproś Claude o ps_get_shop_info i ps_check_shop_health. Razem pokazują wersje, typ konektora (codzienny albo serwisowy), tryb tylko do odczytu, stan licencji, włączone bloki i grupy, poziom danych klientów, brakujące uprawnienia pracownika i moduły podpięte pod zapisy. Dziennik połączeń w panelu modułu pokazuje każde wywołanie z IP, statusem i godziną.

Połączenie

Konektor nie łączy się z Claude.ai.

Sprawdź po kolei:

  1. Adres to https://twoj-sklep.pl/module/tellmyshop/mcp z pełnym tokenem. Punkt dostępu odrzuca zwykły HTTP (403).
  2. Konektor jest włączony w karcie Start. Wyłączony zwraca 503 „konektor wyłączony”; po instalacji jest wyłączony.
  3. „Sprawdź połączenie ponownie” w module działa (token testowy, ważny 2 minuty). Test nie wykrywa blokad krajów ani IP na CDN; pokaże je dopiero pierwsze prawdziwe wywołanie Claude w dzienniku połączeń.
  4. Nic przed sklepem nie blokuje POST na /module/tellmyshop/mcp: basic auth, strona konserwacji, WAF, Cloudflare Bot Fight Mode albo wyzwania. Dodaj wyjątek tylko dla tej ścieżki.
  5. Lista IP, jeśli ustawiona, zawiera zakres Anthropic (160.79.104.0/21) i IP komputerów z Claude Code.
  6. Sklep za Cloudflare albo innym proxy: włącz „Sklep za proxy / Cloudflare” i wpisz zakresy proxy jako zaufane, inaczej lista IP widzi adres proxy.

403 Forbidden.

Prawdopodobne przyczyny:

  • Origin. Żądanie z nagłówkiem Origin jest przyjmowane tylko z https://claude.ai, https://claude.com, https://chatgpt.com albo https://chat.openai.com. Żądania bez Origin przechodzą. Testowe narzędzie w przeglądarce z innym Origin zostanie odrzucone.
  • Lista IP. Adresu IP nie ma na liście.
  • Konektor serwisowy. Token serwisowy działa tylko z IP z listy serwisowej tylko przy włączonym którymś z bloków 3–5 (tryb serwisowy też wygasa) i tylko przy aktywnej licencji.

429 Zbyt wiele nieudanych prób.

20 nieudanych uwierzytelnień z jednego IP w 10 minut blokuje to IP do końca okna czasu; właściciel dostaje alarm. Typowa przyczyna: stary token w Claude albo w skrypcie monitorującym. Popraw token i odczekaj 10 minut.

401 po wygenerowaniu nowego tokenu.

Nowy token od razu unieważnia stary. Zaktualizuj adres konektora w Claude albo nagłówek Authorization: Bearer w konfiguracji Claude Code / Claude Desktop. Token serwisowy dodatkowo domyślnie wygasa po 30 dniach (SERVICE_TOKEN_TTL, 7–90).

Claude Code albo Claude Desktop (lokalnie) się nie łączy.

Użyj --header "Authorization: Bearer <token>" zamiast tokenu w adresie. Punkt dostępu wymaga HTTPS także lokalnie (mkcert). Żądania bez nagłówka Origin przechodzą. Jeśli ustawiona jest lista IP, dopisz publiczne IP komputera.

Błąd wersji protokołu.

Obsługiwane: 2026-07-28 oraz 2025-11-25, 2025-06-18, 2025-03-26. Nieobsługiwana wersja zwraca 400 z listą obsługiwanych.

Brakujące narzędzia

Widać tylko narzędzia odczytu.

Albo włączony jest READ_ONLY (domyślnie po instalacji), albo licencja jest nieaktywna (płatna paczka działa wtedy jak Audyt), albo to darmowa paczka Audyt, która nie ma narzędzi zapisu. ps_get_shop_info powie, która przyczyna.

Brak narzędzi motywu, modułów albo trybu serwisowego.

Bloki 3–5 są tylko w konektorze serwisowym. Sprawdź: token serwisowy wygenerowany i nie wygasł, konektor serwisowy dodany w Claude jako osobny, żądanie z IP z listy serwisowej, blok włączony (blok 5: zegar jeszcze biegnie), płatna paczka z aktywną licencją. W konektorze codziennym nigdy się nie pojawią.

Brak ps_list_file_backups / ps_restore_file_backup.

Należą do wspólnej grupy files, widocznej w konektorze serwisowym tylko przy włączonym którymś z bloków 3–5. Przywrócenie kopii pliku modułu wymaga bloku 4, pliku sklepu bloku 5.

Brak narzędzia obsługi klienta albo odmawia działania.

ps_customer_service jest w grupie support (domyślnie wyłączonej). Przy poziomie danych klientów off odmawia z komunikatem; ustaw pseudo albo full w karcie Dane klientów.

Brak narzędzi bloga.

5 narzędzi bloga rejestruje się tylko przy wykrytym SmartBlog. Inne moduły bloga nie są obsługiwane. ps_check_shop_health zgłasza „brak bloga” jako informację.

Brak narzędzi handlowych.

Blok 2 (Handel) jest domyślnie wyłączony. Włącz go; narzędzia pojawią się w konektorze codziennym.

Narzędzie zniknęło w trakcie rozmowy.

Blok i grupa są sprawdzane przy każdym wywołaniu. Ktoś je wyłączył, włączył tryb tylko do odczytu, wygasł tryb serwisowy albo pełny dostęp do danych klientów, albo zmienił się stan licencji.

Limity

Osiągnięty limit wywołań.

Moduł ma godzinowe limity wywołań, zapisów i zapisów plików; aktualne wartości widać w karcie Ustawienia: bezpieczeństwo, alarmy, limity. Rozłóż duże operacje na kilka godzin albo podnieś limity w karcie Ustawienia: bezpieczeństwo, alarmy, limity.

Operacja zbiorcza odrzucona przez limit.

Limity na wywołanie: ps_update_product_content 50, ps_update_category_content 20, ps_update_image_legends 100, ps_set_product_categories 200, ps_set_product_features 100, ps_update_prices 100, ps_update_stock 100, ps_manage_combinations 100, ps_set_product_redirect 100, ps_translate_catalog_items 200, ps_customer_service set_status 50, ps_db_query 200 wierszy, ps_db_execute kopia maks. 1000 wierszy. Pełna tabela: Specyfikacja pkt 11.1.

Zapisy

change_token wygasł, był użyty albo nie pasuje.

Token to HMAC narzędzia, argumentów i skrótu stanu „przed”, ważny 30 minut, jednorazowy. Powtórz z identycznymi argumentami albo zrób nowy podgląd.

Wykonanie zablokowane: dane zmieniły się od podglądu.

Skrót stanu „przed” już się nie zgadza, np. po edycji w panelu, imporcie albo działaniu modułu feedu. Zrób nowy podgląd.

Zmiana ceny odrzucona.

ps_update_prices odrzuca cenę 0 i zmiany powyżej 30% bez allow_big_change. ps_manage_specific_prices i ps_manage_catalog_price_rules wymagają allow_big_change przy rabacie powyżej 90% (ostrzeżenie powyżej 50%). Claude powinien ustawić flagę dopiero po zgodzie właściciela na zmianę tej wielkości.

Reguła koszyka utworzona, ale nieaktywna / nie da się usunąć.

ps_manage_cart_rules celowo tworzy reguły nieaktywne; użyj action=set_active. Akcji usuwania nie ma; wyłącz regułę albo usuń ją w panelu. Reguła bez kodu wymaga auto_apply.

Błąd walidacji przy zapisie.

ObjectWriter sprawdza każde pole regułami klasy (validateField, isCleanHtml, długości). Nazwy produktów nie mogą zawierać <>;=#{} i mają maks. 128 znaków. Komunikat podaje pole.

Inny moduł nie reaguje na zmianę z Claude.

ObjectWriter wywołuje update(), które odpala actionObject<Klasa>Update* (a dla produktów actionProductSave / actionProductUpdate). Moduły, które nasłuchują tylko hooków formularza panelu, zmiany nie zobaczą. ps_check_shop_health je wymienia.

Brak uprawnień.

ExecutionContext::requirePermissions sprawdza pracownika konektora per zakładka i akcja, np. AdminCartRules add/edit. Włączenie grupy albo bloku nadaje odpowiednie uprawnienia; jeśli profil był edytowany ręcznie, ps_get_shop_info wymienia braki. W niektórych wersjach PrestaShop moduły ignorują zapisy pracownika bez uprawnienia „widok” do modułów; karta Start ma do tego poprawkę jednym kliknięciem.

Cofnięcie odrzucone.

ps_revert_change nie cofnie: usunięcia zdjęcia produktu, produktu, który trafił już do zamówienia (utworzony produkt cofa się przez usunięcie), odinstalowania modułu, DDL w ps_db_execute, zmian adresów (użyj nowego ps_change_url). Zaszyfrowane wpisy historii wymagają pliku klucza; bez niego nie da się ich cofnąć.

Adresy URL

Zmiana adresu zablokowana.

ps_change_url odmawia, gdy przekierowanie kanoniczne to 302 (Parametry sklepu > Ruch i SEO, ustaw 301), włączony jest tryb deweloperski (_PS_MODE_DEV_) albo moduł nadpisuje trasy (UrlGuard; ps_check_shop_health poda nazwę). Zmiana adresów bloga wymaga włączonych „Przekierowań 301 dla bloga” w ustawieniach.

ps_manage_redirects odrzuca przekierowanie.

Podgląd przyjmuje tylko źródła, które teraz zwracają 404 albo 410 (działający adres zostanie odrzucony), i cele zwracające 200 w domenie sklepu. Łańcuchy (cel sam jest przekierowany) i pętle są blokowane. Do 100 pozycji na add, do 100 ID na disable/enable; źródło do 1024 znaków, adres celu do 2048. Usuwania nie ma: użyj disable albo cofnij przez historię zmian. Narzędzie wymaga licencji; w Audycie jest tylko ps_list_redirects.

Pliki, motyw i cache

Zmiany nie widać po zapisie motywu.

Uruchom ps_clear_cache (zakres smarty; all czyści też cache Symfony). Cache modułów pełnych stron i CDN czyść osobno.

Błąd walidacji Smarty.

Dozwolone są tylko znaczniki i modyfikatory z białej listy, potem próbna kompilacja; {php}, {include_php} i statyczne wywołania klas są odrzucane. Nic nie zostało zapisane.

„search musi wystąpić dokładnie raz”.

Użyj dłuższego fragmentu albo zapisz cały plik przez content.

Odmowa dostępu do pliku w bloku 4 albo 5.

Ścieżki muszą być względne, bez .., po realpath w obrębie strefy i z rozszerzeniem tekstowym. Zawsze zablokowane: parameters.php/yml, settings.inc.php, .env*, klucze i certyfikaty, zrzuty SQL i .bak, .git, var/logs, upload, download, katalog prywatny modułu i sam moduł.

Zapis pliku PHP odrzucony.

Sprawdzenie składni (token_get_all(TOKEN_PARSE)) znalazło błąd. Błędów wykonania (np. nieistniejącej funkcji) nie wykrywa, dlatego każdy zapis PHP ma kopię, a do tego jest klucz awaryjny.

Przywrócenie po zepsutej zmianie.

ps_list_file_backups, potem ps_restore_file_backup (najpierw kopiuje obecną wersję), potem ps_clear_cache. Jeśli panel nie działa: otwórz adres awaryjny i wpisz klucz awaryjny; przywraca pliki zmienione przez konektor i wyłącza tryb serwisowy, ale bazy nie rusza.

SQL (blok 5)

Zapytanie odrzucone.

Tylko jedno polecenie, bez komentarzy ukrywających treść. Zawsze zablokowane: tabele pracowników, sesji, uprawnień i profili, configuration (do tego ps_config), webservice i API, tabele konektora, operacje na plikach i użytkownikach MySQL. Tabele z danymi osobowymi tylko przy poziomie danych klientów pseudo (z maskowaniem) albo full.

ps_db_execute wycofane.

Zmieniło się więcej wierszy, niż zadeklarowano, albo kopia objęłaby ponad 1000 wierszy. Zawęź WHERE albo podziel zmianę.

Znane problemy w 2.5.1 i ich stan w 2.6.0

NarzędzieProblem
ps_update_pricesPodgląd pokazywał „zł” w sklepie w EUR. Poprawione w 2.6.0: kwoty są w domyślnej walucie sklepu
ps_get_product_salesWymagał daty początkowej; summary.net nie był zaokrąglony. Poprawione w 2.6.0: bez date_from okres to 90 dni przed datą końcową; kwoty zaokrąglone do 2 miejsc
ps_search_productsKolumna price nie mówiła, czy to netto czy brutto. Poprawione w 2.6.0: kolumna jest opisana jako cena brutto
ModułOstrzeżenie w dzienniku PrestaShop o niezdefiniowanym hooku registerGDPRConsent. Poprawione w 2.6.0: moduł ma hookRegisterGDPRConsent
LicencjaW 2.5.1 niewpięta. W 2.6.0 egzekwowana: Settings::groupsFor($connector, $this->licensed) w src/Endpoint.php
PrywatnośćMaskowanie w ps_list_changes i ps_get_logs oraz IP zapisanych jako liczby poprawione w 2.6.0. Dziennika audytu (pełny dostęp do danych, tryb serwisowy, bloki, licencja) nie da się wyczyścić z panelu, a eksport CSV jest w karcie Dane klientów (RODO). Stałe pseudonimy w 2.6.0: HMAC z kluczem dziennym, więc oznaczenie jest takie samo w ciągu doby i zmienia się następnego dnia

Zgłoszenie problemu

Wyślij na [email protected]: domenę, wersje PrestaShop i PHP, wersję modułu, paczkę (płatna albo Audyt), typ konektora, nazwę narzędzia, dokładną treść błędu, godzinę. Wysyłaj tylko prefiks tokenu, nigdy cały token.


PrestaShop jest zastrzeżonym znakiem towarowym PrestaShop SA. Claude jest znakiem towarowym Anthropic. TellMyShop nie jest powiązany z żadną z tych firm.

Aktualizacja: 2026-10-04