You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

31 KiB

AI 算力积分计费系统方案

文档版本:v1.0
创建日期:2025-01-15
最后更新:2025-01-15


目录

  1. 方案概述
  2. 积分体系设计
  3. 充值套餐方案
  4. 服务积分消耗标准
  5. 成本分析
  6. 用户福利政策
  7. 积分有效期规则
  8. 数据库设计
  9. API 接口设计
  10. 业务流程
  11. 运营策略建议

方案概述

背景

Jointo视频工作台采用 AI 算力积分 作为唯一的计费方式,取消传统的订阅层级(免费版/专业版/企业版)。用户通过充值获得积分,使用 AI 功能时消耗相应积分。

核心目标

  1. 成本可控:确保积分定价覆盖 API 成本 + 合理利润空间(30-50%)
  2. 用户友好:新用户获得足够积分体验核心功能,降低使用门槛
  3. 激励充值:通过阶梯式优惠鼓励用户大额充值
  4. 灵活调整:支持根据市场变化和成本波动灵活调整定价

设计原则

  • 透明定价:每项服务的积分消耗清晰明确
  • 按需付费:用户只为实际使用的功能付费
  • 公平合理:高成本服务(视频生成)消耗更多积分,低成本服务(字幕生成)消耗较少
  • 用户体验优先:避免过度复杂的计费规则

积分体系设计

基础兑换比例

标准比例:1 元人民币 = 10 积分

选择理由

  • 计算简单,用户心理接受度高
  • 便于后期调整单项服务的积分消耗
  • 与主流平台(如阿里云、腾讯云)的积分体系接近

积分类型

积分类型 获取方式 有效期 说明
充值积分 用户付费充值 永久有效 主要积分来源,不过期
赠送积分 新用户注册、活动奖励 1 个月 激励用户使用平台
活动积分 限时活动、推广任务 30-90 天 短期运营活动

积分消耗优先级

当用户同时拥有多种类型积分时,按以下顺序扣除:

  1. 即将过期的积分(按过期时间排序)
  2. 赠送积分
  3. 充值积分

充值套餐方案

套餐列表

套餐名称 充值金额 获得积分 单价(元/积分) 额外赠送 推荐度
体验套餐 ¥10 100 ¥0.100 -
进阶套餐 ¥50 550 ¥0.091 +10%
高级套餐 ¥100 1,200 ¥0.083 +20%
专业套餐 ¥500 6,500 ¥0.077 +30%

套餐使用场景

体验套餐(¥10 = 100 积分)

适合人群:新用户、轻度使用者

可使用次数

  • 生成 50 张图片
  • 生成 1 个 5 秒视频
  • 生成 5 个 10 秒音效
  • 配音 10,000 字
  • 生成 100 分钟字幕

进阶套餐(¥50 = 550 积分)

适合人群:中度使用者、内容创作者

可使用次数

  • 生成 275 张图片
  • 生成 5 个 5 秒视频
  • 生成 27 个 10 秒音效
  • 混合使用多种功能

高级套餐(¥100 = 1,200 积分) 推荐

适合人群:重度使用者、专业创作者

可使用次数

  • 生成 600 张图片
  • 生成 12 个 5 秒视频
  • 生成 60 个 10 秒音效
  • 混合使用多种功能

专业套餐(¥500 = 6,500 积分)

适合人群:企业用户、工作室

可使用次数

  • 生成 3,250 张图片
  • 生成 65 个 5 秒视频
  • 生成 325 个 10 秒音效
  • 大规模内容生产

服务积分消耗标准

图片生成服务

基础定价:2 积分/张

分辨率 积分消耗 说明
512x512 1 积分 低分辨率,快速预览
1024x1024 2 积分 标准分辨率(推荐)
1024x1792 3 积分 竖屏高清
1792x1024 3 积分 横屏高清
2048x2048 4 积分 超高清(如果支持)

模型差异

  • Stable Diffusion:标准价格
  • DALL-E 3:标准价格 × 1.5
  • Midjourney:标准价格 × 2(如果接入)

视频生成服务

基础定价:100 积分/5秒

