1b.app
Скопирована ссылка -

Не работает корректно действие "Создать продукт из процесса на основании дополнительных полей продукта процесса"

Ответы:

Добрый день. Нужно передавать id бренда а не его название. Если вам нужно передавать название и искать или создавать бренд по названию можно доработать. Займет 1ч
02.06.2022, 16:02

Посмотрите, а есть ли на балансе у меня доработки ?
Должно было быть пару часов, если да - то доработку делаем, удобная штука
02.06.2022, 16:05

Добрый день. Добавили отдельное значение для выбора "Бренд (название)" . Если по названию бренд не нашло, создаст новый с таким названием и пропишет продукту.
03.06.2022, 11:53

Дворак Микола
Papidu Digital Agency
+
07.06.2022, 12:05

В связи с тем, что продукты - для меня самая наболевшая тема в Боксе.
(так как Бокс не выдержит обновления всех прайсов)
Хочу выразить огромную благодарность за инфу о том, что нужны ID брендов для создания.
А добавления значения "Бренд (название)" с логикой поиска это очень круто.

Так же хотел уточнить, за что отвечает пункт "учитывать реальные продукты" ?
Потому как появилась другая проблемка:
При условии запрета: "создавать в системе продукты с одинаковыми артикулами" - на данный момент продукт создается любой ... через данное действие в не зависимости от того, есть ли такой продукт в системе или нет.

Возможно, я что то не правильно делаю ?
10.06.2022, 11:53

В заказе может быть несколько разных объектов числится как продукты:
1. Реальные товары у которых есть карточка
2. Фиктивные товары, у которых нет карточки но они добавлены в заказ. Можно добавлять в заказ товары без привязки к карточке продукта, ставить им цены и прочее.

Вот галочка делает так, чтобы учитывались только товары из 1 пункта
По поводу того что бокс что-то может "не выдержать" очень спорное выражение. Какое количество записей поставщика и за какое время вам нужно грузить? Если вы все товары поставщика прогоняете через заказы, скорее всего вы что-то делаете не так потому что есть специальный функционал "Загрузка прайсов поставщиков" который специализируется на прайсах от поставщиков и за пару минут может обрабатывать по 100-200к строк в xls
10.06.2022, 12:06

Согласен, не подумал: "не выдержит" это ранее относилось к OneBox при условии обновления 1-1.5 млн. позиций, через api c сайта.
Имея сервак: CX51: 8 VCPU / 32 GB RAM = > должно потянуть прайс 500 тыс., да ?)

"Создать продукт из процесса на основании дополнительных полей продукта процесса"
Если "Учитывать реальные продукты" я думал будет срабатывать "Уникальность артикулов"
И нельзя будет создавать продукт, который уже есть в системе с таким же артикулом.
13.06.2022, 10:22

https://app.swaggerhub.com/apis-docs/Bodya44/OneBoxOSapiv2/2.0 новое апи достаточно шустрое. Если вам нужно обновлять например только несколько полей, то один запрос на обновление товаро может работать до секунды. Так же товары можно обновлять группами через него, по 100 штук. Соответственно вы можете составить запрос на обновление 100 пробных продуктов, померять скорость ответа от бокса и расчитать сколько примерно займет обновление всех ваших товаров. Так же не стоит забывать что в апи можно стучатся в мультипотоке, 10 потоков думаю будет достаточно. Таким образом вы увеличите скорость выгрузки ваших данных еще раза в 4-5. Насколько больно при этом будет серверу и его базе данных (нагрузка восновном будет на бд), нужно смотреть на конкретном примере. Я бы ставил на то, что если вы хотите обновлять цены всем товарам, вы справитесь с обновлением 500к товаров минут за 10-30.
Для начала советую просто попробовать обновить несколько продуктов через новое апи одним запросом и померять скорость на вашем сервере, мне кажется она вас должна полностью устроить.
14.06.2022, 09:33

Как проведете тесты, отпишитесь пожалуйста - уж очень интересно стало что у вас выйдет на реальных данных.
14.06.2022, 09:51

у меня выходит примерно так:
[{"id":"100854","price":1293},{"id":"100965","price":1293},{"id":"100853","price":1293},{"id":"100176","price":602},{"id":"100175","price":1302},{"id":"100177","price":802},{"id":"100178","price":802},{"id":"95034","price":1193},{"id":"95131","price":1193},{"id":"95122","price":753},{"id":"97191","price":472},{"id":"97190","price":472},{"id":"97184","price":472},{"id":"97189","price":472},{"id":"97183","price":472},{"id":"97188","price":472},{"id":"97186","price":472},{"id":"97182","price":472},{"id":"97187","price":472},{"id":"97185","price":472},{"id":"96028","price":566},{"id":"96019","price":1117},{"id":"96020","price":1117},{"id":"95104","price":907},{"id":"95147","price":1282},{"id":"96027","price":1402},{"id":"95144","price":984},{"id":"95145","price":984},{"id":"95146","price":984},{"id":"95143","price":453},{"id":"96024","price":1766},{"id":"96542","price":1766},{"id":"96021","price":1039},{"id":"96022","price":1039},{"id":"96023","price":1039},{"id":"96640","price":913},{"id":"96726","price":1337},{"id":"98395","price":1202},{"id":"96727","price":1337},{"id":"95179","price":661},{"id":"95130","price":661},{"id":"95124","price":661},{"id":"95123","price":661},{"id":"97217","price":1038},{"id":"97218","price":1038},{"id":"97219","price":1038},{"id":"97220","price":1038},{"id":"95129","price":823},{"id":"95128","price":823},{"id":"95127","price":823},{"id":"95126","price":823},{"id":"95125","price":823},{"id":"95033","price":823},{"id":"96545","price":841},{"id":"97434","price":841},{"id":"96724","price":510},{"id":"96723","price":510},{"id":"96725","price":510},{"id":"95148","price":731},{"id":"97161","price":472},{"id":"97159","price":472},{"id":"97156","price":472},{"id":"97160","price":472},{"id":"97158","price":472},{"id":"97155","price":472},{"id":"97157","price":472},{"id":"95030","price":1237},{"id":"96069","price":1237},{"id":"95149","price":1248},{"id":"95031","price":1248},{"id":"95150","price":1248},{"id":"95032","price":1358},{"id":"95121","price":1358},{"id":"97171","price":472},{"id":"97170","price":472},{"id":"97167","price":472},{"id":"97164","price":472},{"id":"97169","price":472},{"id":"97166","price":472},{"id":"97163","price":472},{"id":"97168","price":472},{"id":"97165","price":472},{"id":"97162","price":472},{"id":"94994","price":698},{"id":"97694","price":1248},{"id":"97180","price":1003},{"id":"97177","price":1003},{"id":"97179","price":1003},{"id":"97176","price":1003},{"id":"97173","price":1003},{"id":"97178","price":1003},{"id":"97175","price":1003},{"id":"97172","price":1003},{"id":"97181","price":902},{"id":"97174","price":902},{"id":"99955","price":852},{"id":"98763","price":268},{"id":"99078","price":257},{"id":"99079","price":298},{"id":"95602","price":245}]

