34 lines
3.6 KiB
Markdown
34 lines
3.6 KiB
Markdown
# D-025. Реферальный бонус — дни срока ключа
|
||||
|
|
|
|||
|
|
Статус: принято, 21.10.2026. Заменяет денежный бонус из макета (Q-02). Крайние случаи — предложение по Q-19.
|
|||
|
|
|
|||
|
|
## Контекст
|
|||
|
|
|
|||
|
|
В макете «месяц в подарок» начисляется обоим деньгами на баланс: 2 499 ₽ у dedicated и 699 ₽ у mass. Для этого нужна сумма в каждой валюте каждого сайта, а бонус уходит в ближайшее списание, в том числе за другой тариф.
|
|||
|
|
|
|||
|
|
## Решение
|
|||
|
|
|
|||
|
|
1. Бонус — дни срока ключа, без денег. Число дней — настройка сайта `referralBonusDays`, по умолчанию 30.
|
|||
|
|
2. Приглашённый получает дни на ключ, который купил заказом, выполнившим условие (первый оплаченный `new_key`).
|
|||
|
|
3. Пригласивший получает дни на свой последний купленный ключ.
|
|||
|
|
4. Условие, проверка самоприглашений и границы сайта прежние ([04-billing.md](../04-billing.md), раздел 11).
|
|||
|
|
5. Начисление — продление без оплаты. Тот же механизм у «Продлить вручную» в админке: запись в коллекции `key-extensions` ([04-billing.md](../04-billing.md), раздел 6.4).
|
|||
|
|
|
|||
|
|
## Крайние случаи (предложение, Q-19)
|
|||
|
|
|
|||
|
|
1. «Месяц» приглашённому — тоже 30 дней: одна настройка на обе стороны.
|
|||
|
|
2. Ключ ещё готовится (`provisioning`) — дни добавятся при выдаче: срок идёт с выдачи.
|
|||
|
|
3. «Последний ключ» — купленный последним среди неистёкших и неотменённых (`provisioning`, `active`, `grace`). Ключ в льготном периоде после начисления снова `active`.
|
|||
|
|
4. У пригласившего такого ключа нет — дни ждут и добавятся к его следующему ключу.
|
|||
|
|
5. Возврат по заказу приглашённого бонус пригласившего не отменяет; злоупотребления разбирает администратор.
|
|||
|
|
|
|||
|
|
## Рассмотренные варианты
|
|||
|
|
|
|||
|
|
1. Деньги на баланс, как в макете: суммы в каждой валюте, бонус уходит на любое списание.
|
|||
|
|
2. Дни на ключ с ближайшей датой окончания: пользователь выбрал последний ключ.
|
|||
|
|
|
|||
|
|
## Последствия
|
|||
|
|
|
|||
|
|
1. В `sites` вместо сумм по валютам `referralBonus` — число дней `referralBonusDays`. Тип движения `referral_bonus` в `ledger-entries` не нужен.
|
|||
|
|
2. Новая коллекция `key-extensions` — продления без оплаты: бонус и компенсация ([03-data-model.md](../03-data-model.md), раздел 5.4). У приглашения — ключи обеих сторон.
|
|||
|
|
3. Кабинет: условия на странице «Реферальная программа» — в днях; в истории платежей строка «Реферальный бонус» показывает «+30 дней» вместо суммы ([07-frontend.md](../07-frontend.md), раздел 7).
|