Прогноз спроса
Повар каждое утро отвечает на один и тот же вопрос: сколько чего заготовить. Закупщик — на соседний: сколько чего заказать. Обычно оба отвечают по памяти.
Откройте Админ-панель → Склад → вкладка «Прогноз» (admin.cenaly.ge/inventory). Вкладка берёт историю продаж и превращает её в три конкретных артефакта. Порядок на экране — по срочности: сверху то, что рискует закончиться до конца дня, ниже — план заготовок, ещё ниже — черновик заказа поставщику. Если рисковых позиций нет, верхнего блока не будет вовсе. В самом низу, свёрнутой справкой, лежит таблица «Прогноз по блюдам» — на неё можно не смотреть, пока не захотелось проверить цифру.
Как считается прогноз#
Ровно две статистики, обе объяснимые повару вслух:
- Сколько этого блюда обычно продаётся в этот день недели. Окно истории — 8 недель (56 дней). Точечная оценка — медиана, а не среднее: восемь вторников, один из которых был днём рождения на 40 человек, средним говорят «готовь на 40» каждую неделю, а медиана этот вторник игнорирует. В справочной таблице «Прогноз по блюдам» рядом с числом показан честный разброс наблюдений (минимум–максимум), сколько наблюдений в выборке и пик — часть суток с наибольшей долей продаж. В шапке вкладки написано основание расчёта: «медиана того же дня недели за 56 дней · N рабочих дней истории».
- Как этот спрос распределён внутри дня — доли по частям суток: утро (6–11), обед (11–16), вечер (16–23), ночь (23–6). Границы одинаковы для всех заведений, а сам профиль считается по всем дням истории сразу, не отдельно по вторникам.
Что считается наблюдением, тоже решено осознанно: отменённые заказы в историю не идут; сегодняшний незакрытый день в выборку не попадает; дни до первой продажи блюда не считаются нулями (новинка не получает «ноль продаж» за те недели, когда её ещё не было в меню); «день без продаж» отличается от «дня, когда заведение было закрыто». Сутки считаются в часовом поясе локации. В расчёт берутся топ-500 позиций локации по обороту — длинный хвост меню отсекается.
Меньше трёх наблюдений одного дня недели — числа не будет. В таблице вместо цифры встанет прочерк, а в колонке наблюдений — пометка «мало». В план заготовок и в закупку такое блюдо не попадёт вовсе. Прогноз, которому нельзя верить, хуже отсутствующего: по нему готовят и закупают.
Переключатель вверху выбирает, на какой день строить прогноз — сегодня или завтра.
План заготовок#
Прогноз по блюдам разворачивается по тех-картам в потребность в товарах и полуфабрикатах. Разворот идёт по текущим тех-картам, на момент открытия вкладки — если шеф поменял рецептуру утром, план это учтёт (правку, сделанную в соседнем окне, подхватит обновление страницы).
Вложенные полуфабрикаты разворачиваются вглубь: если соус варят из бульона, а бульон тоже полуфабрикат, в план попадут оба — иначе повару велели бы сварить соус, не сказав, что бульона под него нет. Глубина вложенности ограничена пятью уровнями (и защищена от рецептур, ссылающихся друг на друга по кругу): всё, что глубже, считается сырьём и уходит в закупку, а не в план заготовок.
Таблица плана:
| Колонка | Что означает |
|---|---|
| Название товара | полуфабрикат, который нужно выпустить |
| Остаток | сколько уже есть |
| Нужно | валовая потребность по прогнозу за день |
| Выпустить | нехватка — сколько реально варить/резать |
| К | час, к которому остатка перестаёт хватать |
Срок — это не «начало смены». Если соуса хватает на утро, но не на обед, повару надо успеть к 11:00, а не к 6:00. Час округляется до ближайшей границы части суток (6:00, 11:00, 16:00, 23:00), а у вложенных полуфабрикатов срока нет вовсе — там стоит прочерк: их варят «до» того, что из них делают. Строки отсортированы по сроку: раньше дедлайн — выше в списке. Если заготавливать нечего, вкладка так и пишет: остатков хватает на прогноз.
Остаток полуфабриката тратится один раз: если один и тот же бульон входит и в соус, и в суп, наивный расчёт применил бы остаток дважды и закупка недобрала бы сырья.
Перед отправкой план можно поправить. В колонке «Выпустить» впишите своё количество — например, шеф знает про банкет, которого нет в истории продаж. Ноль убирает строку. Поправка действует для выбранной даты и склада и сбрасывается при их смене; она идёт и в печать, и в доску смены, и в «Оформить выпуск».
Кнопка «Печать» открывает бланк задания для кухни: полуфабрикат, сколько выпустить, «Состав на партию» (тех-карта полуфабриката, умноженная на количество) и пустая колонка «Готово» для отметок. Если окно не открылось, браузер заблокировал всплывающие окна — разрешите их для этого сайта.
Кнопка «Оформить выпуск» в строке открывает операцию «Выпуск полуфабриката» с количеством из плана: выпуск списывает сырьё по тех-карте полуфабриката и прибавляет его остаток.
Кнопка «В доску смены» превращает план в чек-лист задач — см. Доска задач смены. Создаётся одна общая задача «План заготовок — <дата>», а каждая заготовка становится её подзадачей с количеством и часом прямо в заголовке («Соус демиглас — 16 шт к 11:00»); закрыть общую задачу можно только когда закрыты все подзадачи. Повторное нажатие не плодит дубли: если план на эту дату уже стоит на доске, кнопка так и скажет.
Блюда без тех-карты в план не идут и перечисляются отдельным предупреждением (до 20 названий): по ним прогноз ничего сказать не может, и это лучше сказать вслух, чем сделать вид, что заказ полный.
Заготовка на дату по заказам#
Задача: на завтра уже оформлены заказы ко времени — самовывоз к 14:00, доставка к обеду, банкет «подать к 19:00» — и кухне нужно заранее знать, что заготовить каждому цеху, какие у гостей просьбы и что подать на какой стол. Прогноз здесь не помощник: он считает обычный день, а эти заказы уже известны точно.
- Откройте «Склад» → «Прогноз» — блок «📅 Заготовка на дату» стоит под планом заготовок. Он работает и без прогноза: у новой точки и там, где прогноза нет, вкладка показывает только его.
- Выберите дату (по умолчанию — завтра).
- Проверьте три раздела блока и нажмите «🖨 Печать» — всё уйдёт одним листом.
Что входит в расчёт. Заказы точки, у которых время подачи (к 14:00) приходится на выбранный день: самовывоз и доставка ко
времени, заказ стола «подать к …» с кассы. Отменённые, закрытые и брошенные корзины витрины не входят; оформленный гостем, но ещё
не принятый предзаказ входит — кухня планирует и его. Заказы «как можно скорее» без времени здесь не видны.
По станциям. Блюда раскладываются по станциям экрана кухни — так же, как их видит кухня: станция берёт категории меню, отмеченные в её пресете (экран кухни → ⚙ → «Пресеты устройств», см. Экран кухни). Категорию без станции забирает запасная станция «прочее», а если её нет — блюда собираются в строке «Без станции» (это подсказка донастроить пресеты). Пресет «все цеха» без категорий — экран экспо, на него заготовка не кладётся. У каждой станции — список блюд с количеством и состав по тех-картам: строки тех-карт × порции. Полуфабрикат помечен «ПФ» — станция берёт его готовым, его надо заготовить заранее.
Комбо разворачивается в свои блюда (бургер — на горячий цех, салат — на холодный), выбор гостя в слотах комбо — тоже, добавки считаются по своим тех-картам. Строка тех-карты «только навынос» (коробка, контейнер) идёт только в заказы самовывоза и доставки. Блюда без тех-карты перечислены предупреждением: по ним заготовка не посчитана.
Сырьё всего. Итог по всем станциям, где полуфабрикаты разложены до сырья по их составу: 3 котлеты по 150 г говядины — это 0,45 кг говядины. Количество валовое — остатки склада не вычитаются (что докупить с учётом остатков, покажет черновик закупки ниже или заказ поставщику).
Заметки. Комментарии к позициям («без лука») и к заказу целиком — списком по времени, с номером заказа и столом.
По столам. Заказы, сгруппированные по месту: столы зала (по номеру), затем самовывоз и доставка. У каждого заказа — время подачи, гость, приборы («Приборы: 2» / «Без приборов»), комментарий, блюда (члены комбо — со стрелкой ↳) и просьбы к блюдам. Это лист подготовки банкета: что и к какому часу подать на какой стол.
Пример. На завтра 14:00 два комбо «Бургер + салат + морс» (одно навынос, одно за стол 5) и бургер за тот же стол с пометкой «без лука». Блок покажет: горячий цех — 3 бургера (3 котлеты, 3 булочки, лук), холодный цех — 2 салата, морс — «Без станции» (без тех-карты), коробка — одна, только для навынос; в заметках — «без лука» к бургеру стола 5; в листе по столам — стол 5 с двумя заказами и самовывоз.
Расчёт идёт по тех-картам, действующим сейчас: если на будущую дату запланирована новая версия тех-карты или порция на розлив другого объёма, количество будет по текущему составу.
Лист разморозки#
Задача: с вечера знать, что достать из морозилки, сколько и во сколько, чтобы к началу кухни всё было готово.
- В карточке замороженного товара («Условия хранения» — «Морозильник (−18 °C)») заполните «Разморозка» — сколько часов он оттаивает, например лопатка — 16 ч.
- На вкладке «Прогноз» выберите день (например, завтра) — появится блок «🧊 Лист разморозки».
- Укажите «Кухня начинает в» (по умолчанию 10:00).
Результат: строка на товар — сколько разморозить (потребность дня по прогнозу) и когда начать. Пример: лопатка 4 кг, 16 ч, кухня завтра с 10:00 → «начать сегодня в 18:00». Если на складе меньше потребности, строка помечена «на складе только …». Кнопка «Печать» даёт лист с галочкой «Сделано».
Черновик заказа поставщику#
Ниже плана — черновик закупки на выбранный горизонт покрытия (поле «Покрытие, дней»: обычно срок поставки плюс запас; по умолчанию 3 дня, допустимо от 1 до 30).
Для каждого товара считаются две величины, и берётся бо́льшая:
- потребность по прогнозу за горизонт минус текущий остаток;
- добор до целевого остатка (а если он у товара не задан — до точки заказа) — обычная складская логика.
Почему бо́льшая, а не одна вместо другой: страховой запас не знает про завтрашнюю пятницу с двойной посадкой; а прогноз не знает про товары, которые вообще не участвуют в тех-картах (упаковка, расходники) — у них складские нормативы единственный ориентир. Строки, попавшие в список по второму правилу, помечены «по точке заказа». Обратите внимание: правило смотрит на целевой остаток, поэтому в черновик попадёт и товар, который ещё выше точки заказа, но ниже целевого — вкладка «Нужно заказать» такой товар пока не показывает.
По прогнозу закупаются только конечные ингредиенты: полуфабрикаты в заказ поставщику по прогнозу не идут (их выпускают по плану заготовок) — они могут попасть в черновик разве что по складскому нормативу.
Количество округляется вверх до кратности упаковки, если она задана у товара. Строки сгруппированы по поставщикам (товары без назначенного поставщика — отдельной группой), и кнопка создаёт свой заказ на каждого поставщика — дальше это обычные закупки из раздела Склад.
«Закончится к 19:00»#
Самый верхний блок вкладки — риск исчерпания до конца дня: то, что горит прямо сейчас. Он сравнивает текущий остаток с ожидаемым расходом за оставшиеся часы, посчитанным по профилю частей суток, и называет час, к которому остаток обнулится. Если час определить не удаётся, строка честно говорит «не хватит до конца дня», без выдуманного времени.
Блок считается только для сегодня: при переключении на «завтра» он исчезает — риска «закончится к 19:00» у завтрашнего дня не бывает.
Поправка на сегодняшний темп: если к обеду уже израсходовали больше обычного, ожидание на остаток дня пропорционально поднимается, и в строке появляется пометка вроде «темп дня ×1.4». Темп считается по фактическим продажам (списания, порча и питание персонала в него не идут) и измеряется для первых десятка с небольшим самых рискованных строк — остальные считаются по обычному профилю. Коэффициент зажат в диапазоне ×0.5…×2 — поправка на «сегодня людно» нужна, а предсказание по одному чеку нет. Если темп измерить не из чего вообще, вкладка честно скажет, что взят обычный профиль дня недели.
Новая точка: посев прогноза от похожей#
У только что открытой точки истории нет, и прогноз ей считать не из чего. Чтобы план заготовок и закупка работали с первого дня, возьмите прогноз похожей точки.
- Откройте Склад → «Прогноз» и выберите склад новой точки.
- Разверните блок «🌱 Посев прогноза от похожей точки» (у точки без истории он уже открыт).
- В поле «Точка-донор» выберите похожую точку — с тем же меню и похожим потоком гостей.
- В поле «Коэффициент» укажите, насколько спрос новой точки отличается от донора: 1 — такой же, 0,7 — гостей на 30 % меньше (зал меньше, улица тише), 1,2 — на 20 % больше.
- Нажмите «Сохранить». Прогноз, план заготовок и черновик закупки сразу посчитаются по донору.
Например, донор продаёт по понедельникам 20 порций борща, коэффициент 0,7 — новая точка увидит прогноз 14 порций. Числа, взятые у донора, помечены «🌱 посев».
Посев гаснет сам: как только по блюду в этот день недели у новой точки наберётся три своих наблюдения, используется её собственная медиана. Донор участвует только в прогнозе — в отчёты о продажах, аналитику и точность прогноза его продажи не попадают. Снять посев — «Снять посев» в том же блоке.
Точность прогноза#
Блок «🎯 Точность прогноза» внизу вкладки показывает, насколько прогноз ошибался за последние 4 недели. В заголовке — отклонение за 4 недели и за последнюю неделю, например «отклонение 18 % за 4 недели · 15 % за неделю».
Внутри две таблицы:
- «Прошлая неделя: прогноз / факт / отклонение» — по каждому рабочему дню: сумма прогноза по блюдам, сколько продали тех же блюд, отклонение и сколько продано всего (с новинками).
- «Самые большие промахи недели» — до 10 блюд, по которым прогноз ошибся сильнее всего.
Прогноз дня считается так, как он выглядел утром этого дня: медиана тех же дней недели ДО этой даты. Отклонение — сумма промахов по блюдам, делённая на продажи (WAPE): «ошиблись на 18 % того, что продали». Промах по каждому блюду считается отдельно, поэтому −10 супов и +10 салатов не дают «идеальный» день. Если прогноз в среднем систематически завышает или занижает (больше чем на 5 %), под заголовком будет об этом строка — например «В среднем прогноз завышает на 12 % — заготовки остаются».
Например, во вторник прогноз — 40 порций по всем блюдам, продали 46, а промахи по блюдам дали в сумме 9 порций: отклонение дня — 9 / 46 ≈ 20 %. Блюда без прогноза (новинки с историей меньше трёх дней недели) промахом не считаются.
Прогноз выручки и гостей на неделю#
Блок «📈 Прогноз выручки и гостей на неделю» на той же вкладке отвечает на вопрос управляющего: какой будет неделя — сколько выручки, чеков и гостей ждать по каждому дню. Кнопками «← Назад» и «Вперёд →» листаются недели, «Эта неделя» возвращает к текущей.
По каждому дню видны:
- выручка — и под ней разбивка по частям суток (утро / обед / вечер / ночь); если события или поправка изменили число, ниже серым — «база …», то есть обычный день;
- чеки, гости и средний чек;
- события этого дня с их влиянием;
- поправка руководителя, если она есть.
Внизу — итог за неделю. Это оценка, а не план: блок так и подписан.
Как считается. База — та же медиана того же дня недели за 8 недель, что и у блюд, только по выручке, числу чеков и гостей точки. При истории меньше трёх таких же дней числа нет — вместо него «мало истории (2 из 3)». Гости — число гостей из кассы, а у заказа без него (навынос, доставка) — один гость. Разбивка по частям суток берётся из того, как этот день недели обычно распределяется по часам.
Прогноз дня = база × события × поправка.
События и акции#
Праздник, матч по соседству, акция, открытие конкурента рядом — всё это заводится в блоке «📅 События и акции» кнопкой «+ Событие»: название, вид, даты (прошлые и будущие), «Повторяется каждый год» и к каким точкам относится — к этой или ко всем.
Влияние события считается по прошлым вхождениям. Для каждой прошлой даты события берётся факт выручки и делится на «обычный день» — медиану того же дня недели за 8 недель до этой даты. Медиана таких отношений и есть влияние. Например, 8 марта прошлого года было +40 % к обычному воскресенью — значит, прогноз этого 8 марта будет умножен на 1,4. Рядом с событием видно «по прошлым: +40 % (1)» — в скобках число вхождений, по которым посчитано: одно вхождение — это ещё не закономерность.
Если прошлых вхождений нет (первый матч, новая акция), укажите свою оценку в процентах — «+30» или «−20». Галочка «Брать мою оценку, даже если история есть» нужна, когда прошлый раз был нетипичным. Без истории и без оценки событие на прогноз не влияет и подписано «влияние пока не известно».
Кнопка «Добавить праздники» заводит ежегодные праздники, которые чаще всего двигают выручку (на русском интерфейсе — 1 и 7 января, 14 и 23 февраля, 8 марта, 1 и 9 мая, 12 июня, 4 ноября, 31 декабря; на других языках интерфейса — 1 января, 14 февраля, 8 марта, 24, 25 и 31 декабря). Лишние удаляются в окне события.
Поправка руководителя#
Управляющий знает то, чего нет в истории: заказан банкет, на улице ремонт. Ссылка «Поправить» в строке дня открывает окно: ± процент к прогнозу или выручка дня целиком (чеки и гости пересчитываются в той же пропорции), и причина. В окне видно, каким был прогноз без поправки. «Снять поправку» возвращает расчётный прогноз.
Каждая поправка, событие и изменение производительности должностей попадает в «Журнал изменений прогноза» внизу блока: когда, кто, что и почему.
Тот же прогноз по часам используется в графике смен: раздел «Персонал → График» показывает, сколько людей нужно в каждый час (см. График смен).
Что нужно, чтобы прогноз появился#
| Нужно | Зачем | Без этого |
|---|---|---|
| История продаж | посчитать медиану по дню недели | «Пока мало истории заказов, чтобы прогнозировать спрос» |
| ≥ 3 одинаковых дня недели в истории | считать выборкой | блюдо в таблице помечено «мало» и в планы не идёт |
| Тех-карты блюд | развернуть прогноз в товары | блюдо попадёт в предупреждение «без тех-карты» |
| Актуальные остатки | посчитать нехватку и риск | вкладка не покажет ничего, пока остатки не загрузятся |
Агрегат истории пересчитывается на сервере примерно раз в полчаса (и только для аккаунтов, которые сейчас работают); разворот тех-карт и вычет остатков считаются в момент открытия вкладки, по текущим данным.
Связанные разделы#
- Склад — тех-карты, остатки, приход и закупки
- Доска задач смены — куда уезжает план заготовок
- Меню-инжиниринг — что делать с блюдом, когда видно и спрос, и маржу
- Аналитика — продажи по блюдам и периодам
Частые вопросы#
Почему у половины блюд стоит пометка «мало»?#
Потому что по этим блюдам в истории меньше трёх продаж в этот день недели — например, блюдо появилось в меню две недели назад. Число появится само, когда наблюдений станет достаточно; до этого блюдо не участвует ни в плане заготовок, ни в закупке.
Почему используется медиана, а не среднее?#
Медиана устойчива к выбросам. Один банкет на 40 человек сдвигает среднее так, что заведение неделями готовит лишнее. Среднее в интерфейсе не показывается вовсе — только медиана, разброс и число наблюдений.
Как понять, можно ли доверять прогнозу?#
Откройте блок «🎯 Точность прогноза»: там отклонение за 4 недели и таблица прогноз/факт по дням прошлой недели. Отклонение 15–25 % по блюдам для небольшого заведения — нормально; если блок пишет, что прогноз систематически завышает, уменьшите заготовки вручную.
Прогноз учитывает погоду, праздники, футбол?#
Прогноз блюд — нет: он знает только день недели и время суток. Прогноз выручки и гостей на неделю учитывает события, которые вы завели в блоке «📅 События и акции»: влияние считается по их прошлым вхождениям или берётся ваша оценка. Погоду не учитывает ни тот, ни другой.
Можно ли строить прогноз на неделю вперёд?#
Выручку, чеки и гостей — да: блок «📈 Прогноз выручки и гостей на неделю» листается по неделям. Прогноз блюд и план заготовок — на сегодня и завтра; для закупки горизонт задаётся полем «Покрытие, дней»: прогноз одного дня умножается на него.
Черновик закупки сразу отправляет заказ поставщику?#
Нет. Это именно черновик: лишние строки вы снимаете галочкой и только затем нажимаете создание — получаются обычные черновики закупок раздела «Склад», по одному на поставщика. Количества правятся уже в созданном заказе, там же, где и обычно.