视频类型 时长 积分消耗 说明
文本转视频 5秒 100 积分 基础视频生成
文本转视频 10秒 200 积分 长视频
图片转视频 5秒 100 积分 图片动画化
图片转视频 10秒 200 积分 长动画
关键帧动画 5秒 150 积分 多关键帧插值
视频融合 5秒 120 积分 两段视频融合
视频替换 5秒 80 积分 局部替换

分辨率加成

  • 720p:标准价格
  • 1080p:标准价格 × 1.5
  • 4K:标准价格 × 3

帧率加成

  • 24fps:标准价格
  • 30fps:标准价格 × 1.2
  • 60fps:标准价格 × 1.5

音效生成服务

基础定价:20 积分/10秒

时长 积分消耗 说明
5秒 10 积分 短音效
10秒 20 积分 标准音效
30秒 50 积分 长音效
60秒 90 积分 背景音乐

音质加成

  • 标准音质(44.1kHz):标准价格
  • 高音质(48kHz):标准价格 × 1.2
  • 无损音质(96kHz):标准价格 × 1.5

配音生成服务(TTS)

基础定价:1 积分/100字

字数 积分消耗 说明
0-100字 1 积分 最小计费单位
101-500字 5 积分 短文本
501-1000字 10 积分 中等文本
1001-5000字 50 积分 长文本

语音类型

  • 标准语音:标准价格
  • 情感语音:标准价格 × 1.5
  • 名人声音克隆:标准价格 × 3(如果支持)

语言加成

  • 中文/英文:标准价格
  • 小语种:标准价格 × 1.2

字幕生成服务(STT)

基础定价:1 积分/分钟

时长 积分消耗 说明
0-1分钟 1 积分 最小计费单位
1-10分钟 10 积分 短视频
10-30分钟 30 积分 中等视频
30-60分钟 60 积分 长视频

功能加成

  • 基础转写:标准价格
  • 智能断句:标准价格 × 1.2
  • 多语言识别:标准价格 × 1.5
  • 说话人分离:标准价格 × 2

成本分析

API 成本估算

基于主流 AI 服务提供商的定价(2025年1月):

服务类型 API 成本(USD) API 成本(CNY) 积分消耗 积分价值(CNY) 利润率
图片生成(1024x1024) $0.02 ¥0.14 2 积分 ¥0.20 43%
视频生成(5秒) $1.00 ¥7.00 100 积分 ¥10.00 43%
音效生成(10秒) $0.20 ¥1.40 20 积分 ¥2.00 43%
配音生成(100字) $0.0015 ¥0.01 1 积分 ¥0.10 900%
字幕生成(1分钟) $0.006 ¥0.04 1 积分 ¥0.10 150%

汇率:1 USD = 7 CNY(参考汇率)
积分价值:1 积分 = ¥0.10(基础套餐)

利润空间分析

高成本服务(图片、视频、音效)

  • 目标利润率:30-50%
  • 实际利润率:43%
  • 评估 符合预期,可持续运营

低成本服务(配音、字幕)

  • 目标利润率:100-500%
  • 实际利润率:150-900%
  • 评估 高利润率,但用户感知价值高,定价合理

成本优化策略

  1. 批量采购:与 AI 服务商谈判批量折扣(预计可降低 10-20% 成本)
  2. 自建模型:对于高频服务(如图片生成),考虑自建 Stable Diffusion 集群
  3. 缓存机制:相同参数的生成结果可复用,降低重复调用成本
  4. 动态定价:根据 API 成本波动,季度调整积分消耗标准

用户福利政策

新用户注册福利

赠送积分:100 积分
有效期:1 个月
使用限制:无限制,可用于任何 AI 功能

体验能力

  • 生成 50 张标准图片
  • 生成 1 个 5 秒视频
  • 生成 5 个 10 秒音效
  • 配音 10,000 字
  • 生成 100 分钟字幕

首次充值奖励

条件:用户首次充值任意金额
奖励:额外赠送 20% 积分
示例:首次充值 ¥50,获得 550 + 110 = 660 积分

邀请奖励

邀请人奖励:被邀请人首次充值后,邀请人获得 10% 返利积分
被邀请人奖励:注册后额外获得 50 积分

示例

  • 用户 A 邀请用户 B
  • 用户 B 注册获得 100 + 50 = 150 积分
  • 用户 B 充值 ¥100,获得 1,200 积分
  • 用户 A 获得 120 积分返利

会员日活动

