Към съдържанието
N1
CRM / Bitrix24 · cron · контрол на сделката

CRM сама следи за дисциплината по сделката

Клиент: Автомобилен маркетплейс, NDA Категория: CRM / Bitrix24 Стек: PHP 8.3, Bitrix24 D7, cron + flock, задачи в Bitrix24, 1С (HTTP API), известия в чата Срок: внедрявано поетапно
Проблем

Правилата за сделката се крепяха на паметта на мениджърите: резервацията на автомобил по предварителен договор можеше да виси с денонощия, плащането и сканираните подписани документи се проверяваха на извадков принцип, а сумата по договора в CRM се разминаваше с факта при 12 от 71 проверени сделки (17%).

Ограничения

Правилата засягат живи сделки и резервации на автомобили в 1С — фалшиво задействане ще върне назад добра сделка. Сумите се променят от 1С без събития по сделката, а съгласуването върви паралелно с cron задачите.

Какво направих
  • Автоматично освобождаване на просрочена резервация по предварителен договор след 3 часа: сваляне в 1С и връщане на сделката назад, с отчитане на race condition със съгласуването и 43 теста
  • Контрол на плащането на 3-тия ден след одобряване на договора: задача за мениджъра с контрол на резултата
  • Контрол на сканираните подписани документи: задача, прозорец за проверка „ОК / Отказ“ и сутрешен наблюдател за просрочия
  • Пресинхронизиране на сумата по договора на всеки 15 минути с предпазител срещу масови промени — сумите се менят от 1С без събития по сделката
  • Наблюдател за увиснали предавания: ако 1С е върнала грешка, но може да е осчетоводила продажбата при себе си, отговорниците получават известие в чата
  • Отстранено е двойното изпращане на съгласуването към 1С — през август така бяха изпратени 172 от 758 съгласувания
Архитектура
Cron + flock → Правило в dry-run → Флаг за включване → Задача, връщане или известие → Сделка и 1С
Резултат

Правилата са готови и се включват в продукция през септември 2026 — всяко след тестови прогони без запис и чрез флаг. Прозорецът от 3 часа е избран по измерване: 97% от сделките минават от предварителния до окончателния договор за медиана от 6 минути, така че нормалният поток не се засяга.

Какво може да се преизползва
Шаблон за cron правило: dry-run → флаг → включване Задача с контрол на резултата вместо „дейност“ Досинхронизиране с предпазител срещу масови промени