Система кредитов
Управляйте использованием AI-функций через кредиты с поддержкой бонуса за регистрацию, ежедневных начислений, подписочных начислений и отдельной покупки
Кредиты - это расчетная единица, которую пользователь расходует при вызове AI-функций: генерации текста, изображений, синтеза речи, видео и т. д. Каждый вызов списывает соответствующее число кредитов, а при недостаточном балансе использование становится недоступным.
Включить кредиты
Добавьте в .env:
VITE_CREDIT_ENABLE=trueИли включите в панели конфигурации в админке.
Источники кредитов
Пользователь может получать кредиты следующими способами:
| Источник | Описание |
|---|---|
| Бонус за регистрацию | Выдается автоматически новым пользователям, можно задать количество и срок действия |
| Ежедневное начисление | Автоматически начисляется каждый день после входа, добавляется к балансу |
| Начисление по подписке | Выдается при активации или продлении подписки, настраивается в payment-config.ts |
| Покупка кредитного пакета | Пользователь покупает отдельный пакет в магазине кредитов, пакет управляется из админки |
| Выдача администратором | Админ вручную добавляет кредиты выбранному пользователю |
Бонус за регистрацию
VITE_CREDIT_SIGNUP_BONUS_ENABLED=true
VITE_CREDIT_SIGNUP_BONUS_AMOUNT=100
VITE_CREDIT_SIGNUP_BONUS_EXPIRE_DAYS=30Новый пользователь автоматически получает 100 кредитов, которые сгорают через 30 дней. Если EXPIRE_DAYS не задан, кредиты не истекают.
Ежедневное начисление
VITE_CREDIT_DAILY_ENABLED=true
VITE_CREDIT_DAILY_AMOUNT=10Пользователь может получать 10 кредитов каждый день. Система автоматически проверяет, был ли бонус уже получен.
Кредитные пакеты
Кредитные пакеты позволяют пользователю покупать кредиты по мере необходимости. Их можно создавать и редактировать в панели администрирования.
Определите перевод
Добавьте описание пакета в src/config/locale/credit-packages.content.ts:
credit_100: {
name: t({ en: "100 Credits", ru: "100 кредитов" }),
description: t({ en: "Perfect for temporary testing", ru: "Подходит для временного тестирования" }),
},Имя ключа можно выбрать самостоятельно, например credit_100. Затем этот key указывается при создании пакета в админке.
Создайте пакет
Войдите как администратор, откройте страницу «Управление кредитными пакетами» в админке и нажмите добавление. Сначала введите key перевода из предыдущего шага, затем после проверки заполните количество кредитов, цену и Price ID.
Price ID сначала нужно создать на платежной платформе, например Stripe, а затем вставить сюда.
Внимание
Кредитные пакеты зависят от платежной системы. Сначала завершите настройку Stripe или другого платежного канала.
Разрешить покупку для бесплатных пользователей
По умолчанию покупать кредитные пакеты могут только подписчики. Если вы хотите разрешить это бесплатным пользователям:
VITE_CREDIT_ALLOW_FREE_USER_PURCHASE=trueКредиты в подписке
В подписке можно настроить автоматическую выдачу кредитов после каждого платежа. Это задается в src/config/payment-config.ts:
{
id: "pro",
planType: "subscription",
credit: {
amount: 100, // начислять 100 кредитов за оплату
expireDays: 31, // истекают через 31 день
},
// ...prices
}При каждом продлении подписки пользователь получает новые кредиты, а срок действия синхронизируется с платежным циклом.
Правила расходования
При списании кредиты расходуются в таком приоритете:
- Кредиты, полученные ежедневно
- Кредиты с ограниченным сроком действия, по ближайшему сроку истечения
- Бессрочные кредиты
Если баланса не хватает, система покажет подсказку о нехватке кредитов и предложит купить пакет.
Справка по настройке
Все переменные, связанные с кредитами, можно менять и в панели конфигурации админки.

| Переменная окружения | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
VITE_CREDIT_ENABLE | boolean | false | Включить систему кредитов |
VITE_CREDIT_ALLOW_FREE_USER_PURCHASE | boolean | false | Разрешить бесплатным пользователям покупать пакет |
VITE_CREDIT_SIGNUP_BONUS_ENABLED | boolean | false | Включить бонус за регистрацию |
VITE_CREDIT_SIGNUP_BONUS_AMOUNT | number | 0 | Количество кредитов за регистрацию |
VITE_CREDIT_SIGNUP_BONUS_EXPIRE_DAYS | number | 30 | Срок действия бонуса в днях |
VITE_CREDIT_DAILY_ENABLED | boolean | false | Включить ежедневное начисление |
VITE_CREDIT_DAILY_AMOUNT | number | 0 | Количество ежедневных кредитов |