时间:每月 15 日
优惠:充值额外赠送 10%
叠加规则:可与套餐赠送叠加

示例:会员日充值 ¥100 高级套餐

  • 基础积分:1,000
  • 套餐赠送(+20%):200
  • 会员日赠送(+10%):100
  • 总计:1,400 积分

积分有效期规则

充值积分

有效期:永久有效
说明:用户付费购买的积分不设过期时间,保障用户权益

赠送积分

有效期:1 个月
说明:包括新用户注册赠送、首次充值奖励、邀请奖励等

过期提醒

  • 过期前 7 天:邮件 + 站内信提醒
  • 过期前 3 天:邮件 + 站内信 + 短信提醒
  • 过期前 1 天:邮件 + 站内信 + 短信提醒

活动积分

有效期:30-90 天(根据活动规则)
说明:限时活动、推广任务获得的积分

积分冻结规则

冻结场景

  • 用户账号异常(如刷单、作弊)
  • 充值退款纠纷期间
  • 系统检测到异常消耗行为

解冻条件

  • 账号安全验证通过
  • 纠纷解决
  • 异常行为排查完成

数据库设计

credit_transactions(积分交易记录表)

CREATE TABLE credit_transactions (
    transaction_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    user_id BIGINT NOT NULL REFERENCES users(user_id) ON DELETE CASCADE,

    -- 交易信息
    transaction_type TEXT NOT NULL CHECK (transaction_type IN ('recharge', 'consume', 'refund', 'gift', 'reward')),
    amount INTEGER NOT NULL, -- 正数为增加,负数为减少
    balance_after INTEGER NOT NULL, -- 交易后余额

    -- 积分类型
    credit_type TEXT NOT NULL CHECK (credit_type IN ('paid', 'gift', 'activity')),
    expires_at TIMESTAMPTZ, -- 积分过期时间(充值积分为 NULL)

    -- 关联信息
    order_id BIGINT REFERENCES orders(order_id) ON DELETE SET NULL, -- 充值订单
    ai_job_id BIGINT REFERENCES ai_jobs(job_id) ON DELETE SET NULL, -- AI 任务
    description TEXT, -- 交易描述
    metadata JSONB, -- 额外信息

    -- 时间戳
    created_at TIMESTAMPTZ NOT NULL DEFAULT now(),

    -- 索引
    CONSTRAINT credit_transactions_amount_check CHECK (amount != 0)
);

-- 索引
CREATE INDEX idx_credit_transactions_user_id ON credit_transactions (user_id, created_at DESC);
CREATE INDEX idx_credit_transactions_type ON credit_transactions (transaction_type, created_at DESC);
CREATE INDEX idx_credit_transactions_order_id ON credit_transactions (order_id) WHERE order_id IS NOT NULL;
CREATE INDEX idx_credit_transactions_ai_job_id ON credit_transactions (ai_job_id) WHERE ai_job_id IS NOT NULL;
CREATE INDEX idx_credit_transactions_expires_at ON credit_transactions (expires_at) WHERE expires_at IS NOT NULL;

credit_packages(充值套餐表)

CREATE TABLE credit_packages (
    package_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,

    -- 套餐信息
    package_name TEXT NOT NULL, -- 套餐名称
    amount NUMERIC(10, 2) NOT NULL, -- 充值金额(元)
    credits INTEGER NOT NULL, -- 获得积分
    bonus_credits INTEGER NOT NULL DEFAULT 0, -- 额外赠送积分

    -- 显示信息
    description TEXT, -- 套餐描述
    display_order INTEGER NOT NULL DEFAULT 0, -- 显示顺序
    is_recommended BOOLEAN NOT NULL DEFAULT false, -- 是否推荐

    -- 状态
    is_active BOOLEAN NOT NULL DEFAULT true, -- 是否启用

    -- 时间戳
    created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 索引
CREATE INDEX idx_credit_packages_active ON credit_packages (is_active, display_order);

-- 触发器
CREATE TRIGGER update_credit_packages_updated_at
    BEFORE UPDATE ON credit_packages
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at_column();

credit_pricing(服务定价表)

CREATE TABLE credit_pricing (
    pricing_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,

    -- 服务信息
    service_type TEXT NOT NULL, -- 服务类型:image, video, sound, voice, subtitle
    service_name TEXT NOT NULL, -- 服务名称

    -- 定价信息
    base_credits INTEGER NOT NULL, -- 基础积分消耗
    unit TEXT NOT NULL, -- 计费单位:per_image, per_second, per_minute, per_100_chars

    -- 参数配置
    parameters JSONB, -- 服务参数(分辨率、时长等)
    multiplier NUMERIC(3, 2) DEFAULT 1.0, -- 价格倍数

    -- 状态
    is_active BOOLEAN NOT NULL DEFAULT true,

    -- 时间戳
    created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),

    -- 唯一约束
    CONSTRAINT credit_pricing_unique UNIQUE (service_type, service_name, parameters)
);

