Аналитика «По сотруднику»: посещения офиса и рабочий график
Четыре из шести блоков вкладки «По сотруднику» построены на одном источнике — расписании сотрудника. Они отвечают на вопросы «как часто человек бывает в офисе», «как у него распределены рабочие дни», «аккуратно ли он заполняет расписание» и «выдерживает ли норму посещения». Эта статья разбирает каждый из четырёх блоков: что показывает полоса, откуда берутся проценты и почему одни и те же дни в разных блоках считаются по-разному.

Общее устройство блока
Пять блоков вкладки из шести собраны одинаково: заголовок, горизонтальная полоса на всю ширину и легенда под ней. Полоса занимает 100 % и делится на цветные сегменты; при наведении показывается подсказка с абсолютными числами. У большинства блоков справа в шапке карточки есть круглая стрелка — она раскрывает календарь, где каждый день периода закрашен цветом своего статуса.
Блок «Сколько раз в неделю посещают офис» устроен иначе: у него нет ни легенды, ни подсказки, а полоса не занимает всю ширину — её длина и есть доля офисных дней от рабочих дней периода.
- Сегменты 4 % и меньше остаются без подписи — их значение видно только в подсказке при наведении. На узком экране порог выше: подпись появляется начиная с 11 %.
- Стрелка перестаёт реагировать только у двух карточек — «Сколько раз в неделю посещают офис» и «Как часто отменяют бронирования», — когда за период не набралось ни одного дня с бронированием. Остальные карточки раскрываются всегда, даже если календарь пустой, а у «Контроля нормы посещения» стрелки нет вовсе.
- В календаре выходные перекрывают любой статус. Оформление нерабочего дня применяется последним и закрашивает всё, что было под ним.
- Дни за пределами выбранного периода показаны серым и не кликаются.
Два из четырёх блоков этой статьи видны в любом профиле. Два других — «Контроль заполненности расписания» и «Контроль нормы посещения» — выводятся только когда вы смотрите профиль другого сотрудника; в собственном профиле их нет.
Сколько раз в неделю посещают офис
Блок отвечает на вопрос «сколько дней в неделю человек в среднем бывает в офисе». Подпись на полосе читается как «N дней в неделю», рядом — соотношение вида «X из Y».
| Величина | Как считается |
|---|---|
| Дни в офисе | рабочие дни периода, в которых у сотрудника в расписании есть рабочее место |
| Число недель | рабочие дни периода, делённые на 5 |
| Итог на полосе | дни в офисе, делённые на число недель, округлённые до целого |
⚠️ «Бронирование» здесь — это наличие места в расписании дня, а не запись в журнале броней. Блок смотрит на то, закреплено ли за днём рабочее место, и не разбирается, кто его туда поставил — сотрудник забронировал сам, место закреплено за ним постоянно или бронь создана из шаблона расписания. Поэтому цифры этого блока не обязаны совпадать с блоком «Как часто отменяют бронирования», который считает по журналу.
Одно исключение всё же есть: бронь, автоматически снятая по чекину, из расписания выпадает, и такой день в «дни в офисе» не попадёт — хотя в блоке про отмены он будет учтён как «отменённая по чекину». Гостевые брони в расписание тоже не попадают.
⚠️ Число недель всегда получается делением на 5, независимо от того, какая рабочая неделя настроена в компании. При четырёх- или шестидневной неделе среднее «раз в неделю» будет смещено.
Пример. В периоде 20 рабочих дней, рабочее место стояло в расписании в 9 из них. Число недель — 20 ÷ 5 = 4, среднее — 9 ÷ 4 = 2,25, на полосе будет «2 дня в неделю» и подпись «9 из 20». ⚠️ Округление до целого прячет разницу: 9 дней дают «2 дня в неделю», а 11 дней — уже «3 дня в неделю» (11 ÷ 4 = 2,75). Сравнивая сотрудников между собой, смотрите на соотношение «X из Y», а не на среднее.
Рабочий график сотрудников
Блок раскладывает все рабочие дни периода по статусам расписания и показывает доли в процентах. Подсказка при наведении начинается со строки «Всего рабочих дней: N», дальше — по строке на статус с числом дней и процентом.
Базовых статусов четыре: в офисе, удалённо, не работал и незаполнено. Если в компании заведены собственные статусы расписания, они показываются дополнительными пунктами внутри соответствующего базового статуса, со своими названиями и цветами из настроек компании. Дни без собственного статуса собираются в отдельный остаточный пункт. Поэтому набор пунктов легенды у разных компаний разный.
⚠️ Будущая часть периода — это прогноз, а не факт. Для дат начиная со следующей недели, у которых явного статуса ещё нет, статус достраивается из шаблона расписания сотрудника по трём правилам.
- Настроен офисный день — день считается «в офисе».
- Настроен статус — берётся он.
- Закреплено место — день тоже считается офисным.
Если вы строите отчёт с захватом будущих дат, помните, что часть полосы описывает намерения, а не поведение.
Контроль заполненности расписания
Блок показывает только в профиле другого сотрудника и отвечает на один вопрос: насколько аккуратно человек ведёт своё расписание.
Данные те же, что в блоке «Рабочий график сотрудников», но поданы иначе.
- Собственные статусы компании не раскрываются — в легенде ровно четыре пункта: в офисе, удалённо, не работал, незаполнено.
- Незаполненные дни выделены красным, а не белым, — и на полосе, и в календаре. Это и есть содержательная разница между двумя блоками: один описывает график, второй показывает дыры в нём.
Красная доля — это дни, в которых сотрудник не отметил ничего: ни офис, ни удалённую работу, ни отсутствие. Такие дни выпадают из планирования: система не знает, ждать человека в офисе или нет.
Контроль нормы посещения
Блок тоже виден только в чужом профиле и показывает, укладывается ли сотрудник в персональную норму посещения офиса. У этого блока нет раскрывающегося календаря — только полоса и легенда.
Норма берётся из режима работы сотрудника в его карточке.
- «Свободный» — нормы нет.
- «Удаленный» — норма равна 0 %.
- «Гибридный» — заданный процент от 1 до 99.
- «Офисный» — 100 %.
Расчёт идёт в два шага.
| Шаг | Что считается |
|---|---|
| 1. Сколько дней нужно было быть в офисе | рабочие дни периода минус дни со статусом «не работал», умножить на норму в процентах, округлить вверх |
| 2. Недостаток дней | результат первого шага минус фактические дни в офисе; если получилось отрицательное число, недостатка нет |
Недостаток выводится отдельным сегментом «недостаток дней работы в офисе» и ставится первым в полосе.
⚠️ Этот сегмент не добавляется к полосе, а вычитается из других. Недостаток сначала забирает дни у сегмента «незаполнено», а если их не хватило — у сегмента «удалённо». Поэтому, когда недостаток есть, число «незаполнено» в этом блоке меньше, чем в блоке «Рабочий график сотрудников», а «удалённо» уменьшается только если незаполненных дней не хватило. Если сотрудник укладывается в норму, числа в обоих блоках совпадают. Это не расхождение данных, а разный способ подачи: блок нормы показывает, за счёт чего сотрудник недобрал офисные дни.
В режимах «Свободный» и «Удаленный» сегмент недостатка всегда пустой, и блок выглядит как обычная раскладка по статусам: в первом норма не задана, во втором она равна нулю.
Пример. В периоде 20 рабочих дней, два из них сотрудник отмечен как «не работал», режим работы — «Гибридный» с нормой 60 %. Шаг 1: (20 − 2) × 60 % = 10,8, округляем вверх — 11 дней сотрудник должен был провести в офисе. Шаг 2: фактически он был в офисе 7 дней, значит недостаток — 11 − 7 = 4 дня.
Дальше эти четыре дня вычитаются из других сегментов. Допустим, в блоке «Рабочий график сотрудников» тот же период разложен так: 7 дней в офисе, 8 удалённо, 2 «не работал», 3 незаполнено. Полоса блока нормы будет другой: 4 дня недостатка, 7 в офисе, 7 удалённо, 2 «не работал», незаполненных не осталось — недостаток забрал три незаполненных дня и ещё один удалённый. Дней по-прежнему 20, но «удалённо» стало 7 вместо 8, а «незаполнено» — 0 вместо 3. Это и есть та разница, из-за которой два блока за один период показывают разные числа.
Что не попадает в расчёт
- Выходные и праздники исключены везде. Дни, отмеченные в производственном календаре как нерабочие, не участвуют ни в одном из четырёх блоков — ни в числителе, ни в знаменателе.
- Знаменатель процентов — рабочие дни периода по производственному календарю компании, а не длина календарного периода.
- Проценты подгоняются под ровно 100 %. Из-за этого сумма отображаемых долей может немного расходиться с тем, что даёт прямое округление по дням.
Почему числа в блоках расходятся
| Что заметили | Почему так |
|---|---|
| «удалённо» в блоке нормы меньше, чем в блоке графика | недостаток офисных дней вычитается из «незаполнено», а затем из «удалённо» |
| Дней в офисе меньше, чем броней за тот же период | блок смотрит на расписание, а не на журнал броней; несколько броней в один день дают один день |
| Собственные статусы компании видны в одном блоке и не видны в соседнем | блок «Контроль заполненности расписания» намеренно сворачивает их до четырёх базовых |
| Часть периода выглядит слишком «ровной» | будущие даты достроены из шаблона расписания |
| Счётчик рабочих дней в шапке не сходится с подсказкой блока | период захватывает два календарных года: интерфейс подгружает производственный календарь только за год начала периода |