Content text Тест-задание "Ограничение по мин.сумме" Автомакон
Написать алгоритм определения загрузки магазина Считаем, что данная постановка пришла от заказчика в таком виде. В случае необходимости задайте уточняющие вопросы и предложите максимально эффективное решение данной задачи. Описание: Интернет магазин продает продукты питания и покупатели в режиме онлайн размещают свои заказы в этом магазине. Покупатели делают заказы в приложении. Магазин обещает покупателю - собрать и доставить заказ за 2 часа. Загрузка магазина - это нагрузка на сборщиков, которые собирают заказанный покупателями товар в магазине. При росте загрузки магазина вероятность, того что мы успеем собрать заказ уменьшается. Магазин решил, что в моменты большой загрузки он может ограничить поступление новых заказов путем установки размера минимальной суммы заказа. Чем больше загрузка магазина, тем выше ставим планку минимального заказа, тем большее кол-во покупателей откажутся делать заказ и, соотвественно, меньше заказов поступит в магазин. Когда загрузка упадет, магазаин опустит планку минимального заказа. Заказы собираются и доставляются в порядке их поступления. В течение рабочего дня в магазине может быть разное кол-во сборщиков, т.к. поток заказов не равномерный и кассиры по мере необходимости могут подключаться к процессу сборки заказов. Например, утром заказов обычно гораздо больше чем днем. Четким показателеми по которому определяется степень загруженности сборщиков является среднее время сборки заказов. Причиной повышения загруженности могут внешние и внутренние факторы. Внешние, например, пошел дождь и покупатели стали больше заказывать онлайн. Внутренние - что то повлияло на время сборки заказов, например, проблемы с оборудованием. Предлагаемая концепция расчета загрузки магазина: Загрузка магазина измеряется как среднее время сборки заказов за последние Х минут (Х минут - это параметр, вы сами должны определить его значение, если решите, что будете вводить его). Например, если среднее время сборки заказа 30 минут, то это нормальная загрузка магазина, но если заказы в среднем собираются дольше, то это говорит о сильной загруженности магазина и надо начинать влиять на покупателей увеличивая им минимальную сумму заказа. Среднее время сборки рассчитывается как отношение суммарного времени сборки всех актуальных за эти Х минут заказов к их кол-ву. Время сборки каждого заказа считаем от того момента когда этот заказ можно собирать. Если заказ еще не собран, то должен ли он участовать в расчете среднего?
Имеем в качестве исходных данных следующую таблицу: Таблица 2 (Таблица “Заказы”) Номер заказа Дата регистрации заказа магазин Дата, когда можно начинать собирать заказ (Начало доставки) Дата завершения сборки 1 01.02.2020 1:00 А 01.02.2020 10:00 01.02.2020 10:30 2 02.02.2020 1:00 А 02.02.2020 10:00 02.02.2020 10:30 3 03.02.2020 23:00 А 04.02.2020 10:00 04.02.2020 10:30 4 04.02.2020 1:00 А 04.02.2020 10:00 04.02.2020 10:30 5 05.02.2020 1:00 А 05.02.2020 10:00 05.02.2020 10:30 6 06.02.2020 1:00 А 06.02.2020 10:00 06.02.2020 10:30 7 06.02.2020 11:00 А 06.02.2020 11:00 06.02.2020 12:00 8 06.02.2020 11:00 А 06.02.2020 11:00 06.02.2020 11:45 9 06.02.2020 11:00 А 06.02.2020 11:00 06.02.2020 12:10 10 06.02.2020 23:00 А 07.02.2020 10:00 07.02.2020 10:30 11 07.02.2020 1:00 А 07.02.2020 10:00 07.02.2020 11:30 12 07.02.2020 2:00 А 07.02.2020 10:00 07.02.2020 12:00 13 07.02.2020 3:00 А 07.02.2020 10:00 07.02.2020 12:30 14 07.02.2020 11:00 А 07.02.2020 11:00 07.02.2020 13:00 15 07.02.2020 11:00 А 07.02.2020 11:00 07.02.2020 13:30
16 07.02.2020 23:00 А 08.02.2020 10:00 17 07.02.2020 23:00 А 08.02.2020 10:00 18 07.02.2020 23:00 А 08.02.2020 10:00 19 07.02.2020 23:00 А 08.02.2020 10:00 20 07.02.2020 23:00 А 08.02.2020 10:00 Считаем что записи этой таблицы будут в режиме онлайн заполняться\обновляться из другой системы. Например, в 11.20 при поступлении заказа будет занесена запись в эту таблицу, а когда произойдет сборка заказа, то у записи проставляется дата\время сборки заказа. Детали выполнения задания: Придумываем решение нашей задачи и описываем четкими формулами наше решение (критерии отбора заказов для расчета, алгоритм расчета....). Примерный состав формул может быть следующий, но возможно вы придумаете свой подход к решению: 1. Формулы, используемые для расчета загрузки магазина 1. Критерии отбора заказов\данных для каждой из формул Формулы должны иметь примерно такой вид: ● КолвоЗаказов = ...., в расчет попадают заказы, соответствующие критериям: (ДатаЗапроса >= ДатаРегистацииЗаказа ) И .... ● Среднее время = СУММА(....) / КолвоЗаказов ??? В формулах надо оперировать четкими параметрами, например: ● ДатаЗапроса - дата/время на который запрашиваются данные. (может быть передана любая произвольная дата) ● ДатаРегистацииЗаказа -дата регистрации заказа ● ДатаНачалаСборки - дата, когда можно начинать собирать заказ (Начало доставки) ● ДатЗавершенияСборки - дата завершения сборки ● Х - кол-во минут за которые берем данные заказов для расчета среднего