wf-order-review-request
Propósito
Contorno 2 del sistema de reseñas: preguntar al cliente una vez, después de terminar el trabajo.
Una ejecución encuentra un pedido que terminó hace suficiente tiempo, tiene un cliente al que escribir
y al que nunca se le ha preguntado; crea su enlace personal de reseña de un solo uso en; y envía la solicitud mediante rp-reviews.lm-ses
Por qué esto es un flujo de trabajo
La pregunta «¿qué pedidos terminados aún no han recibido la solicitud?» abarca dos servicios
que tienen prohibido conocerse entre sí: no sabe qué es una reseña, yrp-orders almacena rp-reviews como una cadena opaca. Poner ambas listas una al lado de la otraorderId
es exactamente para lo que sirve un flujo — y es lo que hace que la creación del enlacert.node
sobreviva a un reinicio sin crear un segundo enlace.
Estructura
read-settings → list-finished (completed, updatedAt ≤ now − delay)
→ list-invites (which of those were already asked)
→ create-invite → send-email → mark-sent | mark-failed
Un correo por ejecución, para que una dirección atascada nunca bloquee la cola que está detrás y
la programación determine la velocidad. renderiza el correo y no crea nada: undryRun
ensayo que dejara un enlace activo haría que la siguiente ejecución real omitiera ese pedido
por considerarlo ya solicitado.
Un correo rechazado vuelve de como lm-ses, no como una excepción,{ success: false }
por lo que es una rama normal que marca la invitación como , no un límitefailed
de errores.
Parámetros
(obligatorio) — dirección del remitente.from(obligatorio) —ses.SesCredentials— se inserta enshopNameen las plantillas.{{shopName}}— reemplazadelayHourspara una puesta al día.ReviewSettings.requestDelayHours— renderiza y se detiene.dryRun
El asunto, el cuerpo, la base del enlace y el retraso provienen de , por lo que lareviews.getSettings()
tienda puede cambiar su propia redacción sin modificar este flujo.
Dependencias directas del módulo
g-ordersg-reviewsg-ses
Código fuente
modules/workflows/wf-order-review-request