-- 索引
CREATE INDEX idx_credit_pricing_service_type ON credit_pricing (service_type, is_active);

-- 触发器
CREATE TRIGGER update_credit_pricing_updated_at
    BEFORE UPDATE ON credit_pricing
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at_column();

初始化数据

-- 插入充值套餐
INSERT INTO credit_packages (package_name, amount, credits, bonus_credits, description, display_order, is_recommended) VALUES
('体验套餐', 10.00, 100, 0, '适合新用户体验', 1, false),
('进阶套餐', 50.00, 500, 50, '额外赠送10%', 2, false),
('高级套餐', 100.00, 1000, 200, '额外赠送20%,推荐', 3, true),
('专业套餐', 500.00, 5000, 1500, '额外赠送30%', 4, false);

-- 插入服务定价
INSERT INTO credit_pricing (service_type, service_name, base_credits, unit, parameters) VALUES
-- 图片生成
('image', '标准图片生成', 2, 'per_image', '{"resolution": "1024x1024", "model": "stable_diffusion"}'),
('image', '低分辨率图片', 1, 'per_image', '{"resolution": "512x512", "model": "stable_diffusion"}'),
('image', '高清图片生成', 3, 'per_image', '{"resolution": "1024x1792", "model": "stable_diffusion"}'),

-- 视频生成
('video', '标准视频生成', 100, 'per_5_seconds', '{"resolution": "720p", "fps": 24, "type": "text2video"}'),
('video', '图片转视频', 100, 'per_5_seconds', '{"resolution": "720p", "fps": 24, "type": "img2video"}'),

-- 音效生成
('sound', '标准音效生成', 20, 'per_10_seconds', '{"quality": "standard"}'),

-- 配音生成
('voice', '标准配音', 1, 'per_100_chars', '{"voice_type": "standard", "language": "zh-CN"}'),

-- 字幕生成
('subtitle', '标准字幕生成', 1, 'per_minute', '{"language": "zh"}');

API 接口设计

1. 查询充值套餐

GET /api/v1/credits/packages

响应

{
  "packages": [
    {
      "package_id": 1,
      "package_name": "体验套餐",
      "amount": 10.0,
      "credits": 100,
      "bonus_credits": 0,
      "total_credits": 100,
      "description": "适合新用户体验",
      "is_recommended": false
    },
    {
      "package_id": 3,
      "package_name": "高级套餐",
      "amount": 100.0,
      "credits": 1000,
      "bonus_credits": 200,
      "total_credits": 1200,
      "description": "额外赠送20%,推荐",
      "is_recommended": true
    }
  ]
}

2. 创建充值订单

POST /api/v1/credits/recharge

请求体

{
  "package_id": 3
}

响应

{
  "order_id": 123456,
  "amount": 100.0,
  "credits": 1200,
  "payment_url": "https://pay.example.com/...",
  "expires_at": "2025-01-15T12:00:00Z"
}

3. 查询积分余额

GET /api/v1/credits/balance

响应

{
  "total_balance": 1500,
  "paid_credits": 1200,
  "gift_credits": 300,
  "expiring_soon": [
    {
      "amount": 100,
      "expires_at": "2025-02-15T00:00:00Z",
      "days_left": 31
    }
  ]
}

4. 查询积分交易记录

GET /api/v1/credits/transactions?page=1&limit=20&type=consume

响应

