torin-asakura / shdvor

Репа шиномонтажки
https://shdvor.pro
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

Управление ценами #9

Closed TorinAsakura closed 4 months ago

TorinAsakura commented 2 years ago

Проблема

Инконсистентность цен в акси и яндекс бизнесе

Задача

Стек

Материалы

Справка Яндекса

TFK70 commented 2 years ago

Конечный формат файла: xml (ICML) (примеры)

Сопоставление форматов

Начало:

Все находится внутри свойства <shop>.

Список константных значений:

<shop>
   <name>BestSeller</name>
   <company>Tne Best inc.</company>
   <url>http://best.seller.ru</url>
   <platform>uCoz</platform>
   <version>1.0</version>
   <agency>Технологичные решения</agency>
   <email>example-email@gmail.com</email>
   .....
</shop>

Позиция:

Все данные указываются внутри свойства <offer>:

<offer>
....
</offer>

Категория:

Все возможные категории указываются в отдельной секции <categories>

В id может быть указано любое число (можно просто указывать там индекс 0,1,2,3 и тд)

<categories>
   <category id="1">Название</category>
</categories>

Чтобы указать принадлежность товара к категории:

(далее <offer> как родительская категория указываться не будет, для удобства, но она подразумевается)

<offer>
   <categoryId>101</categoryId>
</offer>

Название:

<name>Название</name>

Описание:

<description>Описание</description>

Цена:

<price>8990</price>
<currencyId>RUR</currencyId>

Картинка:

<picture>http://best.seller.ru/img/model_12345.jpg</picture>

Обязательные поля

image

TFK70 commented 2 years ago

@TorinAsakura напоминалка про использование AQSI как точку входа

TFK70 commented 1 year ago

@TFK70

Изменения на стороне акси происходят редко, так что проводить синхронизацию достаточно раз в неделю (cron)

Поподробнее, как реализовать?

Сначала почитай про cron, потом береш это, выставляешь джоб на "раз в неделю" (0 0 * * 0) и всё, твой кусок кода исполняется раз в неделю

TFK70 commented 1 year ago

@carminio итоговый файл нужно выгружать в бакет

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

Для работы с бакетом используй либу aws-sdk, вот пример инициализации:

const s3 = new AWS.S3({
      endpoint: process.env.FILES_STORAGE_HOST,
      region: process.env.FILES_STORAGE_REGION,
      accessKeyId: process.env.YC_SA_KEY_ID,
      secretAccessKey: process.env.YC_SA_SECRET_KEY,
    })

Все эти энв переменные я тебе и предоставлю

В конечном итоге через этот инстанс s3 тебе нужно будет просто выгружать файл

TorinAsakura commented 5 months ago

Джоба работала, всё было в порядке, мы с тобой уже проводили анализ пода в котором она запущена, там что-то с окружением было

Nelfimov commented 5 months ago

@TorinAsakura файл генерируется успешно, заливается в бакет.

Необходимо вручную https://yandex.ru/support/business-priority/manage/price-list.html#price-list__yml-file либо через API (если есть, тут нет - https://yandex.ru/dev/business-api/doc/ref/index.html) загрузить новые данные.

TorinAsakura commented 5 months ago

@TorinAsakura файл генерируется успешно, заливается в бакет.

Необходимо вручную https://yandex.ru/support/business-priority/manage/price-list.html#price-list__yml-file либо через API (если есть, тут нет - https://yandex.ru/dev/business-api/doc/ref/index.html) загрузить новые данные.

Снимок экрана 2024-05-22 в 14 05 31 - можем паблить yml-фид

Nelfimov commented 5 months ago

тогда можно создавать дополнительно отдельный файл, напр. prices-latest, его выкладывать в CDN и залить ссылку на него в фид.

ок?

TorinAsakura commented 5 months ago

тогда можно создавать дополнительно отдельный файл, напр. prices-latest, его выкладывать в CDN и залить ссылку на него в фид.

ок?

именно так и нужно делать, правда не знаю насколько оправдано брать целый CDN под один фид, если это будет не дорого/бесплатно - ок, если же CDN будет потреблять больше условных 100₽/месяц - значит надо выгружать это текущий хостинг через экшен или настроить ACL для текущего бакета чтобы прайс был публичным

Nelfimov commented 5 months ago

Открыл доступ к бакету через ACL - сделать публичным один файл не вышло.

Файл будет перезаписываться каждую неделю - поставил напоминание через неделю на проверку.

https://storage.yandexcloud.net/shdvor/prices-latest.xml

TorinAsakura commented 5 months ago

Открыл доступ к бакету через ACL - сделать публичным один файл не вышло.

Файл будет перезаписываться каждую неделю - поставил напоминание через неделю на проверку.

https://storage.yandexcloud.net/shdvor/prices-latest.xml

Проверю в 01:17 по МСК

Nelfimov commented 4 months ago

Файл будет перезаписываться каждую неделю - поставил напоминание через неделю на проверку.

https://storage.yandexcloud.net/shdvor/prices-latest.xml

Файл перезаписался - интеграция с яндекс бизнесом идет успешно. Следующий раз надо будет перепроверить когда обновим цены в акси.

Таску закрываю.