wf-order-review-request
Objetivo
Contorno 2 do sistema de avaliações: perguntar ao cliente, uma vez, depois que o trabalho estiver concluído.
Uma execução encontra um pedido que foi concluído há tempo suficiente, tem um cliente para quem escrever
e que nunca foi contatado; cria seu link pessoal de uso único para avaliação em; e envia a solicitação por meio de rp-reviews.lm-ses
Por que isto é um workflow
A pergunta "quais pedidos concluídos ainda não foram contatados?" abrange dois serviços
que são proibidos de conhecer um ao outro: não sabe o que é umarp-orders
avaliação, e mantém rp-reviews como uma string opaca. Colocar as duasorderId
listas lado a lado é exatamente para isso que serve um fluxo — e é o que fazrt.node
a criação do link sobreviver a uma reinicialização sem criar um segundo link.
Estrutura
read-settings → list-finished (completed, updatedAt ≤ now − delay)
→ list-invites (which of those were already asked)
→ create-invite → send-email → mark-sent | mark-failed
Um e-mail por execução, para que um endereço bloqueado nunca impeça a fila atrás dele e o
agendamento determine a taxa. renderiza o e-mail e não cria nada: umdryRun
ensaio que deixasse um link ativo para trás faria a próxima execução real ignorar esse
pedido por já ter sido contatado.
Um e-mail recusado retorna de como lm-ses, não como uma exceção,{ success: false }
portanto é um branch comum que marca o convite como — não um limitefailed
de erro.
Parâmetros
(obrigatório) — endereço do remetente.from(obrigatório) —ses.SesCredentials— preenchido emshopNamenos templates.{{shopName}}— substituidelayHourspara uma recuperação.ReviewSettings.requestDelayHours— renderiza e encerra.dryRun
O assunto, o corpo, a base do link e o atraso vêm de , para que areviews.getSettings()
loja altere seu próprio texto sem tocar neste fluxo.
Dependências diretas do módulo
g-ordersg-reviewsg-ses
Código-fonte
modules/workflows/wf-order-review-request