Lead Radar: исходный код
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
commit
9749da5ae7
201 files changed
+97685
No files matched your search
@@ -0,0 +1,60 @@
|
||||
# Биллинг
|
||||
|
||||
Как считаются счета и подписка. Код: `apps/api/src/billing/`, тесты: `apps/api/src/billing.int.test.ts`.
|
||||
Все даты считаются по времени Еревана.
|
||||
|
||||
## Две модели
|
||||
|
||||
| | Фикс | % от комиссии |
|
||||
| --- | --- | --- |
|
||||
| Когда платят | вперёд, за следующий месяц | после, за прошлый календарный месяц |
|
||||
| Когда выставляется счёт | за 7 дней до окончания подписки | 1-го числа |
|
||||
| Срок оплаты | дата окончания подписки | 8-е число |
|
||||
| Что даёт оплата | подписка продлевается на месяц | подписка действует до 8-го числа следующего месяца |
|
||||
|
||||
Месяц без сделок на модели «%»: счёт на 0 закрывается сам, подписка продлевается.
|
||||
Минимального платежа нет — это открытый вопрос ТЗ.
|
||||
|
||||
Плата за установку (Team 500 $, Agency 750 $) начисляется один раз отдельным счётом. Её оплата
|
||||
дату подписки не двигает; исключение — новая компания на модели «%», у которой первого месячного
|
||||
счёта нет: её подписка стартует с оплаты установки.
|
||||
|
||||
## Комиссия в разных валютах
|
||||
|
||||
Комиссию по сделке агент вводит в любой валюте, счёт выставляется в долларах. Курсы задаёт
|
||||
суперадмин: «Счета» → «Курсы валют». В счёте сохраняется курс на момент выставления и расшифровка
|
||||
по сделкам — клиент видит её в разделе «Подписка».
|
||||
|
||||
## Смена тарифа
|
||||
|
||||
- Клиент меняет тариф и модель в разделе «Подписка». Изменение вступает в силу со следующего
|
||||
расчётного месяца: на фиксе — на следующий день после окончания оплаченного периода, на «%» —
|
||||
с 1-го числа. До этого в кабинете видно «Запланировано с такой-то даты», смену можно отменить.
|
||||
- Если оплаченного периода нет (подписка ещё не начиналась или уже закончилась), тариф меняется сразу.
|
||||
- Суперадмин меняет тариф в карточке компании сразу.
|
||||
- Переход на тариф меньше, чем участников в компании, запрещён.
|
||||
- При переходе с фикса на «%» сделки, закрытые до перехода, в счёт не попадают. При уходе с «%»
|
||||
посреди месяца сделки с начала месяца закрываются отдельным счётом.
|
||||
|
||||
## Просрочка и напоминания
|
||||
|
||||
Напоминания уходят руководителю в бот не раньше 10:00: за 7, 3 и 1 день до окончания; после
|
||||
окончания — каждый день с числом оставшихся дней; при ограничении доступа — один раз.
|
||||
Через 15 дней (срок меняет суперадмин) уведомления о лидах останавливаются, CRM работает только
|
||||
на чтение. Раздел «Подписка» открыт всегда. После отметки оплаты доступ возвращается сразу.
|
||||
|
||||
## Оплата
|
||||
|
||||
Сейчас работает ручной режим: суперадмин в разделе «Счета» нажимает «Отметить оплату».
|
||||
|
||||
Онлайн-оплата подключается без переделки биллинга. Нужно написать класс по контракту
|
||||
`apps/api/src/billing/provider.ts` (создать платёж → ссылка на страницу оплаты; разобрать и
|
||||
проверить уведомление провайдера) и передать его в `buildApp({ payments })` в `apps/api/src/main.ts`.
|
||||
После этого у клиента в счёте появится кнопка «Оплатить», а провайдер будет присылать уведомления
|
||||
на `/api/payments/webhook/<имя провайдера>`.
|
||||
|
||||
## Что не решено
|
||||
|
||||
- Провайдер эквайринга и валюта списания.
|
||||
- Минимальный платёж на модели «%».
|
||||
- Откуда брать курс: сейчас его вручную задаёт суперадмин.
|
||||
Reference in new issue
Block a user