Издревле заказы в нашей системе строились по принципу «здесь и сейчас» — статусы, типы, режимы, методы доставки — всё это приписывалось и дописывалось по обстановке, без слишком детального углубления в бизнес-процессы.
23 июня 2014
Изменение отправки сертификатов и стандартизация заказов
Издревле заказы в нашей системе строились по принципу «здесь и сейчас» — статусы, типы, режимы, методы доставки — всё это приписывалось и дописывалось по обстановке, без слишком детального углубления в бизнес-процессы.
Конечно, модуль заказов работал, в большинстве случаев даже вполне корректно, но в целом был почти полностью разобран и весьма тосклив.
Особенно стало болеть, когда возросло количество промо-акций с призами типа «сертификат» (где приз представляет собой код с определенным рублевым номиналом для какого-нибудь интернет-магазина) — невозможно было четко следить за отправкой и доставкой таких призов, невозможно было переотправлять, и никто не понимал, как оно вообще работает — поэтому мы весной 2014 г. нашли в себе силы, возможности, определили на задачу лучших специалистов и приступили к переделке.
Получилось в итоге так:
- Единая для всех типов заказов (почтовые и электронные) система статусов — заказан, отправлен, доставлен, доставка не удалась (этот статус был известен ранее, как «Заказ возвращен»), отменен.
- Единая система уведомления об изменении статусов электронных заказов, основанная на системе очередей RabbitMQ.
- Отправка сертификатов теперь происходит явно — создание заказа, отправка заказа (раньше отправка происходила при публикации приза, без создания заказа).
- Добавлена проверка на допустимые из системы администрирования ручные изменения статусов заказов.
- Добавлена возможность отката ошибочного изменения статуса заказа из системы администрирования (конечно, при наличии специального разрешения). При откате заказ переводится в исходное состояние, которое было до ошибочного изменения статуса, но действия, выданные при изменении статуса не удаляются — их можно удалить вручную (а лучше вообще не удалять).
- Изменены действия, выдаваемые при создании заказа. Теперь, если потребитель сам купил себе приз в магазине (и при этом автоматически создался заказ) или сам создал себе заказ для доставки ранее выигранных призов, то выдаётся личное действие. Во всех остальных случаях — не личное.
- Изменены действия, выдаваемые при изменении статуса заказа. Теперь для каждого статуса своё действие, а точка контакта своя для каждого способа доставки.
- Изменены действия, выдаваемые потребителю при выигрыше или покупке приза в магазине. Теперь оно не зависит от приза, а зависит только от механики.
- Причины неудачи доставки и отмены заказов теперь отображаются, как в списке заказов, так и на подробном просмотре заказа.
Немного подробнее хочу остановиться на отправке сертификатов. Теперь отправка сертификата происходит аналогично отправке платежа:
- Создается заказ (или он уже может быть создан — в зависимости от механики) на основе приза.
- Заказ отправляется (только автоматически, никакой ручной отправки больше не предусмотрено).
- PROFIT
После этого система сама отслеживает статус доставки или не доставки сертификата и производит соответствующие действия (например, отменяет заказ, если сертификат не был доставлен).
Мы с котиком надеемся, что теперь нам не потребуется менять систему заказов еще как минимум 5 лет.