allegro / allegro-api

Issue tracker and wiki for Allegro REST API
https://developer.allegro.pl/
213 stars 39 forks source link

Problem z wystawianiem aukcji z cechami niejednoznacznymi #9510

Open JacekWUG opened 1 month ago

JacekWUG commented 1 month ago

Występuje problem:

:beetle: Opis / Description

Jakiś czas temu miałem parę pytań odnośnie możliwości podawania dla produktu cech niejednoznacznych -> https://github.com/allegro/allegro-api/issues/9180

Dowiedziałem się od was, że jeżeli cecha jest oznaczona jako "requiredForProduct" : true to nie można do niej przekazywać wartości niejednoznacznej. Niestety zauważyliśmy, że działanie API nie do końca współgra z samym serwisem i tymi założeniami. Mam dwa problemy:

  1. Dla produktu EAN 8718863041826 dostajemy cechę "Smart TV":
{
      "id" : "211678",
      "name" : "Smart TV",
      "type" : "dictionary",
      "required" : true,
      "requiredForProduct" : true,
      "requiredIf" : null,
      "displayedIf" : null,
      "unit" : null,
      "options" : {
        "variantsAllowed" : false,
        "variantsEqual" : true,
        "ambiguousValueId" : "211678_250638",
        "dependsOnParameterId" : null,
        "describesProduct" : true,
        "customValuesEnabled" : false
      }

która ma "requiredForProduct" : true oraz "ambiguousValueId" : "211678_250638" (inny system producenta). Z drugiej strony, edytując aukcję z poziomu serwisu allegro możemy wybrać tę wartość niejednoznaczną. Czemu możliwe jest w serwisie allegro robienie czegoś co jest niedozwolone przez API? Korzystając z API jesteśmy tutaj zmuszeni w takiej sytuacji wysyłać wartość "brak informacji" (co akurat nie jest wartością niejednoznaczną), co jest półprawdą.

  1. Dla produktu 5908235977782 dostajemy cechę "Model":
{
      "id" : "249460",
      "name" : "Model",
      "type" : "dictionary",
      "required" : true,
      "requiredForProduct" : true,
      "requiredIf" : null,
      "displayedIf" : null,
      "unit" : null,
      "options" : {
        "variantsAllowed" : false,
        "variantsEqual" : false,
        "ambiguousValueId" : "249460_1651273",
        "dependsOnParameterId" : "130110",
        "describesProduct" : true,
        "customValuesEnabled" : true
      }

tutaj wartością niejednoznaczą jest "inny", ale brakuje właściwego modelu (FW59). W takiej sytuacji biznes, który zakłada aukcje wyłącznie poprzez API, jest zmuszony skłamać i wybrać inną opcję. I znowu z poziomu serwisu allegro można wybrać wartość "inny" i wpisać dowolną wartość.

Podsumowując:

  1. Czemu w serwisie allegro możliwe jest robienie czegoś co jest niedozwolone przez API? Czy te niespójności nie powinny zostać naprostowane?
  2. Co w powyższych sytuacjach powinien zrobić klient zarządzający aukcjami wyłącznie poprzez API Allegro? Można pewnie wysyłać formularze z prośbą o uzupełnienie cech, ale takie rozwiązanie znacznie spowalnia cały proces wystawiania aukcji. Jest jakiś automatyczny sposób żeby uporać się z takimi problemami?
MaciejFrackowiak commented 1 month ago

Dla podanego EAN=8718863041826 zwracamy produkt o id=ab472765-7341-4306-b90b-378f8ce66678. Ma on przypisany parametr:

{
            "id": "211678",
            "name": "Smart TV",
            "valuesLabels": [
                "inny system producenta"
            ],
            "valuesIds": [
                "211678_250638"
            ],
            "values": null,
            "unit": null,
            "options": {
                "identifiesProduct": false
            }
        }

Flaga "identifiesProduct"=false mówi, że dany parametr nie identyfikuje produktu, a to oznacza, że możesz wartość dla podanego parametru nadpisać podając inną wartość z dostępnych dla parametru "Smart TV". Bez przeszkód wystawiłem ofertę z inną wartością. Możesz także zaproponować zmianę w istniejącym produkcie, jeżeli uważasz, że wartość parametru co do zasady jest błędna.

Odnośnie EAN=5908235977782 - tu otrzymujemy produkt o id=5932e3dc-f5ab-4ed6-8ca4-d5d268b966fc. W jego szcegółach widzimy parametr Model:

{
                    "id": "249460",
                    "name": "Model",
                    "valuesLabels": [
                        "inny (FW59)"
                    ],
                    "valuesIds": [
                        "249460_1651273"
                    ],
                    "values": [
                        "FW59"
                    ],
                    "unit": null,
                    "options": {
                        "identifiesProduct": true
                    }
                }

Produkt posiada jednoznacznie przypisany model - "inny (FW59)". Identyfikuje on produkt, zatem nie można go zmienić.

JacekWUG commented 1 month ago

Dziękuję za wyjaśnienie :smiley:

W takim razie jakie znaczenie mają i czym od siebie się różnią parametry "required", "requiredForProduct" otrzymywane ze szczegółów kategorii /sale/categories/{categoryId}/parameters oraz parametr "identifiesProduct" ze szczegółów produktu?

MaciejFrackowiak commented 1 month ago

Flaga "required" mówi, że dany parametr jest wymagany jako parametr ofertowy. Natomiast flaga "requiredForProduct" mówi, że dany parametr jest wymagany, gdy tworzysz propozycję nowego produktu. Z kolei "identifiesProduct" identyfikuje produkt - jeśli "true" to jest to parametr, którego wartości nie możesz nadpisać.

stale[bot] commented 1 month ago

W tym wątku nie pojawiła się żadna nowa odpowiedź w ciągu 7 dni, dlatego automatycznie oznaczamy go jako przeterminowany. Jeśli w ciągu kolejnych 7 dni nie pojawi się żadna odpowiedź, wątek zostanie zamknięty. Dziękujemy za zaangażowanie w dyskusję i zachęcamy Cię do wypełnienia ankiety dotyczącej naszego wsparcia na forum.


There was no new reply in this thread within 7 days, therefore, we automatically marked it as expired. If no response is received within the next 7 days, this thread will be closed. Thank you for engaging in the discussion. We encourage you to complete our forum support survey.