Skip to content
ВозможностиТарифыПартнёрамБлогСправкаО насКонтакты
НачатьВойти
Назад к Блогу
guides2026-07-216 мин чтения

Один склад, три маркетплейса: интеграция Getir + Trendyol GO + Yemeksepeti

Сеть döner с 4 филиалами в Измире работает на трёх турецких платформах из единого меню. Master record thMenu, webhook fan-out и атомарный UPDATE D1.

th

thMenu Team

thmenu.com

Сеть döner с 4 филиалами в Измире одновременно подключена к Getir Yemek, Trendyol GO и Yemeksepeti. Вместо трёх отдельных меню используется thMenu как master record; списания со склада идут из одного места, а webhook fan-out обновляет три платформы.

Архитектура master record

Колонка products.stock_quantity в D1_MENU — единственный канонический источник. При подтверждении заказа: UPDATE products SET stock_quantity = stock_quantity - 1 WHERE id = ? AND stock_quantity > 0. 0 затронутых строк = нет на складе.

В случае успеха событие уходит в Cloudflare Queue. Три воркера параллельно патчат API. Средняя задержка fan-out 340 мс.

Разрешение конфликтов

Сценарий: 5 лахмаджунов на складе. В одну секунду приходит 5 заказов с трёх платформ. Атомарный UPDATE сериализует — последний находит 0 и отклоняется. Финальное состояние 0, три "out of stock".

В D1 нет явных row lock, но WHERE stock > 0 выполняет ту же роль. Ноль over-sell за 6 месяцев.

Сверка drift

Webhook Yemeksepeti с задержкой 30 с, Trendyol мгновенный, Getir опрашивает каждые 5 с. Часовой cron сверяет три платформы с master.

  • Yemeksepeti 5, Getir 3: master на 5, PATCH Getir
  • Master 0, платформа 2: немедленный PATCH 0
  • Drift > 3: alert Slack

FAQ

Нужно ли вручную заводить меню на каждой платформе? Нет, master record + fan-out автоматизируют всё.

Кто получает приоритет в race? FIFO по timestamp; проигравший получает 422.

Cron автоматический? Да, ежечасно с alert Slack при большом drift.

Было полезно? Поделитесь.