Флоу и эндпоинты (выверено по /client/swagger-json)
Поток: ① Филиалы → ② Меню → ③ Корзина+оформление (один экран). Способ получения — инлайн (переключатель в меню + блок «Оформление» в корзине), отдельного экрана нет. Ветка Посадка → Бронь стола.
① Филиалы поблизости — GET /branches/nearby?lat&lng&radius&limit → {id,name,address{formattedAddress,latLon},distanceMeters,rating,ratingCount}. Тап по филиалу → меню.
② Меню — GET /branches/{id}/categories + GET /catalog?branchId&categoryId → {id,name,description,price,images,available,specifications}; комбо в combos. Sticky-переключатель режима сверху (способ получения, merge V4-чипы).
③ Корзина + оформление (один экран) — товары ведут, ниже блок «Оформление»: способ получения (merge V2-контекст + V4-чипы), комментарий, промокод, разбивка. Заказ: POST /orders (CreateClientOrderRequest): orderCatalogItems[], orderCombos[], clientComment, scheduleTime + поля режима ниже. Доставка → POST /orders/delivery-price {branchId,latLon} для fee/ETA.
Ветка Посадка · Бронь стола — GET /branches/{id}/resources → zones[].resources[]{label,type,capacity,x,y,width,height,rotation,shape,status}. План зала строится из x/y/width/height/shape; цвет по status (available / reserved / occupied).
Как режим маппится в POST /orders
🛵 Доставка → передаём clientAddress (CreateClientOrderAddress: latLon, formattedAddress, apartmentNumber, entrance, floor, codeIntercom…).
🍽 Посадка → передаём resourceId (выбранный стол) + personCount + scheduleTime. Отдельного /booking нет — бронь = заказ с этими полями.
🛍 Самовывоз → ни адреса, ни стола; точка выдачи = адрес филиала.
⚠️ Не подкреплено API (нужен бэк либо убрать из UI)
/branches/nearby не отдаёт фото-обложку , кухню , часы работы / открыто-закрыто , бейджи режимов (🛍/🍽/🛵). На макете показаны как плейсхолдеры.
ETA/сумма «Готово через ~20 мин», «~35 мин», сервисный сбор — уточнить источник (delivery-price даёт доставку; pickup ETA и сервисный сбор?).
Согласуем — дальше верстаю на React: Branches.tsx (Leaflet), FulfillmentSelector.tsx, Restaurant.tsx (меню+корзина), Checkout.tsx, Booking.tsx (план зала).