- Рейтинг формируется только у айдолов (
is_idol = true) - Диапазон: 0–100, хранится как
decimal(5,2)(до двух знаков после запятой) - Начальное значение при создании: 20.00
- Порог «низкого рейтинга»: 30 (настраивается в PlatformSettings →
rating_low_threshold) - При пересечении порога 30 вниз айдол получает уведомление
LowRatingWarningNotification
| Событие | Дельта | Триггер |
|---|---|---|
review_5star |
+0.8 | Заказчик оставил отзыв 5★ |
review_4star |
+0.4 | Заказчик оставил отзыв 4★ |
review_3star |
0 | Заказчик оставил отзыв 3★ |
review_2star |
−0.5 | Заказчик оставил отзыв 2★ |
review_1star |
−1.2 | Заказчик оставил отзыв 1★ |
order_completed |
+0.2 | Заказ завершён (оба подтвердили) или завершён автоматически/администратором |
report_accepted |
−2.0 | Жалоба на айдола принята администратором (reviewed) |
review_dispute_approved |
+0.6 | Спор по отзыву одобрен администратором (отзыв скрыт) |
admin_manual |
произвольная | Ручное изменение администратором |
Применяется только к положительным дельтам. Чем выше рейтинг, тем медленнее он растёт:
effectiveDelta = max(0.01, round(baseDelta × (100 − currentRating) / 80, 2))
Отрицательные дельты (штрафы) применяются в полном размере без изменений.
| Текущий рейтинг | Эффективная дельта |
|---|---|
| 20 | +0.80 |
| 50 | +0.50 |
| 75 | +0.25 |
| 90 | +0.10 |
| 95 | +0.05 |
| 100 | +0.01 (минимум) |
- Один отзыв на пару (reviewer, idol) — уникальный индекс в БД
- Отзыв можно оставить только на завершённый заказ (
status = completed) - Публикация постов на рейтинг не влияет
- Отмена заказа айдолом не штрафует напрямую — заказчик может подать репорт
Каждое изменение записывается в таблицу idol_rating_logs:
user_id— айдолevent— название событияdelta— фактически применённая дельта (уже с учётом асимптотики)note— примечание (дляadmin_manual)created_at— время изменения
Просмотр логов в админке: Рейтинг айдолов (с фильтрами по айдолу и дате).