Skip to main content

Аналитика сборки по будущим дням

Пользователю предоставляется следующая информация:

  • Временной интервал, за который представлены данные;
  • Покрываемое количество заказов для указанного интервала;
  • Прогнозное количество заказов за интервал;
  • Итоговая оценка прогноза.

image.png

Прогнозное значение извлекается из таблицы time_series, из записей с типом 7, виз полея value.

image.png

Фактическое количество заказов которые могут покрыть сотрудники выходящие на смену, рассчитывается в приложении через настройку dayPlaceTransform на основе данных о запланированных сотрудниках на час и их скорости сборки. При изменении числа сотрудников данные обновляются динамически.
Эта настройка формирует массив $hours, содержащий данные для отображения в интерфейсе. Массив состоит из объектов для каждого часа суток (0–23), включающих поля:

  • hour — текущий час;
  • stat — прогнозное или фактическое количество заказов;
  • plan — покрываемое количество заказов, рассчитанное на основе сотрудников и скорости сборки;
  • delta — отклонение между прогнозом и фактическим значением.

Код, формирующий массив представлен ниже.

$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
    };
);

Так же, в ряду 163 хранятся данные, вычисляемые в базе данных по аналогичной схеме один раз в сутки и используемые для выгрузки.

image.png