-
Andrey Azeev authored
Подготовка обработки нового типа сообщения в KaspiConsumer: обновление цен офферов через новый Kaspi API. Пока — тип, схема и заглушка-хендлер; реальный функционал отдельным шагом. - RabbitQueueType.UPDATE_PRICES = "update.prices" (+ не конфликтует с занятым scraper'ом update.offers). - Схема MessageUpdatePrices: prices list[UpdatePriceItem{vendorCode, price>=0}] 1..100, uuid (для резолва account → extensions.token), trace_id. - KaspiConsumer.handle_message: ветка UPDATE_PRICES → update_prices(mongo). - services/kaspi_offers.update_prices — no-op заглушка (лог приёма + ack, не роняет сообщение). TODO: резолв account по uuid → KaspiApiNew.update_offers. - Тесты: 15 (схема max100/uuid/price>=0/trace_id, роутинг консюмера, no-op контракт). Полный прогон: 747 passed. CHANGELOG: запись в [Unreleased] → Added.13968368Andrey Azeev authoredПодготовка обработки нового типа сообщения в KaspiConsumer: обновление цен офферов через новый Kaspi API. Пока — тип, схема и заглушка-хендлер; реальный функционал отдельным шагом. - RabbitQueueType.UPDATE_PRICES = "update.prices" (+ не конфликтует с занятым scraper'ом update.offers). - Схема MessageUpdatePrices: prices list[UpdatePriceItem{vendorCode, price>=0}] 1..100, uuid (для резолва account → extensions.token), trace_id. - KaspiConsumer.handle_message: ветка UPDATE_PRICES → update_prices(mongo). - services/kaspi_offers.update_prices — no-op заглушка (лог приёма + ack, не роняет сообщение). TODO: резолв account по uuid → KaspiApiNew.update_offers. - Тесты: 15 (схема max100/uuid/price>=0/trace_id, роутинг консюмера, no-op контракт). Полный прогон: 747 passed. CHANGELOG: запись в [Unreleased] → Added.
Loading