Дешево и сердито: как я сделал интеграцию на соплях 😭

Прилетает мне задача: интегрировать некий N-сервис.
🛠 Сделка в CRM меняет стадию — надо, чтобы по REST API в N-сервис улетал новый статус заказа. 🚀
Есть события Before и After. Казалось бы, чего проще? 😏

У них уже была реализация части кода на Before и всякие мутные завязки. 🤔

После сохранения сделки уже поздно что-то менять — статус прошлый не проверишь, так и будет слать на API тот же самый статус, даже если просто поменял поле в сделке, а не саму стадию.

🤦‍♂ Ладно, думаю, переключусь на After. Теперь статус меняется, только если реально поменялся, а не просто кто-то ткнул "сохранить" после правки описания. 📝 Заодно добавил блокировку: если N-сервис лежит, стадию не двигаем. Гениально, да? 😎 (а вот и нехуя 🙅‍♂)

Тут влетает менеджер с воплем:

"Ты что, ебнулся?! 😡 Я теперь от этого N-сервиса зависеть должен? Не могу в своей же системе работать!" Я такой: "Эмм, ну, типа, да, но сервис же не всегда дохлый, 404 не каждую секунду плюёт, поддержка у них есть, а отвалился может один раз в году! 🕰"

Но менеджер не унимается, и я, как великий компромиссатор, рожаю гениальную идею — очереди. 🥳

Теперь всё просто: двинул стадию? Записал в очередь. 📋 Дважды двинул? Записал только последнюю, актуальную.

Красота, надёжность, ни один статус не потеряется. ✨ На всё это я уже угрохал 20 часов. 😴 Запрашиваю ещё 8, чтобы довести до ума. Менеджер, как добрый волшебник, удваивает до 16.

🧙‍♂ Заказчик смотрит на счёт и посылает всех на три буквы. 😤

Итог?

Бери, — говорит, — откатывай два коммита назад и выкатывай своё говнище! 😆 Ну ок, заказчик зажмотил 40к, а я зажмотил качество. 💸 Получите интеграцию на соплях: если N-сервис ляжет, статусы не обновятся. 🚫 И похер, видимо.

Заказчик, похоже, решил, что лучше долбить N-сервис вручную, чем заплатить нормально. 🤷‍♂ Ну, его дело.

А я сижу и думаю: зарплата их сотрудника, небось, те же 40к, а он всё равно выбрал дерьмо. 💩 Но магазин то не маленький, почему? Загадка вселенной. 🌌

Подписывайтесь на наш telegram канал

Начать дискуссию