Программисты, хотите поржать над OZON.RU ?

Программисты, хотите поржать над OZON.RU ?

Леонид Каганов

Это прямо такой анекдот, что распространение в тематических форумах приветствуется. Программисты поймут.

Есть известный магазин OZON.RU, в нем API для продавцов. Год назад один друг, служащий в торговле, попросил ему сделать системку, которая бы загружала на OZON карточки товаров для продажи, чтобы ему не приходилось год за годом переносить руками все графы из каталогов склада. Я в этой истории вообще не сотрудник, не программист, а просто совершенно левый человек, который помогал старому другу в основном из любви к искусству. Системку я наваял, год всё жило где-то у меня на lleo.me, и работало быстро и интерактивно, облегчая монотонный труд оператора.

API Озона и так было кривым, но теперь вышла новая версия, а старая отключена... В двух словах на пальцах объясню принцип, чтобы поняла даже блондинка.

Допустим вы продаете товар: не важно, рояль, детское питание или сраный шнурок. Вы должны завести через API карточку своего товара. Помимо «Цена = 200 руб» вы заполняете в карточке кучу характеристик товара, чье количество может быть и сотня обязательных параметров (для ноутбука). Здесь и далее синтаксис запросов для понятности опускаю, голый архитектурный смысл карточки таков:

«Категория» = «Кабели»
«Бренд» = «Beauty Bakerie»
«Цвет» = «Зелёный», «Черный»

Это недостижимый идеал юзабилити. Так было бы устроено API нормальных людей. В Озоне такого не было никогда. В OZON.RU системные архитекторы от бога. Они не могут принимать от клиентов имя категории «Кабели» и пробить по своей базе, что она у них имеет внутренний номер 17028634 сегодня. Сегодня — потому что их номера постоянно меняются. Нет, они требуют, чтобы номер выяснил сам клиент (!). То есть — сделал лишнее обращение к API отдельным методом и узнал, что категория «Кабели» имеет номер 17028634. И еще одно обращение к API — узнать, что атрибут «Бренд» имеет внутренний номер 85, «Цвет» — 10096, и так далее. Только сделав кучу лишних запросов, клиент мог создать карточку в формате API v.1 по смыслу примерно такую:

«Категория» = «17028634»
«85» = «Beauty Bakerie»
«10096» = «Зелёный», «Черный»

Уже мило, правда? Но такое счастье было лишь до недавнего времени. Всё развивается, развились и технические сотрудники OZON.RU С 1 сентября они выключили API v.1 и включили API v.2 Видимо, я пока единственный его пользователь. Новое API требует передавать номерами не только атрибуты, но и их значения:

«Категория» = «17028634»
«85» = «971072945»
«10096» = «3141», «5925»

Значит, клиент должен выяснить еще и номера своих значений? Ну конечно! Делая дополнительные запросы к API методом /v2/category/attribute/values и только им. Метод позволяет выкачивать словарь всех возможных значений для каждой из характеристик товара!

Чтобы узнать номер бренда «Beauty Bakerie» надо всего лишь сделать... подряд 867 запросов. Чтобы получить порциями по 50 штук (максимальное ограничение) все 43350 названий брендов на сегодняшний день, и в конце списка найти свой «Beauty Bakerie» = 971072945. А характеристик у товара ещё много. И для каждого значения надо узнать его номер. Например «Стран-производителей» сейчас в базе Озона всего 266, и за каких-нибудь 6 запросов вы все их узнаете. Далее вам предстоит выкачать 10100 названий атрибута «Коммерческий тип». Затем — 303150 названий атрибута «Серии», сделав 6062 запроса... Понимаете, да? ШЕСТЬ ТЫСЯЧ СУКА КЛИЕНТСКИХ ЗАПРОСОВ К СЕРВЕРУ ТОЛЬКО ЧТОБЫ УЗНАТЬ НОМЕР ОДНОГО ЗНАЧЕНИЯ ДЛЯ ОДНОГО ИЗ АТРИБУТОВ! Только потому, что программисты поленились сделать это на стороне сервера и вынесли на голову клиентов свои собственные проблемы со своей собственной нумерацией своей собственной сраной базы!

Понимаете, да? Это примерно как если бы я в своем блоге требовал от посетителей предварительно выяснить и указать в тексте своего комментария к заметке внутренний номер заметки (у этой заметки он 5034, например, но кого это должно волновать, кроме программиста и его базы на сервере?)

На мои недоуменные вопросы теходдержка OZON.RU отвечает:

11 сентября, 19:46
Уважаемый партнёр, к сожалению необходимо запрашивать полный список для получения нужных данных, вы можете сохранить его в своей базе данных и отсортировать нужные значения. Также вы можете написать скрипт, который будет в автоматическом режиме выгружать или искать необходимые вам значения из нашей базы.
Если у вас остались вопросы связанные с API будем рады помочь.

У меня, простого русского писателя-фантаста, конечно, остались вопросы.

Какую зарплату ежемесячно получают программисты компании OZON.RU?

Есть ли у них главный программист, архитектор, постановщик задач, или работают как-то так?

Сколько классов в среднем у них образование?

Оно уже завершено или еще продолжается, раз выключение старой версии API было приурочено к 1 сентября?

Знают ли инвесторы и руководство OZON.RU о том, какой системный ад происходит в отделе технической разработки?

Не жалко ли им своих серверных мощностей?

У меня много вопросов.
Но задавать их, как вы понимаете, нет смысла и некому.


UPD: Пришел новый ответ:

12 сентября, 8:26
Добрый день, уважаемый партнер.
Согласен с вами, что на данный момент механизм добавления бренда неудобен.
Наша команда разработки в курсе этой проблемы.
На данный момент решается вопрос о реализации работы метода.
В планах есть добавить переменную query или search в [https://api-seller.ozon.ru/v2/category/attribute/values], на основе которой будет происходить регистро-нечувствительный поиск по справочнику.
К сожалению точные сроки реализации неизвестны, информацию об обновлении, можно смотреть здесь:
https://docs.ozon.ru/api/seller/#tag/News
Сейчас большинство партнеров, хранят бренды на своей стороне.
Затем периодически обновляют информацию, так как справочники брендов динамические.
Понимаю, что предложенный вариант не совсем удобен, но к сожалению на данный момент других, более удобных способов нет.
В случае возникновения дополнительных вопросов, обращайтесь, будем рады вам помочь.


UPD 2: Нет, ну совсем сил нет. Наверно я это зря написал:

Простите, вы там вообще наркоманы упоротые?

Мало того, что вы отключили старый API и нарушили работу систем всех своих партнеров.
Мало того, что ваш новый API чудовищно непрофессионально спроектирован и заставляет делать сотни тысяч обращений к серверам чтобы локально вытянуть кучу гигантских словарей и узнать, каким сраным временным индексом в своих грёбаных внутренних базах вы сегодня обозначили нужное value. Так у вас еще и эти базы битые, содержат взаимно противоречащие дубли?!!

category_id = 17028634 attribute_id = 85 value = Hama id = 5092609
category_id = 17028634 attribute_id = 85 value = Hama id = 115527429

Вы вообще что ли ничего не умеете, даже индексы строить?! Вас по итогам районной олимпиады трудоустроили в корпорацию? Может вам всем отделом уже пойти на курсы какие-нибудь по программированию и базам данных? Господи Кришна, на что я блять, простой писатель-фантаст, трачу своё сука время, помогая другу с автоматизацией его неведомого склада, который я ему наладил год назад и забыл нахуй, а теперь вы блять всё поломали. Да будьте вы прокляты, ебанаты хтонические!



Report Page