Задача
Продавец торговал на двух маркетплейсах и в своём Telegram-боте, склад при этом был один - коробки на одном стеллаже.
Остатки правили руками, каждую площадку по отдельности, обычно вечером после отгрузок.
За день одна и та же позиция успевала уйти в двух местах, и приходил оверсел - заказ на товар, которого физически уже нет.
Дальше отмена, просадка рейтинга продавца и разбирательство с покупателем.
Задача стояла свести площадки в одно окно и убрать ручную сверку остатков.
Что сделал
Один товар - одна карточка на своей стороне, к ней привязаны артикулы всех площадок, где он продаётся.
Любое движение остатка ставит задачу в очередь, и она разъезжается по площадкам через их API.
Заказы стягиваются по расписанию в общий список, остаток резервируется в момент появления заказа, до сборки.
Упавшие запросы повторяются с нарастающей паузой, очередь держит ограничение по скорости, чтобы не упереться в лимит площадки.
Площадки вынесены в адаптеры с общим интерфейсом, то-есть подключение третьей это один новый класс поверх готовой синхронизации.
Результат
Оверселлы почти прекратились - после продажи в своём боте остаток уходит на площадки сразу, после продажи на площадке в ближайший опрос заказов.
Сборка идёт по одному списку, площадка у каждого заказа подписана, ходить по кабинетам больше не нужно.
Вечерняя сверка остатков ушла целиком, это вернуло продавцу примерно час в день.