Аналитика сборки по будущим дням
Пользователю предоставляется следующая информация:
- Временной интервал, за который представлены данные;
- Покрываемое количество заказов для указанного интервала (основывается на списке запланированных сборщиков и их индивидуальной скорости работы; механизм расчета описан в статье, пункты 1 и 2);
- Прогнозное количество заказов за интервал (ожидаемое значение, сформированное прогнозной моделью на основе данных, описанных в статье);
- Оценка требуемого количества сборщиков (механизм расчета описан в статье); возможные значения:
- "Норма" (сотрудников достаточно для обработки ожидаемого количества заказов)
- "Избыток" (сотрудников запланировано больше необходимого, возможен простой персонала)
- "Нехватка" (сотрудников недостаточно для успешной обработки заказов).
Прогнозное значение извлекается из таблицы time_series, из записей с типом 7 (обозначающим прогноз по геозонам для сборки заказов). Значение берется из поля value.
Покрываемое количество заказов рассчитывается в приложении через настройку dayPlaceTransform на основе данных о запланированных сотрудниках на час и их скорости сборки. При изменении числа сотрудников данные обновляются автоматически.
После расчета, эта настройка формирует массив $hours, содержащий данные для отображения в интерфейсе. Массив состоит из объектов для каждого часа суток (0–23), включающих поля:
- hour — текущий час;
- stat — прогнозное количество заказов;
- plan — покрываемое количество заказов, рассчитанное на основе сотрудников и скорости сборки;
Код, формирующий массив представлен ниже.
$hours := [0..23].(
$statObj := $lookup($hourStat, $string($));
$stat := $number($inPast ? $statObj.cnt : $statObj.cnt) * $extraNorm;
$plan := $number([$lookup($eventsStat, $string($)).sum_qty, 0][0]);
$delta := $stat
? $inPast
? $round($plan - $stat, 1)
: $round(($stat - $plan) / $speed)
: 0;
$smape := 2 * ($plan - $stat) / ($plan + $stat);
$err := ($abs($delta) <= 3 or $abs($smape) < 0.15)
? 0
: $smape > 0
? 1
: -1;
{
"hour": $,
"stat": $round($stat,1),
"plan": $round($plan,1),
"delta": $delta,
"smape": $smape,
"err": $err
};
);
Так же, в таблице time_series в записях с типом 163 сохраняются данные, вычисляемые в базе данных по аналогичной схеме один раз в сутки и используемые для выгрузки.



No Comments