spectaxi

Внутренний рейтинг

Не показывается в UI. Считается отдельно для роли клиента и исполнителя (rating_as_client, rating_as_executor). Публичные звёзды — сущность reviews, это другой контур. В поиске рейтинг не участвует: список сортируется по расстоянию и цене, клиент сужает фильтрами.

Цифры утверждены. Один паттерн.

Шкала

Три класса

1) Успех

Оба подтвердили исполнение (completed) и клиент сам нажал «работа выполнена» (не авто).

Кому Балл
Исполнитель +5
Клиент +3

На заказ плюс один раз.

Автоподтверждение молчащего клиента: исполнителю +5, клиенту +3 нет, клиенту −3 (late_confirm).

Автоподтверждение молчащего исполнителя: заказ всё равно completed в пользу исполнителя (работа по сути сделана). Исполнителю +5 за успех и −3 (late_confirm). Клиенту +3 (он сам нажал «работа выполнена»).

Админ закрыл спор в completed — как успех (+5 / +3), без late_confirm.

2) Системный дедлайн (без коэффициента стадии)

Всегда −3 виновной стороне:

Событие event_type Кому
Таймаут 5 минут на запрос (не ответил = отказ) timeout (response_timeout) исполнитель
Не подтвердил условия за 1 сутки timeout (terms_timeout) исполнитель
Автоподтверждение: сторона молчала сутки после первого «работа выполнена» late_confirm молчавший (клиент или исполнитель)
Не оплатил безопасную сделку за 1 сутки (заказ возвращается в поиск) payment_timeout клиент

Отмена на published без причины — 0. Снятие запроса (withdrawn) — 0. Автоотказ (auto_declined: исполнитель принял другой срочный заказ) — 0 обеим сторонам. Системная отмена «исполнитель не найден» и отмена админом — 0.

3) Штраф по причине

Сторона, на которую указывает код. Тяжесть × стадия, округление как round, минимум 1 если балл ≠ 0.

Тяжесть:

Уровень Балл до коэффициента
лёгкий −3
средний −6
тяжёлый −9

Стадия:

Статус Коэффициент
published 0.5
in_negotiation, awaiting_payment 1.0
in_progress плановый до planned_start_at (отмена) 1.0
in_progress, completed (спор) 1.5

Клиент нажал:

code Тяжесть С кого
found_another лёгкий клиент
price_disagreement лёгкий клиент
no_contact средний исполнитель
late_or_no_show тяжёлый исполнитель
wrong_equipment тяжёлый исполнитель
quality тяжёлый исполнитель
other — 0, очередь админу

Исполнитель нажал:

code Тяжесть С кого
busy_or_broken лёгкий исполнитель
price_disagreement лёгкий исполнитель
unsafe лёгкий клиент
no_contact_client средний клиент
site_not_ready средний клиент
scope_changed средний клиент
not_paid тяжёлый клиент
other — 0, очередь админу

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

other: событие pending_admin, delta = 0; админ ставит дельту через POST /admin/rating-events/{id}/resolve.

После выплаты (captured) админ в споре не двигает деньги; санкция к пользователю — через этот рейтинг и/или блокировку.