§ 01 · Контекст
Старый процесс и плотный multi-role workflow
Внутри продукта планировщики собирают расписание рейсов и назначают экипажи: КВС, второго пилота, бортпроводников и старших бортпроводников. Параллельно живут модули обучения, графиков, окон под полёты, общих событий и связок рейсов.
У каждой роли — свой кабинет. Пилоты и бортпроводники видят свои планы, могут запрашивать отпуск, больничный, выходной и обучение. Руководители скорее просматривают и изучают данные.
Сценарий высоконагруженный: большой штат, много зависимостей, плотный набор ограничений и дорогая ошибка в расписании. Раньше такие процессы могли вестись вручную, затем их закрывали legacy-системы с интерфейсной логикой 90-х.
- 01.Несколько ролей в одном продукте, у каждой свои сценарии
- 02.Замена legacy-системы с интерфейсной логикой 90-х
- 03.Продукт построен на Ant Design — паттерны приходилось адаптировать
§ 02 · Интерфейс
Сначала реальные рабочие экраны, потом схемы
В кейсе теперь на первом плане интерфейсные кадры из Figma: карточка персонала, фильтры, пресеты и настройка колонок. Схемы ниже оставлены как рабочие материалы, чтобы не подменять продукт абстрактными картинками.
- 01.Карточка персонала показывает плотность данных и ролевой контекст
- 02.Фильтры и пресеты показывают, как пользователь настраивает рабочий вид
- 03.Настройка колонок показывает системный слой для больших таблиц
§ 03 · Проблема
Один продукт расходился на четыре несовместимых поведения
Главная проблема была не в одном экране, а в том, что похожие задачи решались по-разному в разных модулях. Хедер смешивал контент-переходы, фильтрацию, переключение роли и запуск модалок. Пользователь не мог заранее понять, что произойдёт по клику.
Та же разрозненность проявлялась дальше: в таблицах горизонтальный скролл уносил критические колонки за край экрана, фильтры были устроены слишком плоско для операционного домена, а модалки расползались в цепочки вложенных окон.
- 01.Хедер: четыре смешанные группы функций без предсказуемой логики
- 02.Таблицы: горизонтальный скролл, pinned-колонок нет
- 03.Фильтры: плоский список без групп условий
- 04.Модалки: модалка-в-модалке-в-модалке
§ 04 · Роль
Моя зона — собрать повторяемые паттерны внутри командной разработки
Подключился на поток бизнес-задач от аналитиков. Формальная зона — макеты для конкретных задач, практическая — собрать повторяемые паттерны, чтобы продукт перестал расходиться по модулям.
Я раскладывал задачи через ролевую модель: какая роль, с какими сущностями она работает, какой сценарий проходит. После этого защищал решения на ревью и передавал их в разработку. Это была team-based работа с лидом, другими дизайнерами и инженерами, не solo ownership claim.
- 01.Ролевая модель → сценарии → паттерны → экраны
- 02.Четыре reusable pattern вместо локальных решений
- 03.Передача в разработку — часть моей работы, не следующая фаза
§ 05 · Как смотреть артефакты
Ищите не красивые экраны, а четыре reusable pattern
Главные изображения в кейсе теперь показывают реальные интерфейсные фрагменты из Figma с закрытыми персональными данными. Схемы ниже оставлены как рабочие материалы: они помогают понять, как решение раскладывалось по хедеру, фильтрам, таблицам и модалкам.
- 01.Decision delta: problem -> intervention -> proof по четырем паттернам
- 02.Хедер: левая зона контекста и правая зона действий
- 03.Фильтры: дерево условий и `7 → 5` только как local UX measure
- 04.Таблицы: pinned-колонки удерживают критические поля
- 05.Модалки: один большой формат вместо цепочки вложенных окон
§ 06 · Решение № 01 · Навигация
Хедер разделил на две зоны вместо четырёх смешанных групп
В старой версии хедер собирал четыре разнородные группы: контент-переключатели, фильтры, переключатель роли, триггеры модалок. Пользователь не мог предсказать, что произойдёт по клику. Конфликты возникали даже на уровне статуса: выбран подраздел, у этого подраздела свой статус — всё это нужно было уместить в одной полоске.
Новая концепция: левая часть — общая информация о модуле и переход между подразделами плюс часть общих действий. Правая часть — только функции, которые влияют на контент текущего раздела.
Часть функций я не вынес ниже по иерархии сознательно: вертикальное пространство в продукте важнее горизонтального, и плодить дополнительный уровень интерфейса было нельзя.
- 01.Левая зона — где я и куда могу перейти
- 02.Правая зона — что я могу сделать с тем, что вижу
- 03.Сохранили вертикальное пространство, не добавляя ярус
§ 07 · Решение № 02 · Фильтры
От плоского списка параметров к дереву условий с группами
Реальные операционные фильтры здесь — это не маркетплейс. Десятки параметров с вложенностями, условиями вида «И / ИЛИ» и группами. Без вложенности пользователь не мог собрать нужный запрос за разумное число кликов.
Я перебрал концепты, в финале вернулся к существующей логике как ядру: оставил её, доработал деталями, переработал поведение. Фильтр стал отдельным самостоятельным функциональным слоем, который повторно применяется в каждом крупном модуле.
Замер UX-шага: путь от выбора фильтра до результата сократился с примерно ==7 кликов до 5==.
- 01.Группы условий вместо плоского списка
- 02.Вложенность — первичный паттерн, не исключение
- 03.7 кликов → 5 на типовой операционный запрос, только как local UX measure
§ 08 · Решение № 03 · Таблицы
Pinned-колонки удержали важные данные перед глазами
Таблицы были самым плотным местом. Горизонтальный скролл уносил критические колонки за край экрана, иерархии не было, элементы слипались. Подходы к таблицам в разных модулях расходились — каждый раз решали заново.
Я зафиксировал основные колонки как pinned и развёл уровни визуальной иерархии: ключевые поля — крупнее, вторичные — тише, статусы — отдельным слоем. Долго спорили по UI, в моменте казалось, что решение хорошее, дальше через шторминг приходили к более чистому варианту.
- 01.Pinned-колонки для критических полей
- 02.Иерархия плотных данных через шрифт и контраст, не через границы
- 03.Скролл стал предсказуемым, статусы перестали теряться
§ 09 · Решение № 04 · Модалки
Стандартизировал большой формат вместо цепочки вложенных окон
В старой версии модалки часто открывали другие модалки. Пользователь кликал туда-сюда, терял контекст и нагружался когнитивно. Между уровнями ещё и расходился UI.
Стандартизировал большой формат модального окна. Сценарий, который раньше требовал двух-трёх переключений между уровнями, поместился в один большой формат с внутренними секциями. Универсальный паттерн для типовых форм.
- 01.Один большой формат вместо вложенных модалок
- 02.Меньше переключений между уровнями, понятнее контекст
- 03.Универсальный паттерн для типовых форм
§ 10 · Сигналы эффекта
Что изменилось для пользователей — без бизнес-KPI
Изменения для пользователей были не в декоративном UI, а в предсказуемости сценариев: хедер разделил контекст и действия, фильтры начали выражать вложенность, таблицы удержали критические поля, а модалки перестали вести по цепочке вложенных окон.
Local UX measure: типовой путь от выбора фильтра до результата описан как примерно 7 кликов → 5. Это замер сценария, not product KPI.
Qualitative feedback: руководству и заказчику понравился новый вид продукта. Это feedback signal, not quantified metric.
Прямых продуктовых KPI в raw answers нет, поэтому публично не заявляю business impact, adoption, time saved или support reduction.
- 01.Local UX measure: 7 → 5 кликов на типовой операционный запрос
- 02.Qualitative feedback: руководству и заказчику понравился новый вид продукта
- 03.Product KPI: не заявляется, источник отсутствует
§ 11 · За NDA
Что нельзя показать публично
Реальные интерфейсы, реальные данные пилотов, внутренние имена модулей и чувствительный клиентский контекст остаются под NDA. В портфолио — только структурные схемы решений без раскрытия конкретики.
Если важны интерактивные артефакты или production screenshots, их можно обсуждать только в отдельной NDA-границе. Публичная версия показывает product logic и доказательные артефакты, а не операционные детали.