Корпоративный портал Спортмастера

2022–2024 · Senior Designer

Корпоративный портал Спортмастера — внутренний сайт, который каждый офисный сотрудник открывает по будням: подаёт отпуск, заказывает справки, смотрит трансляции топ-менеджмента, обновляет профиль. С 2022 по 2024 я отвечал за его дизайн.

Что есть в портале

Новости компании
Сотрудники читают и комментируют корпоративные новости. Редакторы публикуют без отдельной CMS.
Прямые трансляции
Совещания и стендапы топ-менеджмента смотрят прямо в портале. Записи остаются в архиве.
Профиль сотрудника
Должность, отдел, контакты, фото. Видно всей компании и автоматически тянется из 1С.
Заказ документов
Справки 2-НДФЛ, копии трудовой, выписки — заявка в HR в один клик.
Отпуска и согласования
Заявка на отпуск, статус согласования, остаток дней.
Отпуска коллег
Календарь команды с пересечениями и фильтрами. Об этом дальше.

Где был самый болезненный сценарий

Самый узкий участок портала к началу 2023 — планирование отпусков. Сотрудник подавал заявку, не зная, кто из команды уже взял те же даты. Через два дня заявка возвращалась от HR с пометкой «команда остаётся без покрытия» — и шла на пересогласование.

«Сделай так, чтобы сотрудник видел календарь команды до того, как нажмёт "подать заявку". Тогда HR перестанет возвращать заявки на пересогласование.»
— бриф от HR-директора, март 2023
23%
заявок уходило на пересогласование
~4 ч
чтобы получить от HR-партнёра выгрузку отпусков отдела

Два пути, между которыми я выбирал

На старте было два рабочих сценария — оба обсуждались на проектном комитете.

Вариант А
Чат-бот HR в Teams

Сотрудник пишет «когда у моего отдела отпуска?», бот в Teams возвращает таблицу. Дёшево, без редизайна, переиспользует существующий канал HR.

Вариант Б
Визуальный календарь в портале

Виджет с таймлайном и пересечениями внутри личного кабинета. Дороже в разработке, но решение принимается прямо в момент подачи заявки.

Бот отвечал на вопрос, но не помогал принять решение. Таблица в чате — это не пересечения, это просто таблица. Сотрудник видит её и закрывает Teams, не подавая заявку. Календарь же показывает конфликт визуально, и решение принимается тут же. Мы выбрали Б, понимая, что цена — два релизных окна и интеграция с 1С:ЗУП.

Один лимит, который ломает дизайн

На исследовании я смотрел, сколько коллег один сотрудник на самом деле сравнивает с собой при планировании отпуска. Цифра оказалась маленькой: для рядового сотрудника — 5–8, для руководителя — до 10. Если показывать в виджете больше, таймлайн превращается в нечитаемую кашу.

Я зафиксировал жёсткое ограничение: до 10 коллег в виджете. Это снимало 90% задач планирования и оставляло одну неприятную ситуацию — большие отделы по 30+ человек. Их я отдал в развернутый режим на отдельную страницу. Не пытаться сделать «один интерфейс на все случаи».

Роли, под которые проектировал

Три сценария — три читателя одного виджета.

Сотрудник — планирует свой отпуск без конфликтов
Руководитель — видит загрузку отдела на год
HR-партнёр — закрывает конфликты до согласования

Что вышло в релиз

Виджет «Отпуска коллег» внутри личного кабинета и отдельная страница с развернутым календарем на год вперёд. От первого макета до прода — два релизных окна.

01 — Загрузка
Честный лоадер, а не пустой блок

Данные тянутся из 1С:ЗУП. Грузятся неравномерно: 200 мс в офисе и до 3 с в магазине через VPN. Виджет показывает скелетон и подпись «Загружаем графики работ», чтобы сотрудник не подумал, что модуль сломан.

Загрузка графика отпусков команды
02 — Стандартное состояние
Свои даты подсвечены, чужие — серым

На таймлайне — твои даты синим, отпуска коллег нейтральным. Пересечения отмечены розовой полосой по дням, в которые отдел теряет покрытие. Внизу — мини-карта года: видно, где конфликты ещё впереди.

Стандартное состояние календаря отпусков
03 — Выбор коллег
До 10 человек, поиск по ФИО

По умолчанию виджет подтягивает прямых коллег по отделу из 1С. Если состав команды отличается от штатного, сотрудник добавляет до 10 человек вручную: поиск по ФИО, чекбоксы, кнопка «Выбрать коллег».

Модалка выбора коллег
04 — Развернутый режим
Полный год для руководителей и HR

На отдельной странице — год вперёд, переключение по совмещениям (основная / совмещение 1–6), фильтр «Пересечения отпусков». Сюда уходят сценарии, которые не помещаются в виджет: руководители больших отделов и HR-партнёры, отвечающие на запросы из бизнеса без выгрузок из 1С.

Развернутый режим — полный год

Что не сработало с первого раза

Первая итерация подсветки пересечений была агрессивной — красная заливка по конфликтным дням. На демо HR-директор сказал: «выглядит, как будто человек заболел». Аналитика портала через пару дней показала то же: сотрудники видели красное и закрывали виджет, вместо того чтобы менять даты. Сигнал срабатывал, но в противоположную сторону.

Я снизил интенсивность до розового и оставил красным только тонкую полосу под датами. Подсказка появляется по наведению, без громкого «у тебя конфликт». Конфликт стал информацией, а не приговором.

Итого

Раньше пересечение отпусков было проблемой HR и руководителя: сотрудник подавал заявку «вслепую» и узнавал о конфликте через два дня. Теперь конфликт виден на этапе планирования. Заявка проходит с первого раза.

−61%
заявок возвращалось от HR на доработку
4 мин
от мысли «когда отпуск?» до подачи заявки

Внутренние инструменты редко становятся продуктом, на который смотрят. Их обычно «просто доводят». Календарь отпусков напомнил мне, что инструмент решения и инструмент отчётности — это не одно и то же. Один помогает выбрать, другой просто показывает.

Часть деталей и метрик не раскрывается в связи с NDA. Цифры по пересогласованиям и времени подачи — на основе внутренней аналитики проекта.