Все кейсы

Система учёта международных перевозок: от заказа до счёта клиенту

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

Контекст

Система, через которую проходят перевозки целиком: заказы, доставка самолётом и морем, объединение грузов, тарифы, счета, кредитные лимиты клиентов, комиссии агентов. И автоматизация процессов, чтобы менеджеры не двигали статусы руками.

Как работали

Тесты пишутся до кода: 584 тестовых файла. Сборка, тесты и покрытие проверяются автоматически при каждом изменении. Около двадцати технических документов лежат рядом с кодом, а не в чьей-то голове.

Как устроено

Слои системы учёта перевозок: от клиентских приложений до базы данных, процессы описаны настройкамиСайты, виджеты и кабинет клиентаберут тарифы, статусы и счета из системыСлой APIGraphQL · авторизация · права доступаЗаказы и перевозкисамолёт и море · объединение грузовТарифы и счетарасчёт · выставление · оплатаЛимиты и комиссиикредитные лимиты · агентыДвижок процессовстатусы и переходы описаны настройками · проверка по схеме · меняются без выпуска версииФоновые задачирасписание · повторы при сбоеPostgreSQL + PostGISданные и геоданныеСлои системы учёта перевозок: от клиентских приложений до базы данных, процессы описаны настройкамиСайты, виджеты и кабинет клиентаберут тарифы, статусы и счета из системыСлой APIGraphQL · авторизация · права доступаЗаказы и перевозкисамолёт и море · объединение грузовТарифы и счетарасчёт · выставление · оплатаЛимиты и комиссиикредитные лимиты · агентыДвижок процессовстатусы и переходы описаны настройкамипроверка по схемеменяются без выпуска версииФоновые задачирасписание · повторы при сбоеPostgreSQL + PostGISданные и геоданные

Почему так, а не иначе — процессы описаны настройками, а не кодом

В логистике процесс меняется чаще, чем выходят версии системы. Порядок согласования, набор статусов, условия перехода между этапами правятся по просьбе клиента, а не по плану разработки.

Если процессы живут в коде, каждая такая правка превращается в задачу, проверку, выпуск версии и повторное тестирование. Разработка становится узким местом обычной работы: бизнес ждёт неделю ради изменения, которое по сути является настройкой.

Поэтому процессы описаны в файлах настроек. Изменение выкатывается без выпуска новой версии.

Цена — ошибки в настройках находятся не при сборке, а при работе: опечатку не поймает компилятор. Отсюда проверка настроек по схеме как обязательная часть решения, а не приятное дополнение.

Другие кейсы

Кейсы и личные проекты