# Отзывы

`/admin/shop/reviews` — модерация отзывов о товарах.

## Откуда берутся

Отзывы оставляются с публичной страницы товара через POST `/shop/reviews/add`. Поля: автор, email, оценка (1–5), текст. Письмо клиенту о принятии — не отправляется (можно подписать свой плагин на `shop.review.created`, если нужно).

По умолчанию новый отзыв в статусе `pending` (на модерации) и не показывается на сайте.

## Список

Табы со счётчиками:

| Таб | Условие |
|---|---|
| Все | Все отзывы |
| На модерации | `is_approved = false` |
| Опубликованные | `is_approved = true` |

Колонки: автор, товар, оценка (звёзды), текст, статус, дата.

## Действия

- **Опубликовать / Снять с публикации** — переключает `is_approved`. После публикации отзыв появляется в карточке товара на сайте.
- **Удалить** — безвозвратное удаление.

## Авто-пересчёт рейтинга товара

При публикации/снятии/удалении отзыва автоматически пересчитываются `rating_avg` и `rating_count` у товара. В админ-таблице товаров эти поля отображаются в колонке «Рейтинг» (формат `4.7 (12)`).

## База

`shop_reviews`: `product_id`, `author_name`, `author_email`, `rating` (1–5), `body`, `is_approved`, `created_at`.

## Расширение

Можно подписаться на `shop.review.created` (планируется в v1.2), чтобы:
- слать админу email о новом отзыве;
- авто-публиковать отзывы от верифицированных покупателей (`user_id` совпадает с заказчиком этого товара);
- скрывать отзывы с определёнными словами.
