计费模块 — 功能设计与页面规划
一、计费的核心挑战
看似简单: 用了多少 Token,扣多少钱
实际复杂:
- 每秒上千次 API 调用,每次都要实时扣费
- 余额不足时要立刻拒绝,不能"先用后付"(预付费场景)
- 不同模型价格不同,input/output 价格不同
- 训练按 GPU 时长计费,推理按 Token 计费,存储按天计费
- 企业客户要后付费月结,个人要预付费
- 账单要精确到每次 API 调用,可审计
- 高并发下余额不能扣成负数(超卖风险)
二、计费模型
2.1 四种计费维度
| 维度 |
计费对象 |
计量单位 |
典型价格 |
| 推理 Token |
API 调用 |
千 Token |
¥0.002 ~ ¥0.01 |
| GPU 时长 |
训练/独享实例 |
GPU·秒 |
¥3 ~ ¥25 /小时 |
| 存储 |
数据集/模型/checkpoint |
GB·天 |
¥0.01 /GB/天 |
| 网络 |
大文件下载 |
GB |
¥0.5 /GB(暂不收) |
2.2 Token 计费详解
一次 API 调用的费用计算:
cost = prompt_tokens × input_price + completion_tokens × output_price
为什么 output 比 input 贵?
input: GPU 并行处理所有 Token(prefill 阶段),效率高
output: GPU 逐个生成 Token(decode 阶段),每个都要一次前向推理
价格表:
模型 Input (¥/百万Token) Output (¥/百万Token)
─────────────────────────────────────────────────────────────
Llama-3.2-1B 0.5 1.5
Llama-3.2-3B 1.0 3.0
Qwen2.5-7B 2.0 6.0
Qwen2.5-14B 5.0 15.0
Qwen2.5-72B 10.0 30.0
DeepSeek-V3 10.0 30.0
BGE-M3 (Embedding) 0.3 — (无输出)
Whisper (语音) ¥0.1/秒音频 —
─────────────────────────────────────────────────────────────
一次典型对话的费用:
模型: Qwen2.5-7B
prompt: 500 tokens (含 system + 历史对话 + 用户问题)
completion: 200 tokens (模型回答)
费用 = 500 × 2.0/1,000,000 + 200 × 6.0/1,000,000
= ¥0.001 + ¥0.0012
= ¥0.0022 (约 0.2 分钱)
每天 10 万次调用 ≈ ¥220/天 ≈ ¥6,600/月
2.3 GPU 时长计费详解
训练任务:
费用 = GPU型号单价 × GPU卡数 × 运行秒数
价格表:
GPU 型号 单价 (¥/小时) 单价 (¥/秒)
A10 24G 5.00 0.00139
A100 40G 12.00 0.00333
A100 80G 18.00 0.00500
H100 80G 25.00 0.00694
计费粒度: 秒级(最低 1 分钟)
独享推理实例:
费用 = GPU型号单价 × GPU卡数 × 运行时长
从实例创建到销毁全程计费(即使没有请求)
示例: 独享 Qwen-7B on A10
费用 = ¥5.00/h × 1卡 × 24h = ¥120/天
对比共享推理: 如果日均 5 万次调用
共享费用 = 5万 × ¥0.0022 = ¥110/天
结论: 日均 > 5.5 万次时独享更划算
2.4 套餐设计
┌────────────────────────────────────────────────────────────────┐
│ 免费版 基础版 专业版 企业版 │
│ Free Starter Pro Enterprise │
│ ¥0/月 ¥99/月 ¥999/月 联系销售 │
├────────────────────────────────────────────────────────────────┤
│ ¥10 赠送额度 ¥100 额度/月 ¥1,200 额度/月 定制 │
│ 超出不可用 超出按量付费 超出按量 9折 超出按量 8折 │
│ │
│ 1 成员 5 成员 20 成员 不限 │
│ 2 API Key 10 API Key 50 API Key 不限 │
│ 1GB 存储 10GB 存储 100GB 存储 不限 │
│ 10 RPM 100 RPM 1000 RPM 定制 │
│ │
│ 无 SLA 99% SLA 99.9% SLA 99.95% SLA │
│ 社区支持 邮件支持 专属客服 专属技术经理 │
│ 训练功能 训练 + 独享 全部功能 │
│ 灰度发布 多集群 │
│ SSO/审计 │
│ 私有部署 │
│ │
│ [开始使用] [立即订阅] [立即订阅] [联系我们] │
└────────────────────────────────────────────────────────────────┘
额度说明:
套餐包含的额度 = 抵扣余额,每月重置,不累积
超出部分 = 从充值余额中扣除
示例: Pro 套餐 ¥999/月含 ¥1,200 额度
本月用了 ¥1,500 → 套餐抵扣 ¥1,200 + 余额扣 ¥300×0.9 = ¥270
三、账户体系
3.1 账户结构
组织账户
├── 套餐: Pro (¥999/月)
├── 套餐额度: ¥1,200/月 (本月剩余 ¥456)
├── 充值余额: ¥2,350.00
├── 赠送余额: ¥0.00 (已用完)
├── 信用额度: ¥0.00 (企业客户可开通)
└── 扣费优先级: 赠送 → 套餐额度 → 充值余额 → 信用额度
扣费顺序很重要:
1. 先扣赠送余额(吸引试用,消耗完无损失)
2. 再扣套餐额度(套餐费已付,不用白不用)
3. 最后扣充值余额(真金白银)
4. 信用额度(企业后付费)
3.2 充值方式
| 方式 |
适用 |
到账 |
手续费 |
| 支付宝 |
个人/小额 |
实时 |
0.6% (平台承担) |
| 微信支付 |
个人/小额 |
实时 |
0.6% (平台承担) |
| Stripe |
海外/信用卡 |
实时 |
2.9% + $0.30 |
| 银行转账 |
企业/大额 |
1-3 工作日 |
无 |
| 对公转账 |
企业/合同 |
人工审核 |
无 |
充值金额档位:
¥50 ¥100 ¥500 ¥1,000 ¥5,000 ¥10,000 自定义
优惠策略:
¥500+ 赠 5
¥1,000+ 赠 8
¥5,000+ 赠 12
¥10,000+ 赠 15
示例: 充 ¥1,000 → 到账 ¥1,080 (赠送 ¥80)
赠送部分有效期 6 个月,过期失效
3.3 余额不足策略
余额预警:
阈值 1: 余额 < ¥50 → 邮件/站内通知 (每天一次)
阈值 2: 余额 < ¥10 → 短信通知 (每天一次)
阈值 3: 余额 = ¥0 → 拒绝请求,返回 402 Payment Required
拒绝请求时的响应:
{
"error": {
"type": "insufficient_balance",
"message": "账户余额不足,请充值后继续使用",
"code": "billing_insufficient_funds",
"balance": 0.00,
"required": 0.002
}
}
企业客户信用额度:
余额为 0 后仍可使用,从信用额度扣
月底结算,开发票,打款
信用额度由商务根据企业资质设定(如 ¥50,000)
四、扣费流程(技术核心)
4.1 实时扣费架构
高频路径(每次 API 调用)
─────────────────────
请求到达
│
▼
API Gateway
│
├── 1. 查 Redis: org_balance (缓存余额)
│ 余额 > 预估费用? → 继续
│ 余额 ≤ 0? → 返回 402
│
├── 2. 转发到推理服务 → 获得结果
│
├── 3. 计算费用
│ cost = prompt_tokens × input_price
│ + completion_tokens × output_price
│
├── 4. Redis: DECRBY org:{id}:balance cost_cents
│ (原子操作,不会并发超扣)
│
├── 5. 写入 usage_log 消息队列 (异步)
│ {org_id, model, tokens, cost, timestamp}
│
└── 6. 返回响应给用户
(含 usage 字段)
低频路径(异步批处理)
─────────────────────
消息队列消费者 (每秒或每批):
│
├── 批量写入 PostgreSQL usage_logs 表
│ (INSERT INTO usage_logs VALUES (...), (...), ...)
│
└── 每分钟: Redis 余额 → PostgreSQL 余额 同步
(以 Redis 为准,PostgreSQL 作为持久化)
为什么用 Redis 而不是直接写 PostgreSQL?
场景: 500 QPS,每次扣费
直接写 PostgreSQL:
UPDATE organizations SET balance = balance - 0.0022 WHERE id = ?
→ 500 次/秒 UPDATE → 行锁竞争 → 延迟飙升 → 数据库扛不住
Redis DECRBY:
DECRBY org:xxx:balance 22 (单位: 0.01分)
→ 10万次/秒无压力 → 原子操作不会超扣 → 延迟 < 0.1ms
4.2 并发安全
问题: 余额 ¥0.01,同时来两个请求各需 ¥0.01
错误做法:
请求A: 读余额 0.01 → 够 → 扣费 → 余额 0
请求B: 读余额 0.01 → 够 → 扣费 → 余额 -0.01 ← 超扣了!
正确做法 (Redis Lua 脚本):
local balance = redis.call('GET', key)
if tonumber(balance) >= tonumber(cost) then
redis.call('DECRBY', key, cost)
return 1
else
return 0
end
原子执行,不可能超扣。
请求A 和 B 串行执行 Lua 脚本。
4.3 Redis 与 PostgreSQL 一致性
Redis 是"热数据"(实时扣费),PostgreSQL 是"冷数据"(持久化)
同步策略:
1. 每分钟: Redis 余额 → PostgreSQL (批量 UPDATE)
2. Redis 重启时: 从 PostgreSQL 恢复余额到 Redis
3. 每天凌晨: 对账
- 汇总 usage_logs 当天总扣费
- 对比余额变化量
- 差异超过 ¥0.01 → 告警
故障场景:
Redis 宕机:
→ 切换到 Redis Sentinel 备节点(< 10 秒)
→ 或降级: 直接查 PostgreSQL (允许少量延迟)
PostgreSQL 宕机:
→ Redis 继续工作(扣费不中断)
→ usage_logs 写入消息队列暂存
→ PostgreSQL 恢复后重放消息
消息队列丢消息:
→ 对账时发现差异 → 从 Redis 操作日志恢复
4.4 GPU 时长计费
训练任务:
Job 开始 → 记录 start_time
Job 结束 → 记录 end_time
费用 = (end_time - start_time) × GPU单价 × GPU数量
精确到秒,最低 1 分钟
计费时机: Job 完成/失败后一次性扣费
预扣机制: 提交 Job 时预扣预估费用
完成后多退少补(差额 < 20% 直接调整)
独享实例:
实例创建 → 开始计费
每小时扣一次(而不是结束才扣)
→ 避免长期运行突然余额不足的尴尬
示例: 独享 A10 实例
15:00 创建 → 扣 ¥5 (第一个小时)
16:00 → 扣 ¥5
16:30 销毁 → 扣 ¥2.50 (按 30 分钟计)
总计: ¥12.50
五、发票与财务
5.1 发票类型
| 类型 |
适用 |
内容 |
| 增值税电子普通发票 |
个人/小额 |
充值金额 |
| 增值税专用发票 |
企业 |
充值金额,可抵扣 |
| 月度结算发票 |
企业后付费 |
当月使用总额 |
5.2 开票流程
个人:
充值 → 自动生成电子发票 → 下载 PDF
企业:
1. 设置开票信息(公司名/税号/地址/银行账户)
2. 申请开票(选择金额/时间范围)
3. 财务审核(1-3 工作日)
4. 开具发票
5. 邮寄或电子发票下载
月结企业:
每月 1 号生成上月账单
→ 企业确认
→ 开具发票
→ 企业付款(30天账期)
六、功能清单
6.1 用户侧
| 功能 |
说明 |
优先级 |
| 余额查询 |
实时余额、套餐剩余额度 |
P0 |
| 充值 |
支付宝/微信/Stripe/银行转账 |
P0 |
| 充值记录 |
充值历史,含支付方式和到账状态 |
P0 |
| 用量概览 |
今日/本周/本月用量趋势 |
P0 |
| 用量明细 |
按 API Key/模型/时间 筛选每次调用 |
P0 |
| 账单 |
月度账单汇总 |
P0 |
| 费用预估 |
基于历史用量预测下月费用 |
P1 |
| 预算告警 |
设置月度预算上限,超出告警 |
P1 |
| 套餐管理 |
当前套餐/升降级/到期时间 |
P0 |
| 发票管理 |
开票信息/申请开票/下载发票 |
P1 |
| 费用分析 |
按项目/成员/模型拆分费用 |
P1 |
| 导出 |
CSV/PDF 导出用量和账单 |
P1 |
6.2 运维侧
| 功能 |
说明 |
优先级 |
| 价格配置 |
设置每个模型的 input/output 单价 |
P0 |
| 套餐配置 |
套餐内容/价格/额度 |
P0 |
| 优惠活动 |
充值赠送/折扣码/限时优惠 |
P1 |
| 赠送额度 |
给指定租户赠送额度 |
P0 |
| 信用额度 |
给企业客户设置信用额度 |
P1 |
| 收入报表 |
日/周/月收入,按模型/套餐拆分 |
P0 |
| 对账 |
Redis/PG 余额对比,用量校验 |
P0 |
| 欠费管理 |
信用额度超限的企业客户 |
P1 |
七、页面设计
7.1 页面总览
计费中心
│
├── 用户侧
│ ├── 费用概览
│ ├── 充值
│ ├── 套餐管理
│ ├── 用量明细
│ ├── 账单列表
│ ├── 账单详情
│ ├── 发票管理
│ ├── 费用分析
│ └── 预算设置
│
└── 运维侧
├── 价格配置
├── 套餐配置
├── 优惠活动
├── 赠送/信用额度
├── 收入报表
└── 对账管理
7.2 费用概览页
┌──────────────────────────────────────────────────────────────────┐
│ 费用概览 [充值] [套餐] │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ── 账户状态 ── │
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 充值余额 套餐额度(本月) 本月已用 │ │
│ │ ¥2,350.00 ¥456 / ¥1,200 ¥1,892.50 │ │
│ │ [██████████░░░░] 62
│ │ │ │
│ │ 套餐: Pro (¥999/月) 下次续费: 2026-05-01 │ │
│ │ 预估本月总费用: ¥2,340 (基于当前日均消耗) │ │
│ │ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
│ ── 今日用量 ── │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ API 调用 │ │ Token │ │ 推理费用 │ │ 训练费用 │ │
│ │ 8,450 │ │ 5.2M │ │ ¥32.10 │ │ ¥0 │ │
│ │ ↑12
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ── 费用趋势 (最近 30 天) ── │
│ │
│ ¥120│ ╱ │
│ ¥ 80│ ╱╲ ╱╲ ╱╲ ╱╲ ╱╱ │
│ ¥ 40│ ╱╲ ╱╲ ╱╲╱╱ ╲╱ ╲╱ ╲╱╱ ╲╱ │
│ ¥ 0│╱╲╱╲╱ │
│ └────────────────────────────────────── │
│ 03-11 03-25 04-09 │
│ ■ 推理 ■ 训练 ■ 存储 │
│ │
│ ── 按模型拆分 ── │
│ │
│ 模型 调用次数 Token 费用 占比 │
│ ──────────────────────────────────────────────────────────── │
│ Qwen2.5-7B 5,200 3.1M ¥18.60 58
│ acmecorp-cs-v3 2,800 1.8M ¥10.80 34
│ BGE-M3 (Embed) 450 0.3M ¥0.90 3
│ Qwen2.5-14B — — ¥0 0
│ 存储费 ¥1.80 5
│ │
│ ── 快捷操作 ── │
│ │
│ [查看详细用量] [下载本月账单] [设置预算告警] [费用分析] │
└──────────────────────────────────────────────────────────────────┘
7.3 充值页
┌──────────────────────────────────────────────────────────────────┐
│ 充值 当前余额: ¥2,350.00│
├──────────────────────────────────────────────────────────────────┤
│ │
│ 选择充值金额: │
│ │
│ ┌────────┐ ┌────────┐ ┌────────────┐ ┌────────────┐ │
│ │ ¥50 │ │ ¥100 │ │ ¥500 │ │ ¥1,000 │ │
│ │ │ │ │ │ 赠 ¥25 │ │ 赠 ¥80 │ │
│ └────────┘ └────────┘ └────────────┘ └────────────┘ │
│ ┌────────────┐ ┌────────────┐ ┌─────────────────────┐ │
│ │ ¥5,000 │ │ ¥10,000 │ │ 自定义金额: │ │
│ │ 赠 ¥600 │ │ 赠 ¥1,500 │ │ [_________] 元 │ │
│ └────────────┘ └────────────┘ └─────────────────────┘ │
│ │
│ 已选: ¥1,000 (实际到账 ¥1,080,含赠送 ¥80) │
│ 赠送有效期: 6 个月 │
│ │
│ 支付方式: │
│ ● 支付宝 ○ 微信支付 ○ 银行卡 │
│ │
│ [确认充值 ¥1,000] │
│ │
│ 企业对公转账? [查看转账信息] │
│ 需要发票? 充值成功后可在 [发票管理] 中申请 │
│ │
│ ── 充值记录 ── │
│ │
│ 时间 金额 赠送 方式 状态 │
│ 04-09 12:00 ¥100 — 支付宝 ✅ 成功 │
│ 04-01 10:00 ¥1,000 ¥80 微信 ✅ 成功 │
│ 03-15 15:00 ¥500 ¥25 银行转账 ✅ 成功 │
└──────────────────────────────────────────────────────────────────┘
7.4 用量明细页
┌──────────────────────────────────────────────────────────────────┐
│ 用量明细 [导出 CSV] │
├──────────────────────────────────────────────────────────────────┤
│ │
│ 时间: [2026-04-09 ▼] ~ [2026-04-09 ▼] │
│ 模型: [全部 ▼] API Key: [全部 ▼] 类型: [全部 ▼] │
│ │
│ 汇总: 8,450 次调用 │ 5.2M Token │ ¥32.10 │
│ │
│ 时间 模型 API Key 输入 输出 费用 │
│ ──────────────────────────────────────────────────────────────── │
│ 15:32:01 qwen-7b prod-key 502 198 ¥0.0022 │
│ 15:31:58 qwen-7b prod-key 1024 512 ¥0.0051 │
│ 15:31:55 cs-v3 prod-key 256 384 ¥0.0028 │
│ 15:31:50 bge-m3 dev-key 1500 — ¥0.0005 │
│ 15:31:48 qwen-7b prod-key 680 256 ¥0.0029 │
│ ... │
│ │
│ ── 时段分布 ── │
│ │
│ ¥5│ ╱╲ │
│ ¥3│ ╱╲ ╱╲ ╱╱ ╲╱╲ │
│ ¥1│ ╱╲╱ ╲╱ ╲╱ ╲ │
│ └────────────────────────── │
│ 00:00 04:00 08:00 12:00 16:00 │
│ │
│ 第 1/85 页 < 1 2 3 > │
└──────────────────────────────────────────────────────────────────┘
7.5 月度账单页
┌──────────────────────────────────────────────────────────────────┐
│ 2026 年 3 月账单 状态: ✅ 已结算 [下载 PDF] │
├──────────────────────────────────────────────────────────────────┤
│ │
│ 组织: AcmeCorp 套餐: Pro (¥999/月) │
│ 账单周期: 2026-03-01 ~ 2026-03-31 │
│ │
│ ═══════════════════════════════════════════════════════ │
│ │
│ 一、套餐费用 │
│ Pro 套餐月费 ¥999.00 │
│ │
│ 二、推理消耗 (超出套餐额度部分) │
│ Qwen2.5-7B │
│ Input: 38,500,000 tokens × ¥2.0/M ¥77.00 │
│ Output: 12,800,000 tokens × ¥6.0/M ¥76.80 │
│ acmecorp-cs-v3 │
│ Input: 15,200,000 tokens × ¥2.0/M ¥30.40 │
│ Output: 8,500,000 tokens × ¥6.0/M ¥51.00 │
│ BGE-M3 (Embedding) │
│ Input: 5,000,000 tokens × ¥0.3/M ¥1.50 │
│ 推理小计 ¥236.70 │
│ Pro 套餐抵扣 -¥201.00 │
│ 超出部分 (9折) ¥35.70 × 0.9 = ¥32.13│
│ │
│ 三、训练消耗 │
│ LoRA 微调 Qwen2.5-7B │
│ A10 GPU × 1 × 0.7h × ¥5.00/h ¥3.50 │
│ LoRA 微调 Qwen2.5-7B (第二次) │
│ A10 GPU × 1 × 0.5h × ¥5.00/h ¥2.50 │
│ 训练小计 ¥6.00 │
│ │
│ 四、存储费用 │
│ 数据集 2.3GB × 31天 × ¥0.01/GB/天 ¥0.71 │
│ 模型 4.1GB × 31天 × ¥0.01/GB/天 ¥1.27 │
│ Checkpoint 1.2GB × 15天 × ¥0.01/GB/天 ¥0.18 │
│ 存储小计 ¥2.16 │
│ │
│ ═══════════════════════════════════════════════════════ │
│ │
│ 套餐费用 ¥999.00 │
│ 超出消耗 ¥40.29 │
│ ───────────────────────────── │
│ 本月总计 ¥1,039.29 │
│ │
│ 支付方式: 套餐自动扣费 ¥999 + 余额扣除 ¥40.29 │
│ │
│ [申请发票] [查看用量明细] [下载 PDF] │
└──────────────────────────────────────────────────────────────────┘
7.6 套餐管理页
┌──────────────────────────────────────────────────────────────────┐
│ 套餐管理 │
├──────────────────────────────────────────────────────────────────┤
│ │
│ 当前套餐: Pro │
│ 月费: ¥999 含额度: ¥1,200 续费日: 每月 1 日 │
│ 支付方式: 支付宝自动扣费 │
│ │
│ ── 变更套餐 ── │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────┐ │
│ │ Starter │ │ Pro ← 当前 │ │Enterprise│ │
│ │ ¥99/月 │ │ ¥999/月 │ │ 联系销售 │ │
│ │ [降级] │ │ │ │ [咨询] │ │
│ └──────────┘ └──────────────┘ └──────────┘ │
│ │
│ 降级说明: │
│ ⚠️ 降级到 Starter 后: │
│ - 成员上限从 20 人降为 5 人(需先移除多余成员) │
│ - API Key 上限从 50 降为 10 │
│ - 存储上限从 100GB 降为 10GB │
│ - 独享实例将被自动下线 │
│ - 变更将在下个计费周期生效 │
│ │
│ ── 用量对比 (帮助选择套餐) ── │
│ │
│ 你过去 3 个月的平均消耗: │
│ 推理费用: ¥1,892/月 (超出 Pro 额度 ¥692) │
│ 训练费用: ¥120/月 │
│ 存储费用: ¥25/月 │
│ 总计: ¥2,037/月 + 套餐 ¥999 = ¥3,036/月 │
│ │
│ 如果升级 Enterprise 定制: │
│ 预估月费 ¥2,500 (含 ¥3,000 额度),节省约 ¥500/月 │
│ │
└──────────────────────────────────────────────────────────────────┘
7.7 预算告警设置
┌──────────────────────────────────────────────────────────────────┐
│ 预算与告警设置 │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ── 月度预算 ── │
│ │
│ 预算上限: [¥5,000_____] / 月 │
│ │
│ 达到预算后: │
│ ○ 仅通知,不限制使用 │
│ ● 通知并拒绝新请求(已运行的训练不中断) │
│ │
│ ── 告警阈值 ── │
│ │
│ ☑ 月度费用达到预算的 50
│ ☑ 月度费用达到预算的 80
│ ☑ 月度费用达到预算的 100
│ │
│ ☑ 余额低于 ¥50 时通知 │
│ ☑ 余额低于 ¥10 时短信通知 │
│ │
│ ☑ 单日费用超过 ¥500 时通知 (异常消耗检测) │
│ ☑ 单次 API 调用超过 ¥1 时通知 (异常大请求) │
│ │
│ ── 通知方式 ── │
│ │
│ ☑ 站内消息 (默认) │
│ ☑ 邮件: zhangsan@acme.com │
│ ☐ 短信: 仅余额告警 │
│ ☐ Webhook: [________________________] │
│ │
│ ── 按项目预算 (Pro/Enterprise) ── │
│ │
│ 项目 月度预算 本月已用 状态 │
│ 智能客服 ¥3,000 ¥1,892 63
│ 内部知识库 ¥1,000 ¥420 42
│ 未分配 ¥1,000 ¥150 15
│ │
│ [保存设置] │
└──────────────────────────────────────────────────────────────────┘
7.8 发票管理页
┌──────────────────────────────────────────────────────────────────┐
│ 发票管理 [申请开票] │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ── 开票信息 ── [修改] │
│ │
│ 公司名称: 某某科技有限公司 │
│ 税号: 91110108MA01XXXXXX │
│ 地址: 北京市海淀区中关村大街1号 │
│ 电话: 010-88888888 │
│ 开户行: 中国银行北京海淀支行 │
│ 账号: 1234567890 │
│ │
│ ── 发票记录 ── │
│ │
│ 发票号 金额 类型 状态 日期 操作 │
│ ──────────────────────────────────────────────────────────────── │
│ INV-202604 ¥1,039.29 专票 ✅ 已开具 04-05 [下载] │
│ INV-202603 ¥980.00 专票 ✅ 已开具 03-05 [下载] │
│ INV-202602 ¥750.00 普票 ✅ 已开具 02-05 [下载] │
│ │
│ ── 可开票金额 ── │
│ │
│ 本月消耗: ¥1,892.50 (截至今日) │
│ 已开票: ¥0 │
│ 可开票: ¥1,892.50 [申请本月发票] │
│ │
└──────────────────────────────────────────────────────────────────┘
7.9 运维 — 价格配置页
┌──────────────────────────────────────────────────────────────────┐
│ 价格配置 (运维) [保存并生效] │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ⚠️ 价格变更将在下一个计费周期生效,已有调用按旧价格结算 │
│ │
│ ── 推理定价 (¥/百万 Token) ── │
│ │
│ 模型 Input Output 最后修改 │
│ ────────────────────────────────────────────────── │
│ Llama-3.2-1B [0.5__] [1.5__] 03-01 │
│ Llama-3.2-3B [1.0__] [3.0__] 03-01 │
│ Qwen2.5-7B [2.0__] [6.0__] 03-01 │
│ Qwen2.5-14B [5.0__] [15.0_] 03-15 │
│ Qwen2.5-72B [10.0_] [30.0_] 03-01 │
│ DeepSeek-V3 [10.0_] [30.0_] 04-01 │
│ BGE-M3 [0.3__] [— ] 03-01 │
│ │
│ ── GPU 时长定价 (¥/小时) ── │
│ │
│ GPU 型号 训练 独享推理 最后修改 │
│ A10 24G [5.0__] [3.5__] 03-01 │
│ A100 40G [12.0_] [10.0_] 03-01 │
│ A100 80G [18.0_] [15.0_] 03-01 │
│ H100 80G [25.0_] [22.0_] 03-01 │
│ │
│ ── 存储定价 (¥/GB/天) ── │
│ │
│ 数据集: [0.01__] │
│ 模型: [0.01__] │
│ Checkpoint: [0.01__] │
│ │
│ ── 套餐折扣 ── │
│ │
│ Starter: 无折扣 │
│ Pro: 超出部分 [0.9_] 折 │
│ Enterprise: 按合同 │
│ │
│ 变更预览: │
│ 如果本次调价生效,基于上月用量: │
│ 收入变化: +¥2,300/月 (+3.2
│ │
│ [取消] [预览影响] [保存并生效] │
└──────────────────────────────────────────────────────────────────┘
八、数据模型补充
CREATE TABLE recharges (
id UUID PRIMARY KEY,
org_id UUID NOT NULL REFERENCES organizations(id),
amount DECIMAL(10,2) NOT NULL,
bonus DECIMAL(10,2) DEFAULT 0,
bonus_expires TIMESTAMP,
payment_method VARCHAR(20),
payment_id VARCHAR(200),
status VARCHAR(20) DEFAULT 'pending',
created_at TIMESTAMP DEFAULT NOW(),
paid_at TIMESTAMP
);
CREATE TABLE subscriptions (
id UUID PRIMARY KEY,
org_id UUID NOT NULL REFERENCES organizations(id),
plan VARCHAR(20) NOT NULL,
price DECIMAL(10,2),
quota DECIMAL(10,2),
discount DECIMAL(3,2) DEFAULT 1.0,
starts_at TIMESTAMP NOT NULL,
expires_at TIMESTAMP,
auto_renew BOOLEAN DEFAULT TRUE,
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE invoices (
id UUID PRIMARY KEY,
org_id UUID NOT NULL,
period_start DATE NOT NULL,
period_end DATE NOT NULL,
subscription_fee DECIMAL(10,2),
inference_cost DECIMAL(10,2),
training_cost DECIMAL(10,2),
storage_cost DECIMAL(10,2),
quota_deduction DECIMAL(10,2),
discount_amount DECIMAL(10,2),
total DECIMAL(10,2) NOT NULL,
status VARCHAR(20) DEFAULT 'draft',
pdf_url VARCHAR(500),
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE tax_invoices (
id UUID PRIMARY KEY,
org_id UUID NOT NULL,
invoice_ids UUID[],
amount DECIMAL(10,2) NOT NULL,
type VARCHAR(20),
title VARCHAR(200),
tax_number VARCHAR(30),
status VARCHAR(20) DEFAULT 'pending',
pdf_url VARCHAR(500),
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE pricing_config (
id UUID PRIMARY KEY,
resource_type VARCHAR(20) NOT NULL,
resource_name VARCHAR(100) NOT NULL,
price_unit VARCHAR(20) NOT NULL,
input_price DECIMAL(10,6),
output_price DECIMAL(10,6),
effective_from TIMESTAMP NOT NULL,
created_by UUID,
created_at TIMESTAMP DEFAULT NOW()
);
九、页面汇总
| 序号 |
页面 |
路由 |
角色 |
优先级 |
| 1 |
费用概览 |
/billing/overview |
用户 |
P0 |
| 2 |
充值 |
/billing/recharge |
Owner/Admin |
P0 |
| 3 |
充值记录 |
/billing/recharge/history |
Owner/Admin |
P0 |
| 4 |
用量明细 |
/billing/usage |
用户 |
P0 |
| 5 |
月度账单列表 |
/billing/invoices |
Owner/Admin |
P0 |
| 6 |
账单详情 |
/billing/invoices/:id |
Owner/Admin |
P0 |
| 7 |
套餐管理 |
/billing/subscription |
Owner |
P0 |
| 8 |
套餐对比选择 |
/billing/plans |
用户 |
P0 |
| 9 |
预算告警设置 |
/billing/budget |
Owner/Admin |
P1 |
| 10 |
费用分析 |
/billing/analysis |
Owner/Admin |
P1 |
| 11 |
发票管理 |
/billing/tax-invoices |
Owner/Admin |
P1 |
| 12 |
申请开票 |
/billing/tax-invoices/apply |
Owner/Admin |
P1 |
| 13 |
运维-价格配置 |
/admin/pricing |
运维 |
P0 |
| 14 |
运维-套餐配置 |
/admin/plans |
运维 |
P0 |
| 15 |
运维-优惠活动 |
/admin/promotions |
运维 |
P1 |
| 16 |
运维-赠送额度 |
/admin/credits |
运维 |
P0 |
| 17 |
运维-收入报表 |
/admin/revenue |
运维 |
P0 |
| 18 |
运维-对账管理 |
/admin/reconciliation |
运维 |
P0 |