обновление цены 100 товаров в одном запросе по id товара в боксе, скорость ответа на запрос: 0.89 сек на холодную. На холодную значит что это первый запрос по этим продуктам, т.е. их выборки нет в кеше mysql. Если слать запрос повторно, то это уже примерно 0.5. сек. Важно понимать что это почти идеальные условия без автоматизаций для продукта и локальная машина c 6 потоками процессора по 2.8 GHz.

Так же в апи есть параметр fast. Тогда бокс вообще не выполняет обновления которые вы прислали а выдает вам id задачи. Когда специальные воркеры дойдут до выполнения обновлений, запрос будет выполнен и по id задачи вы сможете получить результат отработки, если он вам будет нужен. С ним вы время ответа сократите до пинга между серверами и времени запуска движка, это примерно 0.1 сек.

Если брать ваши данные и мои расчеты, то 500к товаров это примерно 500к/100=5000 запросов в api. Если учитывать что каждый отрработает за 1сек (а на вашем сервере явно процессор получше и ответ должен быть быстрее, если пинг между серверами не большой). 5000 запросов это 5000 секунд ~ 83 минуты. Если сделать в несколько потоков, можно уложится в 10-15 минут на обновление всех 500к товаров. Так же нужно понимать что вам врятли нужно выгружать каждый час все 500к товаров а нужно обновлять только те, у которых произошли какие то изменения. Что уменьшает 500к товаров до передачи нескольких сотен каждый час.

Но даже передача 500к товаров за час в однопотоке мне кажется вполне нормальным результатом. Так что ваши слова про то что бокс что-то не потянет мне кажутся как минимум не обоснованными а как максимум немного обидными)

p.s. жду результатов ваших тестов с вашими данными. Доказательства того что 100 товаров можно обновить меньше чем за 1 сек у вас есть выше.
14.06.2022, 10:11

Добрый вечер.


anonymous hamster

OneBox production писал/а:
Как проведете тесты, отпишитесь пожалуйста - уж очень интересно стало что у вас выйдет на реальных данных.


Добрый вечер.
Прошу прощение за столь "быстрый" ответ.
Если бы я знал, а главное мог, то я бы в тот же день сделал бы... и провел бы тесты.
А так жду и надеюсь, что разработчики сайта и интегратор согласуют и реализуют данный функционал...
И обязательно дам обратную связь.
04.07.2022, 20:50


anonymous hamster

OneBox production писал/а:
Добрый день. Добавили отдельное значение для выбора "Бренд (название)" . Если по названию бренд не нашло, создаст новый с таким названием и пропишет продукту.


Все супер, как я ранее говорил.
Подскажите, пожалуйста, при создании товара через доп. поля создаются дубли по артикулу, при условии запрета.
Возможно, я что то не так делаю ?
Или это все требует доработок ?
По типу, как с брендом ?
Если артикул сущестувует, то подставляем данные товара с данным артикулом.
Если не существует, то создаем артикул.
В идеале, что бы при поиске артикуле учитывался бренд.
По типу:
1. Если по названию бренд не нашло, создаст новый с таким названием и пропишет продукту.
2. Если бренд нашло, то создаем поиск по Артикулу с учетом бренда.
3. Если Артикула с таким брендом не сущестует, то создаем новый продукт с таким артикулом и брендом.
4. А если существует, то подставляем данные "найденного продукта"
04.07.2022, 21:03

все зависит от того, каким образом вы создаете товар. Дайте последовательность действий или пример апи запроса которым вы создаете товар, тогда я точно смогу подсказать алгоритм. Если вы создаете товар через apiv2 /api/v2/product/set/ то там есть поле findbyArray, в которое необходимо передавать список полей по которым нужно искать продукт перед созданием. Т.е. если передат туда ["articul", "externalid"] то сначала будет поиск товара по артикулу и внешнему id а потом вставка.
05.07.2022, 17:17

Пожалуйста, присоединяйтесь к диалогу. Если вам есть что сказать - пожалуйста, напишите комментарий. Для входа потребуется мобильный телефон и смс-код для идентификации. Войти и написать комментарий