Prośba o wsparcie przy zmniejszeniu liczby błędów tworzenia elastycznych zestawów /sale/flexible-bundles
- 主要語言
- 沒有語言資料
- 星號
- 244
- 分支
- 40
- PR 合併指標
- 30 天內沒有已合併 PR
描述
Dzień dobry,
korzystamy z endpointów:
- `POST /sale/flexible-bundles`
- `PUT /sale/flexible-bundles/{bundleId}`
Zgodnie z dokumentacją zestaw elastyczny nie może zawierać m.in.:
- ofert z ograniczeniem wiekowym, np. alkoholu;
- ofert B2B;
- ofert z kategorii nieobsługiwanych przez Flexible Bundles;
- wielu ofert reprezentujących ten sam produkt;
- jednocześnie ofert One Fulfillment oraz ofert realizowanych przez sprzedawcę.
Chcielibyśmy sprawdzać wszystkie te warunki przed wysłaniem żądania POST/PUT, aby nie generować odpowiedzi HTTP 422.
Status One Fulfillment możemy odczytać z pola `isFulfillment` zwracanego przez `GET /sale/offers`. Nie znaleźliśmy natomiast w publicznym API analogicznej informacji pozwalającej jednoznacznie ustalić, czy:
1. oferta jest objęta ograniczeniem wiekowym;
2. jej kategoria obsługuje Flexible Bundles;
3. konkretna oferta lub kategoria spowoduje błąd `OffersFromBannedCategoriesException`.
`GET /sale/categories/{categoryId}` nie zwraca obecnie pola w rodzaju `flexibleBundlesSupported` lub `ageRestricted`. Nie znaleźliśmy również endpointu umożliwiającego sprawdzenie definicji zestawu bez próby jego utworzenia lub aktualizacji.
Dodatkowym problemem jest brak możliwości ustalenia kategorii powodującej odrzucenie.
Każdy slot zestawu zawiera oferty z jednej kategorii, ale jeden Flexible Bundle może składać się z wielu slotów, a więc również z wielu różnych kategorii. Sam błąd `OffersFromBannedCategoriesException` informuje jedynie, że co najmniej jedna kategoria jest niedozwolona.
Nie pozwala nam natomiast ustalić, który slot, `offerId` lub `categoryId` spowodował odrzucenie.
Nie możemy bezpiecznie uznać wszystkich kategorii przesłanych w takim żądaniu za niedozwolone, ponieważ część z nich może poprawnie obsługiwać Flexible Bundles. Nie chcemy również wykonywać kolejnych prób z różnymi kombinacjami slotów, ponieważ prowadziłoby to do generowania następnych odpowiedzi 422.
Czy istnieje obecnie wspierany sposób, aby przed wywołaniem POST/PUT:
- rozpoznać ofertę z ograniczeniem wiekowym;
- sprawdzić, czy konkretna kategoria obsługuje Flexible Bundles;
- pobrać listę kategorii obsługiwanych lub niedostępnych dla Flexible Bundles;
- zweryfikować całą definicję zestawu bez jego utworzenia;
- ustalić, który slot, `offerId` lub `categoryId` spowodował `OffersFromBannedCategoriesException`?
Jeżeli taki mechanizm obecnie nie istnieje, czy planują Państwo udostępnić jedno z następujących rozwiązań:
- flagę kwalifikacji w `GET /sale/categories/{categoryId}`;
- pole `ageRestricted` w danych oferty lub kategorii;
- maszynowo odczytywalną listę kategorii obsługiwanych albo niedostępnych dla Flexible Bundles;
- bezskutkowy endpoint walidacyjny zwracający błędy osobno dla każdego slotu i oferty;
- identyfikator niedozwolonej kategorii lub oferty w odpowiedzi 422, np. w polach `path`, `details` albo `metadata`?
Obsługujemy wielu sprzedawców, w tym konta oferujące alkohol oraz asortyment 18+. Bez wcześniejszej walidacji jedynym sposobem poznania ograniczenia może być otrzymanie odpowiedzi 422 z właściwego endpointu publikacyjnego.
Zależy nam na unikaniu takich prób, szczególnie że duża liczba odpowiedzi 422 może skutkować ograniczeniem dostępu aplikacji do endpointu. Jednocześnie nie chcemy wyłączać poprawnych kategorii wyłącznie dlatego, że znalazły się w jednym zestawie razem z kategorią niedozwoloną.
Będziemy wdzięczni za wskazanie rekomendowanego sposobu przeprowadzenia takiej walidacji.
貢獻指南
這個儲存庫沒有索引到貢獻指南
研究方向
Start by reviewing the documented POST and PUT /sale/flexible-bundles behavior alongside GET /sale/offers and GET /sale/categories/{categoryId}. Done requires a documented, supported way to validate eligibility before mutation and identify the offending slot, offer, or category, or a maintainer-confirmed statement that no such mechanism exists.
由索引模型根據 Issue 內容生成。
評估
- 領域
- api, backend-api-design
- Issue 類型
- 功能
- 難度
- 5/5
- 預估耗時
- 一週以上
- 活躍度
- 活躍
- 描述清晰度
- 需要釐清
- 新手友好度
- 25/100