K8s Lab 把当前仓库文档整理成一个可阅读的网页站点

Repository Reading Site

计费模块 — 功能设计与页面规划

--- | 维度 | 计费对象 | 计量单位 | 典型价格 | |------|---------|---------|---------| | **推理 Token** | API 调用 | 千 Token | ¥0.002 ~ ¥0.01 | | **GPU 时长** | 训练/独享实例 | GPU·秒 | ¥3 ~ ¥25 /小时 | | **存储**

Markdownsaas-platform/docs/billing-module-design.md2026年4月9日 16:12

计费模块 — 功能设计与页面规划

一、计费的核心挑战

看似简单: 用了多少 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%  ↑15% vs 上月       │    │
│ │                                                           │    │
│ │  套餐: Pro999/月)    下次续费: 2026-05-01              │    │
│ │  预估本月总费用: ¥2,340  (基于当前日均消耗)                │    │
│ │                                                           │    │
│ └───────────────────────────────────────────────────────────┘    │
│                                                                  │
│ ── 今日用量 ──                                                   │
│                                                                  │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐            │
│ │ API 调用  │ │ Token    │ │ 推理费用  │ │ 训练费用  │            │
│ │  8,450   │ │  5.2M    │ │  ¥32.10  │ │  ¥0      │            │
│ │ ↑12%     │ │ ↑8%      │ │ ↑15%     │ │ 无任务    │            │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘            │
│                                                                  │
│ ── 费用趋势 (最近 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 月度账单页

┌──────────────────────────────────────────────────────────────────┐
│ 20263 月账单              状态: ✅ 已结算     [下载 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% 时通知     当前: ¥1,892 / ¥5,000       │
│ ☑ 月度费用达到预算的 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),                -- alipay/wechat/stripe/bank
    payment_id      VARCHAR(200),               -- 支付平台订单号
    status          VARCHAR(20) DEFAULT 'pending', -- pending/success/failed/refunded
    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,       -- free/starter/pro/enterprise
    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', -- active/cancelled/expired
    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', -- draft/confirmed/paid
    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),                -- normal/special (普票/专票)
    title           VARCHAR(200),               -- 公司名
    tax_number      VARCHAR(30),
    status          VARCHAR(20) DEFAULT 'pending', -- pending/issued/mailed
    pdf_url         VARCHAR(500),
    created_at      TIMESTAMP DEFAULT NOW()
);

-- 价格配置表(运维设置)
CREATE TABLE pricing_config (
    id              UUID PRIMARY KEY,
    resource_type   VARCHAR(20) NOT NULL,       -- model/gpu/storage
    resource_name   VARCHAR(100) NOT NULL,      -- qwen2.5-7b / A10 / dataset
    price_unit      VARCHAR(20) NOT NULL,       -- per_million_tokens / per_hour / per_gb_day
    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