Change language

wf-order-review-request

Назначение

Контур 2 системы отзывов: один раз попросить клиента оставить отзыв после завершения работы.

Один запуск находит один заказ, который завершился достаточно давно, по которому есть клиент, которому можно написать, и по которому ещё ни разу не отправлялся запрос; создаёт для него персональную одноразовую ссылку на отзыв в rp-reviews; и отправляет запрос через lm-ses.

Почему это рабочий процесс

Вопрос «по каким завершённым заказам ещё не отправлялся запрос» охватывает два сервиса, которым запрещено знать друг о друге: rp-orders не знает, что такое отзыв, а rp-reviews хранит orderId как непрозрачную строку. Сопоставление этих двух списков — именно то, для чего нужен поток, а rt.node позволяет пережить перезапуск без создания второй ссылки.

Структура

read-settings → list-finished (completed, updatedAt ≤ now − delay) → list-invites (which of those were already asked) → create-invite → send-email → mark-sent | mark-failed

Один email за запуск: так зависший адрес не блокирует очередь позади него, а расписание определяет частоту отправки. dryRun формирует письмо и ничего не создаёт: репетиционный запуск, после которого осталась бы действующая ссылка, заставил бы следующий настоящий запуск пропустить этот заказ как уже обработанный.

Отклонённое письмо возвращается из lm-ses как { success: false }, а не в виде исключения, поэтому это обычная ветка, которая помечает приглашение как failed, а не граница обработки ошибок.

Параметры

  • from (обязательный) — адрес отправителя.
  • ses (обязательный) — SesCredentials.
  • shopName — подставляется вместо {{shopName}} в шаблонах.
  • delayHours — переопределяет ReviewSettings.requestDelayHours для обработки накопившихся запросов.
  • dryRun — сформировать и остановиться.

Тема, текст, базовый URL ссылки и задержка берутся из reviews.getSettings(), поэтому магазин может менять собственные формулировки, не затрагивая этот поток.

Прямые зависимости модуля

  • g-orders
  • g-reviews
  • g-ses

Исходный код

modules/workflows/wf-order-review-request