Documentation

积分系统

通过积分控制 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", zh: "100 积分" }),
  description: t({ en: "Perfect for temporary testing", zh: "适合临时测试" }),
},

key 名称自定义(如 credit_100),后续在后台创建积分包时填入这个 key。

创建积分包

登录管理员账号,打开后台的「积分包管理」页面,点击添加。先输入上一步定义的翻译 key,校验通过后填写积分数量、价格、Price ID 等信息。

Price ID 需要先在支付平台(Stripe 等)创建对应的 Price,再复制过来。

上架

将 Active 开关打开,积分包会出现在用户的积分商店中。

Credit Package Management

注意

积分包依赖支付系统。请先完成 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
}

订阅用户每次续费都会收到新的积分,过期时间对齐计费周期。

消耗规则

扣除积分时按以下优先级消耗:

  1. 每日领取的积分(最先消耗)
  2. 有过期时间的积分(按过期时间从近到远)
  3. 永久积分(最后消耗)

余额不足时,系统会弹出积分不足的提示,引导用户购买积分包。

配置参考

所有积分相关的环境变量,也可以在后台配置面板中修改。

Credit Configuration

环境变量类型默认值说明
VITE_CREDIT_ENABLEbooleanfalse开启积分系统
VITE_CREDIT_ALLOW_FREE_USER_PURCHASEbooleanfalse允许免费用户购买积分包
VITE_CREDIT_SIGNUP_BONUS_ENABLEDbooleanfalse开启注册赠送
VITE_CREDIT_SIGNUP_BONUS_AMOUNTnumber0注册赠送数量
VITE_CREDIT_SIGNUP_BONUS_EXPIRE_DAYSnumber30注册赠送过期天数
VITE_CREDIT_DAILY_ENABLEDbooleanfalse开启每日领取
VITE_CREDIT_DAILY_AMOUNTnumber0每日领取数量

目录