{% if error_message %}
{{ error_message }}
{% endif %} {% if success_message %}
{{ success_message }}
{% endif %}
Оценки {% for star in [5,4,3,2,1] %} {% endfor %}

Автоответ

{% if auto_reply_enabled %} Включён {% else %} Выключен {% endif %}

По требованию WB — 1 ответ каждые 10 минут. Очередь обрабатывается автоматически.

{% if api_cooldown_seconds_left and api_cooldown_seconds_left > 0 %}

⚠ API на паузе: ещё {{ api_cooldown_seconds_left }} сек.

{% endif %}

Пулы автоответов

Для каждого нового отзыва текст выбирается случайно из пула.

Ответы для 5★
Ответы для 4★

Очередь автоответов

{% if auto_reply_queue %} {{ auto_reply_queue|length }} {% endif %}
{% if auto_reply_queue %}
{% for item in auto_reply_queue %} {% endfor %}
# ID отзыва Дата оценки Оценка Товар Покупатель
{{ loop.index }} {{ item.get("id") or "—" }} {{ item.get("review_created_at")|format_log_datetime if item.get("review_created_at") else "—" }} {{ item.rating }}★ {{ item.get("product_name") or "—" }} {% if item.get("nm_id") %} #{{ item.nm_id }} {% endif %} {{ item.get("user_name") or "—" }}
{% else %}
Очередь пуста — новые отзывы будут загружены автоматически.
{% endif %}

Журнал автоответов

последние 100
{% if auto_reply_logs %}
{% for log in auto_reply_logs %} {% endfor %}
Дата лога Дата оценки Оценка Товар Покупатель Текст отзыва Статус ID отзыва Ответ
{{ log["created_at"]|format_log_datetime }} {{ log["review_created_at"]|format_log_datetime if log["review_created_at"] else "—" }} {{ log["rating"] }}★ {{ log["product_name"] or "—" }} {% if log["nm_id"] %} #{{ log["nm_id"] }} {% endif %} {{ log["user_name"] or "—" }} {{ log["review_text"] or "—" }} {% if log["status"] == "sent" %} ✓ Отправлен {% elif log["status"] == "skipped" %} — Пропущен {% else %} ✗ Ошибка {% endif %} {{ log["review_id"] or "—" }} {{ log["reply_text"] or "—" }}
{% else %}
Пока нет записей автоответа.
{% endif %}
{% if reviews %} {% set unanswered_count = reviews | rejectattr('answer') | list | length %} {% set answered_count = reviews | selectattr('answer') | list | length %}

{{ "Неотвеченные отзывы" if current_filter == 'unanswered' else "Все отзывы" }}

Оценки: {{ selected_stars_display|join(', ') }}★.

{{ reviews|length }} отзывов загружено
{% if unanswered_count > 0 %}
{{ unanswered_count }} без ответа
{% endif %} {% if answered_count > 0 %}
{{ answered_count }} отвечено
{% endif %} {% for star in [5,4,3,2,1] %} {% set cnt = reviews | selectattr('rating', 'equalto', star) | list | length %} {% if cnt > 0 %}
{{ cnt }} {{ star }}★
{% endif %} {% endfor %}
{% if current_filter == 'unanswered' and has_token %}
{% for star in selected_stars_display %} {% endfor %} {% for review in reviews %} {% endfor %}
Допустимая длина: 2–5000 символов.
{% endif %}
{% for review in reviews %}
{{ review.product_name or 'Без названия' }} ★ {{ review.rating }}
{{ review.user_name or 'Покупатель' }} {{ review.created_at|format_datetime }}
{% if review.text %}

{{ review.text }}

{% endif %}
{% if review.pros %}
Достоинства
{{ review.pros }}
{% endif %} {% if review.cons %}
Недостатки
{{ review.cons }}
{% endif %}
{% if review.answer %}

Ответ: {{ review.answer }}

{% else %}

Без ответа

{% endif %} {% if has_token %}
Ответить на отзыв
{% for star in selected_stars_display %} {% endfor %}
{% endif %}
{% endfor %}
{% elif current_filter %}
Отзывы с выбранными оценками ({{ selected_stars_display|join(', ') }}★) не найдены.
{% endif %}