Files
veilix.app/docs/decisions/D-025-referral-days.md
andreypr207andClaude Opus 5.5 0cad9bae18 Документация: R-17 сделано, Q-19 решён
- R-17: location /_next/hmr во всех dev-блоках nginx, горячая
  перезагрузка держится без переподключений; этап 1a закрыт полностью.
- Q-19: крайние случаи реферального бонуса днями подтверждены (D-025).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 16:11:04 +02:00

3.5 KiB
Raw Permalink Blame History

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, раздел 11).
  5. Начисление — продление без оплаты. Тот же механизм у «Продлить вручную» в админке: запись в коллекции key-extensions (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, раздел 5.4). У приглашения — ключи обеих сторон.
  3. Кабинет: условия на странице «Реферальная программа» — в днях; в истории платежей строка «Реферальный бонус» показывает «+30 дней» вместо суммы (07-frontend.md, раздел 7).