Задача
Мы разрабатывали сервис с записью на различные услуги, интегрированный с единым контуром для работы операторов. Чтобы оформить услугу, юзеру требовалось заполнить огромное количество форм. При этом часть полей для всех пользователей была одинаковой, а часть — менялась в зависимости от пользовательского сценария и типа услуги. Сам список доступных услуг мог отличаться, если пользователь находился в другой стране. Первая итерация разработки включала три услуги, но дальше планировалось масштабирование до нескольких десятков услуг разной тематики.
Решение
Чтобы ускорить внедрение в сервис большого количества форм, мы реализовали на бэкенде конструктор, через который можно создавать типовые поля и выводить формы по шагам на фронте. Мы уже описывали принцип работы backend-driven UI подхода и его преимущества в другом решении.
Первые три услуги из первой итерации разработки охватили практически весь набор необходимых типов полей, для каждого из которых уже легко было добавить зависимости и валидацию с масками.
Также на базе конструктора мы сделали формализованный контур передачи XML из заполненных форм во внешнюю систему.
Благодаря конструктору разработка MVP заняла всего три месяца, и теперь мы можем внедрить в сервис любую новую услугу за 1-2 недели. При этом большая часть работы — это просто согласование и регрессионное тестирование.
Также конструктор облегчает изменение уже имеющихся форм: можно быстро убрать или добавить поле, переставить их местами или разделить на дополнительные шаги. Все это реализуется в бэкенде в максимально короткий срок с минимальным участием фронтенд-разработчика.
Конструктор можно адаптировать для работы с несколькими городами и странами, что позволяет избавиться от дублирования кода и поддерживать регионально-зависимое ветвление в рамках единого контура. Это исключает дополнительные расходы на поддержку дублирующихся элементов и их тестирование.
Теперь в разработанный нами сервис можно внедрять новые регионы практически без привлечения программистов.
Итог
Без конструктора разработка одной формы — это около двух месяцев работы с интеграционным тестированием и релизом мажорной версии. На базе конструктора мы можем внедрять новые формы за 1-2 недели от получения задачи до фактического релиза. А внести изменения разной сложности можно за 1-5 дней. Экономия времени и бюджетов на внедрение новых форм огромная.