{
  "transactions": [
    {
      "transaction_id": 789,
      "transaction_type": "consume",
      "amount": -100,
      "balance_after": 1400,
      "description": "视频生成(5秒)",
      "ai_job_id": 456,
      "created_at": "2025-01-15T10:30:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 50
  }
}

5. 查询服务定价

GET /api/v1/credits/pricing?service_type=video

响应

{
  "pricing": [
    {
      "service_type": "video",
      "service_name": "标准视频生成",
      "base_credits": 100,
      "unit": "per_5_seconds",
      "parameters": {
        "resolution": "720p",
        "fps": 24,
        "type": "text2video"
      }
    }
  ]
}

6. 计算服务费用

POST /api/v1/credits/calculate

请求体

{
  "service_type": "video",
  "parameters": {
    "duration": 10,
    "resolution": "1080p",
    "fps": 30
  }
}

响应

{
  "estimated_credits": 360,
  "breakdown": {
    "base_credits": 200,
    "resolution_multiplier": 1.5,
    "fps_multiplier": 1.2,
    "total": 360
  },
  "sufficient_balance": true,
  "current_balance": 1500
}

业务流程

充值流程

sequenceDiagram
    participant User as 用户
    participant Frontend as 前端
    participant API as API 服务
    participant Payment as 支付网关
    participant DB as 数据库

    User->>Frontend: 选择充值套餐
    Frontend->>API: POST /api/v1/credits/recharge
    API->>DB: 创建订单记录
    API->>Payment: 生成支付链接
    Payment-->>API: 返回支付 URL
    API-->>Frontend: 返回订单信息
    Frontend->>User: 跳转支付页面
    User->>Payment: 完成支付
    Payment->>API: 支付回调通知
    API->>DB: 更新订单状态
    API->>DB: 增加用户积分
    API->>DB: 记录积分交易
    API-->>Payment: 确认收到通知
    Payment->>User: 支付成功提示
    Frontend->>API: 轮询订单状态
    API-->>Frontend: 返回充值成功
    Frontend->>User: 显示积分到账

消耗流程

sequenceDiagram
    participant User as 用户
    participant Frontend as 前端
    participant API as API 服务
    participant CreditService as 积分服务
    participant AIService as AI 服务
    participant DB as 数据库

    User->>Frontend: 发起 AI 生成请求
    Frontend->>API: POST /api/v1/ai/generate-*
    API->>CreditService: 计算所需积分
    CreditService->>DB: 查询用户余额

    alt 余额不足
        CreditService-->>API: 余额不足错误
        API-->>Frontend: 返回错误提示
        Frontend->>User: 提示充值
    else 余额充足
        CreditService->>DB: 预扣积分(冻结)
        CreditService-->>API: 预扣成功
        API->>AIService: 提交 AI 任务
        AIService-->>API: 返回任务 ID
        API-->>Frontend: 返回任务信息

        AIService->>AIService: 执行 AI 生成

        alt 生成成功
            AIService->>CreditService: 确认消耗积分
            CreditService->>DB: 正式扣除积分
            CreditService->>DB: 记录消耗交易
            AIService->>DB: 保存生成结果
            AIService-->>Frontend: 推送完成通知
            Frontend->>User: 显示生成结果
        else 生成失败
            AIService->>CreditService: 退还积分
            CreditService->>DB: 解冻积分
            AIService-->>Frontend: 推送失败通知
            Frontend->>User: 显示错误信息
        end
    end

过期积分清理流程

sequenceDiagram
    participant Cron as 定时任务
    participant CreditService as 积分服务
    participant DB as 数据库
    participant Notification as 通知服务

    Cron->>CreditService: 每日凌晨执行
    CreditService->>DB: 查询即将过期积分(30天内)
    DB-->>CreditService: 返回用户列表

    loop 遍历用户
        CreditService->>Notification: 发送过期提醒
        Notification->>User: 邮件/站内信/短信
    end

    CreditService->>DB: 查询已过期积分
    DB-->>CreditService: 返回过期记录

    loop 遍历过期记录
        CreditService->>DB: 扣除过期积分
        CreditService->>DB: 记录过期交易
        CreditService->>Notification: 发送过期通知
    end

    CreditService-->>Cron: 清理完成

运营策略建议

定价策略

1. 动态定价

目标:根据成本波动和市场竞争调整定价

实施方案

  • 每季度评估 API 成本变化
  • 监控竞品定价策略
  • 根据用户反馈调整积分消耗标准
  • 保持充值比例稳定(1元 = 10积分)

2. 差异化定价

目标:针对不同用户群体提供差异化服务

实施方案

  • 个人用户:标准定价
  • 企业用户:批量采购折扣(充值 ≥ ¥5,000,额外赠送 40%)
  • 教育用户:学生认证后,充值额外赠送 20%
  • 开发者:API 调用模式,按量计费

3. 心理定价

目标:提高用户充值意愿

实施方案

  • 套餐定价采用 ¥9.9、¥49.9、¥99.9(而非整数)
  • 突出"推荐套餐"标签,引导用户选择高价值套餐
  • 显示"节省金额",强化优惠感知

促销活动

1. 限时充值活动

时间:每月 15 日(会员日)、双 11、618 等

优惠

  • 充值额外赠送 10-20%
  • 限时套餐(如:¥88 = 1,500 积分)
  • 满减活动(充值 ≥ ¥200,立减 ¥20)

2. 新用户专享

目标:提高新用户转化率

优惠

  • 注册赠送 100 积分
  • 首次充值额外赠送 20%
  • 新手任务奖励(完成教程获得 50 积分)

3. 老用户回馈

目标:提高用户留存率

优惠

  • 连续充值奖励(连续 3 个月充值,额外赠送 10%)
  • VIP 等级制度(累计充值达到阈值,享受永久折扣)
  • 生日福利(生日当月充值额外赠送 15%)

4. 邀请裂变

目标:获取新用户

机制

  • 邀请人:被邀请人首次充值后,获得 10% 返利积分
  • 被邀请人:注册额外获得 50 积分
  • 阶梯奖励:邀请 10 人,额外奖励 500 积分

用户分层运营

1. 新用户(注册 ≤ 7 天)

策略:降低使用门槛,快速体验核心功能

动作

  • 赠送 100 积分(有效期 1 个月)
  • 推送新手教程
  • 首次充值额外赠送 20%

2. 活跃用户(月消耗 ≥ 500 积分)

策略:提高充值频次和金额

动作

  • 推送充值优惠活动
  • 提供专属客服支持
  • 邀请参与内测新功能

3. 沉睡用户(30 天未使用)

策略:唤醒用户,重新激活

动作

  • 赠送 50 积分(有效期 7 天)
  • 推送新功能介绍
  • 发送限时优惠券

4. 流失用户(90 天未使用)

策略:挽回用户

动作

  • 赠送 100 积分(有效期 30 天)
  • 问卷调查(了解流失原因)
  • 提供专属优惠(充值 5 折)

数据监控指标

1. 充值相关

  • 充值转化率:充值用户数 / 注册用户数
  • ARPU(Average Revenue Per User):总充值金额 / 活跃用户数
  • 充值频次:用户平均充值次数
  • 套餐分布:各套餐的选择占比

2. 消耗相关

  • 日均消耗积分:每日消耗积分总量
  • 服务使用分布:各 AI 服务的使用占比
  • 积分利用率:已消耗积分 / 已充值积分
  • 过期积分占比:过期积分 / 总赠送积分

3. 用户行为

  • 首次充值时间:注册到首次充值的平均天数
  • 复购率:二次充值用户数 / 首次充值用户数
  • 用户生命周期价值(LTV):用户累计充值金额
  • 流失率:30 天未使用用户占比

风险控制

1. 刷单风险

风险描述:恶意用户通过虚假充值、退款等方式获取积分

防控措施

  • 充值订单实名认证
  • 异常充值行为监控(如:短时间内多次小额充值)
  • 退款冷静期(充值后 24 小时内不可使用,退款不扣手续费)
  • 积分冻结机制(可疑账号积分冻结 7 天)

2. 积分滥用

风险描述:用户通过漏洞或作弊手段获取大量积分

防控措施

  • API 调用频率限制
  • 异常消耗行为监控(如:短时间内大量生成相同内容)
  • 账号风控评分系统
  • 人工审核机制

3. 成本失控

风险描述:AI API 成本突然上涨,导致亏损

防控措施

  • 与 AI 服务商签订长期合同,锁定价格
  • 建立成本预警机制(月成本超过预算 20% 时告警)
  • 动态调整积分消耗标准
  • 自建模型降低依赖

4. 用户投诉

风险描述:积分扣除争议、生成失败不退款等

防控措施

  • 明确服务条款和退款政策
  • 生成失败自动退还积分
  • 提供申诉渠道
  • 建立客服响应机制(24 小时内回复)

技术实现要点

1. 积分扣除原子性

问题:并发请求可能导致积分重复扣除或余额不足仍扣除

解决方案:使用数据库事务 + 乐观锁

async def consume_credits(user_id: int, amount: int) -> bool:
    async with db.transaction():
        # 使用 SELECT FOR UPDATE 锁定用户记录
        user = await db.execute(
            "SELECT * FROM users WHERE user_id = $1 FOR UPDATE",
            user_id
        )

        if user.ai_credits_balance < amount:
            raise InsufficientCreditsError("积分余额不足")

        # 扣除积分
        await db.execute(
            "UPDATE users SET ai_credits_balance = ai_credits_balance - $1 WHERE user_id = $2",
            amount, user_id
        )

        # 记录交易
        await db.execute(
            "INSERT INTO credit_transactions (user_id, amount, transaction_type) VALUES ($1, $2, 'consume')",
            user_id, -amount
        )

        return True

2. 积分过期处理

问题:如何高效处理大量过期积分

解决方案:定时任务 + 批量处理

@celery.task
async def expire_credits():
    # 查询今天过期的积分
    expired_records = await db.execute(
        "SELECT user_id, SUM(amount) as total FROM credit_transactions "
        "WHERE expires_at::date = CURRENT_DATE AND credit_type IN ('gift', 'activity') "
        "GROUP BY user_id"
    )

    for record in expired_records:
        async with db.transaction():
            # 扣除过期积分
            await db.execute(
                "UPDATE users SET ai_credits_balance = ai_credits_balance - $1 WHERE user_id = $2",
                record.total, record.user_id
            )

            # 记录过期交易
            await db.execute(
                "INSERT INTO credit_transactions (user_id, amount, transaction_type, description) "
                "VALUES ($1, $2, 'expire', '积分过期')",
                record.user_id, -record.total
            )

3. 积分消耗优先级

问题:用户有多种类型积分时,如何按优先级扣除

解决方案:分类查询 + 按序扣除

async def consume_credits_with_priority(user_id: int, amount: int):
    # 查询用户所有可用积分(按过期时间排序)
    available_credits = await db.execute(
        "SELECT transaction_id, amount, credit_type, expires_at "
        "FROM credit_transactions "
        "WHERE user_id = $1 AND amount > 0 "
        "ORDER BY expires_at NULLS LAST, credit_type DESC",
        user_id
    )

    remaining = amount
    consumed_records = []

    for credit in available_credits:
        if remaining <= 0:
            break

        consume_amount = min(credit.amount, remaining)
        consumed_records.append({
            'transaction_id': credit.transaction_id,
            'amount': consume_amount
        })
        remaining -= consume_amount

    if remaining > 0:
        raise InsufficientCreditsError("积分余额不足")

    # 批量扣除
    async with db.transaction():
        for record in consumed_records:
            await db.execute(
                "UPDATE credit_transactions SET amount = amount - $1 WHERE transaction_id = $2",
                record['amount'], record['transaction_id']
            )

附录

A. 竞品对比

平台 计费方式 充值比例 图片生成 视频生成 优势
Jointo 积分制 1元 = 10积分 2积分/张 100积分/5秒 灵活、透明
Midjourney 订阅制 $10/月 无限生成 不支持 图片质量高
Runway 积分制 $12 = 625积分 5积分/张 5积分/秒 视频专业
剪映 会员制 ¥30/月 有限次数 有限次数 集成度高

B. 术语表

术语 英文 说明
积分 Credits 平台虚拟货币,用于消费 AI 服务
充值 Recharge 用户购买积分的行为
消耗 Consume 使用 AI 服务扣除积分
赠送积分 Gift Credits 平台赠送的积分,有有效期
充值积分 Paid Credits 用户付费购买的积分,永久有效
ARPU Average Revenue Per User 平均每用户收入
LTV Lifetime Value 用户生命周期价值

C. 更新日志

版本 日期 更新内容
v1.0 2025-01-15 初始版本,完整的积分计费系统方案

文档版本:v1.0
创建日期:2025-01-15
最后更新:2025-01-15
维护人员:产品团队 & 技术团队