Change language

rp-reviews

Назначение

Система отзывов магазина в трёх таблицах, каждая из которых отвечает на свой вопрос.

  • reviews — что сказал клиент, что магазин ответил и опубликован ли отзыв
    на сайте. Здесь происходит модерация: отзыв, пришедший извне, появляется со
    статусом pending и виден только в консоли, пока кто-нибудь его не опубликует.
  • review_invites — одна персональная одноразовая ссылка на заказ и то, что с
    ней произошло: отправлена, открыта, на неё ответили или срок её действия истёк.
    Это воронка, которую отслеживает магазин.
  • review_settings — одна строка JSON: внешние платформы, порог, шаблоны
    писем, задержки и разрешённое количество напоминаний.

Граница ответственности

Владеет отзывами, приглашениями и настройками воронки. Ничего не знает о заказах:
Review.orderId и ReviewInvite.orderId — непрозрачные строки, а связывание их
с фактическими заказами является задачей wf-order-review-request (который
запрашивает отзыв) и sf-reviews (который его показывает). Не владеет обсуждениями
сообщества.

Две двери

Доступ, как и везде, определяется тегами: опубликованный отзыв содержит public,
всё остальное — authenticated и moderator, что позволяет магазину работать
с отзывом, написанным не сотрудником магазина.

Дверь клиента устроена иначе. getInviteByToken, markInviteOpened и
submitByToken авторизуются самим токеном — это capability, а не сессия, — поэтому
публичная форма работает вообще без входа. Они возвращают сокращённое представление,
которое не содержит ни контактных данных, ни идентификатора приглашения, а
submitByToken условно погашает ссылку, поэтому две отправки из одного письма
приводят к одному отзыву и одному отказу, а не к двум отзывам.

Фильтрация отзывов

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

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

  • Отсутствуют

Вхождение в решение

  • production

Источник

modules/repositories/business/rp-reviews