Публичное меню
готовоКатегории и карточки для канала website без авторизации.
GET /sales/public/menuResto
Сайт, панель, касса и кухня работают с одним API. Здесь собрано то, что можно показать и проверить: от публичного меню и оплаты до склада, техкарт и отчётов.
Клиент собирает заказ, сервер пересчитывает состав, скидку и доставку.
Одинаковые блюда с разными заменами и добавками — отдельные строки.
Тип заказа влияет на адрес, стоимость и кухонный маршрут.
Код проверяется на сервере: лимиты, период, дни и минимальная сумма.
Повторная отправка формы не создаёт второй заказ.
POST /orderСсылка на оплату банка, возврат и повторная оплата неоплаченного заказа.
POST /order/:id/payЗоны, стоимость и ограничения считает бэкенд; сайт только показывает результат.
Полигоны и радиусы, иерархия и приоритеты зон.
GET /delivery/public/quoteЦена доставки, минимальная сумма заказа и бесплатная доставка от суммы.
Оценка времени из настроек зоны показывается до оплаты.
Сохранённые адреса с подъездом, этажом и квартирой.
/delivery/addressesКоординаты адреса определяются на сервере, если клиент их не передал.
Статусы, оплата и отмена — в личном кабинете клиента.
История заказов с суммой, статусом и статусом оплаты.
GET /order/myСостав, модификаторы, скидка, доставка и адрес в одном экране.
new → accepted → cooking → ready → served → closed, отдельно canceled.
Клиент отменяет новый или принятый заказ, списание откатывается.
POST /order/:id/cancelЗаказ вне часов работы создаётся на ближайшее открытие точки.
Вход по телефону и коду, короткая сессия и продление без потери корзины.
Код подтверждения приходит по SMS; в dev доступен тестовый код.
Access-токен живёт 15 минут, сессию продлевает refresh-токен.
Телефон и роль клиента в шапке сайта.
GET /id/meСоздание, изменение, удаление и адрес по умолчанию.
Внутренний контур ресторана: каталог, производство, склад, продажи и отчёты.
Реквизиты, расписание, исключения и адреса точек.
Категории, карточки, размеры, цены, замены и добавки.
Продукты и заготовки, базовая единица, эквиваленты и лимиты.
Состав, потери, выход, себестоимость и выпуск заготовок.
Остатки, партии, сроки годности, приходные накладные и поставщики.
Журнал append-only и перенос себестоимости между складами.
Пересчёт, недостача, излишек и корректирующие движения.
Количество и цена за базовую единицу, история цен и сравнение поставщиков.
Процент, фикс, категория и бесплатная доставка с лимитами.
Продажи по дням, food cost по позициям и минимальные остатки.
Админ, менеджер, кассир и повар; доступ только к своей точке.
FEFO/FIFO/средневзвешенная себестоимость и политика просрочки.
Очередь, принятие, смена статуса и ручное списание.
Геометрия, условия и приоритеты в панели.
Бэкенд для смен, оплаты на месте и заказов без аккаунта уже готов.
Открытие, X-отчёт, закрытие и расхождение по наличным.
/cash/shiftsНаличные или карта только в открытой смене.
POST /order/:id/pay-manualКлиент без аккаунта, стол, гости и промокод.
POST /order/staffKDS на планшетах: очередь и переходы статусов.
Рабочее место кассира и локальный агент кассы.
Чеки и фискальный адаптер — после выбора метода.
Общие правила, на которых держатся все четыре фронтенда.
Клиент не видит служебные ручки, сотрудник — только свою точку.
Bearer access, refresh, scope и матрица ролей.
Заказы, платежи и накладные защищены ключом идемпотентности.
Единый TxRunner: заказ, списание и платёж не расходятся.
RS256-подпись провайдера, запрет неподписанных в production.
int64, без float; количества — в базовой единице.
go build, vet, test и vue-tsc на каждом шаге.
Healthz, единый формат ошибок и коды для фронтенда.
GET /healthzМаршруты и типы генерируются из кода бэкенда.
Отдельные образы для API и каждого фронтенда.
Готовые экраны живут на этом сайте: меню, корзина, оформление, заказы, адреса. Панель управления — отдельное приложение с каталогом, складом и отчётами. Касса и кухня подключаются к тем же ручкам.