Назад

Ускорил публикацию правок на витрине кредитных карт в 6 раз

Панель администратора: разработка модуля для управления витриной кредитных карт в интернет-банке

Внутренний инструмент · Web · 2025

Редактор витрины, вкладка «Карточка»: поля карточки и живой предпросмотр

Контекст

Админка — внутренняя CMS банка: через неё правят JSON-файлы, из которых собраны экраны интернет-банка. Продуктовые команды заказывают в ней модули под свои сценарии, чтобы заполнять поля вместо ручной правки файлов. Команда кредитных карт решила заказать такой модуль для витрины — экранов, с которых клиент начинает оформление карты. Цель — быстрее публиковать изменения и разгрузить разработчиков

Витрина в приложении: карточка, промоэкран и подборщик

Моя задача

Спроектировать модуль в существующих паттернах админки: разобрать с разработчиками компоненты JSON, перевести их параметры в поля формы, спроектировать сценарии и экраны. Связать команду кредитных карт с командой админки

Решение

  1. Разобраться, как сейчас правят витрину и где можно встроиться в процесс
  2. Изучить редакторы контента в других админках и CMS
  3. Соотнести компоненты дизайн-системы и их описание в JSON
  4. Собрать CJM основных сценариев
  5. Собрать макеты и передать разработке админки

Определение проблемы

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

  • Три файла на одну карту. У каждой карты отдельный JSON для iOS, Android и Web, поэтому одну правку вносили трижды, и это занимало до часа
  • Запутанная схема JSON. Разобраться в ней мог только разработчик, а продакт ставил задачу и ждал
  • Нет предпросмотра. Результат правки видели только после публикации, и опечатки замечали уже у клиентов

Анализ конкурентов

Изучил редакторы контента в CMS и продуктовых админках. Что взял в модуль:

Linktree: Форма слева, живое превью телефона справа
LinktreeФорма слева, живое превью телефона справа
Storyblok: Сохранение и публикация разными кнопками разного веса
StoryblokСохранение и публикация разными кнопками разного веса
Sanity: Строка состояния «опубликовано · изменено» и история ревизий
SanityСтрока состояния «опубликовано · изменено» и история ревизий
Strapi: Черновик отдельно от опубликованной версии, восстановление из истории
StrapiЧерновик отдельно от опубликованной версии, восстановление из истории
Shopify: Плашка несохранённых изменений в шапке
ShopifyПлашка несохранённых изменений в шапке
ElevenLabs: Сравнение с активной версией перед публикацией
ElevenLabsСравнение с активной версией перед публикацией

Макеты модуля

По итогам исследования спроектировал три части модуля: редактор витрины, список с активацией и журнал изменений

Связка параметров JSON и полей формы

Задача экрана. Продакт-оунер меняет тексты и условия на карточке и промоэкране карты, не зная, как устроен JSON

Что сделал. Вместе с разработчиками прошёл схему JSON и сопоставил каждый параметр с элементом на экране. Назвал поля формы как элементы экрана: «Заголовок», «Подзаголовок», «Тег», а тип, обязательность и ограничения взял из параметров. Добавил на промоэкран дополнительные блоки, которые включаются переключателем: админка сама добавляет в JSON заготовку компонента, остаётся заполнить поля

Редактор витрины: поля названы так, как их видит клиент, а дополнительные блоки включаются переключателем

Статусная модель и процесс активации

Задача экрана. Найти нужную витрину, проверить правку и вывести её на клиентов

Что сделал. Сгруппировал витрины в списке по типу продукта. Спроектировал статусы: новая витрина создаётся черновиком и до активации не видна клиентам. Перед активацией добавил полный предпросмотр, где экраны выглядят так, как их увидит клиент, и опечатки стало видно до публикации

Список витрин, полный предпросмотр и активация черновика

Журнал истории и просмотр JSON

Задача экрана. Понять, кто и что поменял в витрине, и при необходимости разобрать конкретную правку

Что сделал. Собрал правки в журнал по ревизиям. Сделал просмотр любой ревизии в JSON с подсветкой отличий от предыдущей, чтобы не сравнивать файлы вручную

Журнал изменений и JSON ревизии с отличиями от предыдущей

Результат

1 час → 10 мин
правка витрины до выхода в прод

До модуля опрашивали разработчиков, сколько уходит на замену JSON, и несколько раз я смотрел правку вживую: выходило около часа. После запуска засекали время у продакт-оунеров: сама правка занимала около пяти минут, ещё пять уходило на ожидание раскатки на прод, когда работа уже сделана

  • Текст пишет тот, кто знает контекст, без пересказа через разработчика
  • Разработчик больше не отвлекается от спринта ради строки в FAQ
  • Опечатки заметны до публикации: предпросмотр показывает экран так, как его увидит клиент
  • Журнал хранит, кто и что поменял в каждой ревизии
Витрина в админке: слева то, что заполнил продакт, справа экран, каким его увидит клиент

← Предыдущий кейс — «Кредитные карты»