29 lines
2.1 KiB
Markdown
29 lines
2.1 KiB
Markdown
# Этап 1g. Продления
|
||||
|
|
|
|||
|
|
Статус: не начат.
|
|||
|
|
|
|||
|
|
## 1. Цель
|
|||
|
|
|
|||
|
|
Ключи продлеваются сами — с баланса, затем с демо-карты; льготный период, истечение и напоминания работают.
|
|||
|
|
|
|||
|
|
## 2. Входит
|
|||
|
|
|
|||
|
|
1. Задачи `renewals`, `expiry`, `reminders`, `reconcile` ([04-billing.md](../04-billing.md), разделы 6–7; [02-architecture.md](../02-architecture.md), раздел 7).
|
|||
|
|
2. Автопродление: галочка на ключе, «Продлить сейчас»; списание с баланса, затем с демо-карты, повторы. Неуспешное списание с демо-карты включается в админке ([D-027](../decisions/D-027-demo-payments.md)).
|
|||
|
|
3. Продления без оплаты: коллекция `key-extensions`, «Продлить вручную» в админке ([04-billing.md](../04-billing.md), раздел 6.4).
|
|||
|
|
4. Кабинет: «Следующее списание», «Продлится автоматически через N дней» или «Осталось N дней», бейдж «Истекает».
|
|||
|
|
5. Шаблоны на 5 языках: `renewal_reminder`, `expiry_reminder`, `renewal_succeeded`, `renewal_failed`, `grace_started`, `key_expired`.
|
|||
|
|
|
|||
|
|
## 3. Перед стартом
|
|||
|
|
|
|||
|
|
Этап 1f готов.
|
|||
|
|
|
|||
|
|
## 4. Готово, когда
|
|||
|
|
|
|||
|
|
Автотесты проходят сценарии:
|
|||
|
|
|
|||
|
|
1. Продление с баланса за 24 часа до окончания; денег нет → заказ ждёт → пополнение само оплачивает продление.
|
|||
|
|
2. Продление с демо-карты; неуспешное списание → повторы → льготный период.
|
|||
|
|
3. Переходы в льготный период и «истёк» с письмами в журнал.
|
|||
|
|
4. Параллельные запуски задач не продлевают ключ дважды.
|
|||
|
|
5. `reconcile` не находит расхождений.
|