Синхронизация и статусы
Обмен включает исходящее формирование документов и обратное обновление входящих документов и состояний. В действующей инструкции указан фоновый интервал около 10 минут.
Модель состояний должна различать:
- создан;
- подготовлен;
- отправлен;
- подписан нашей стороной;
- подписан контрагентом;
- отказан;
- аннулирован;
- оплачен;
- ошибка.
Подпись не должна автоматически означать оплату. Повтор одного события не должен повторно создавать документ или компанию.
Получение изменений из Saby
- Получить изменения с момента последней успешной проверки.
- Определить тип и направление документа.
- Пропустить выключенные типы и направления.
- Найти или создать контрагента; при необходимости дополнить пустые реквизиты.
- Найти CRM-элемент по внешнему ID документа Saby.
- Обновить стадию, статус и ссылку либо создать новый элемент в правильной категории.
Время последней проверки должно обновляться только после успешной обработки согласованной области, чтобы частичный сбой не приводил к потере изменений.
Отправка новых документов
- Выбрать новые элементы на стадии «Черновик».
- Проверить обязательные реквизиты и данные документа.
- Для файлового документа приложить файл; для УПД сформировать содержимое из позиций и реквизитов.
- Отправить документ и сохранить внешний ID и ссылку.
- Выполнить согласованный сценарий подписи или создать задачу менеджеру.
- Записать результат и понятную ошибку.
Ошибки
Текущая инструкция описывает агрегированное сообщение в служебный чат за один проход и отдельный комментарий в карточке документа. В production-реализации сообщения должны маскировать содержимое документов и секреты, но сохранять correlation ID, шаг и код ошибки.
Расписание около 10 минут и описанные шаги перенесены из документации. Реальный locking, checkpoint, retry/backoff и транзакционные границы проверяются по исходникам и staging.