管理后台 商业化 计费中心
MOD-BILLING 已启用MOD-PAYMENT 已启用

计费中心

积分包 + 套餐 双原语计费 · FIFO 扣减 · 负余额欠费冲抵(FR-AIP-04/05/08)

本月收入 ¥ 48,231 待确认订单 7
原语 1 · 积分包(CreditPack)消费型 · 燃料

所有额度来源统一为「创建一个积分包」:购买充值 RECHARGE / 赠送 GIFT / 管理员分配 ADJUST_ADMIN / 试用 FREE_TRIAL。每包独立 remainingAmount + expiresAt,按过期时间 FIFO 扣减,允许扣到负(欠费),入账自动冲抵。

原语 2 · 套餐 / 会员(Package)时间型 · 门

会员是时间存续窗口:由 COMPLETED 订单排队推导,多次购买 / 赠送时长接续叠加(FR-127)。套餐可附带积分(发放为 GIFT 积分包),发放后会员与积分各自独立消耗。

双重 AND 门槛

对话放行 = 会员有效(isActive) AND 积分余额 > 0。会员=门(能不能用),积分=燃料(还有多少额度)。任一不满足 → 每条消息阻断(前端预检 + 服务端 gate)。

积分总余额(全平台)
8,432,150
= Σ 未过期有效包 remainingAmount
欠费用户(负余额)
23
对话已阻断 · 入账自动冲抵
本月积分消耗
2,184,900
CONSUME_AI · token 异步结算
30 天内将过期积分
486,200
到期查询时自动排除(无定时清理)

管理员操作

赠送 / 试用 / 配额分配 —— 三种客户类型通用(平台型自助付费 · 乙方型统一充值分配 · 甲方型内部成本核算)
赠送积分
ADJUST_ADMIN 积分包
目标用户
金额
有效期(天)
原因(必填 · 审计追溯)

正向 = 新建包(INSERT);负向 = FIFO 逐包扣减(持锁可扣到负)。入账后自动冲抵欠费。

赠送套餐
0 元 GIFT 订单
目标用户
选择套餐(仅 PAID 可赠送)
原因(必填)

会员时长排队叠加(接续当前到期之后);积分有效期与会员排队对齐(FR-128)。

新用户试用
FREE_TRIAL 套餐
注册自动发放试用
试用额度
限时(天)
注册 / 首次登录 fire-and-forget 发放(0 元 FREE 订单 + GIFT 积分包),唯一索引幂等,失败不阻断注册。
本月已发放试用 312 份 · 转正率 18.6%
批量配额分配
甲方型 · 成本核算
部门 / 用户组
人均额度
有效期(天)

「配额」= 赠送 + 有效期(FR-AIP-04):每月赠送 1,000(30 天有效)= 月度配额。员工消耗计入 costActual 成本核算,不对员工收费。员工超额扣到负,下月赠送自动冲抵。

用户积分账户

用户客户类型积分余额会员状态当前套餐会员到期操作
陈伟
chenwei@example.com
平台型 -1,240 欠费 有效 pro 2026-08-27
林晓
linxiao@example.com
平台型 76,400 有效 basic 2026-08-12
王芳
wangfang@example.com
平台型 12,800 已过期 —(原 enterprise) 2026-07-20 已过期
赵磊
zhaolei@acme-corp.cn
甲方型 640 有效 企业统一套餐 2026-12-31
孙倩
sunqian@acme-corp.cn
甲方型 -360 欠费 有效 企业统一套餐 2026-12-31
周敏
zhoumin@agency.io
乙方型 34,500 有效 enterprise 2026-09-15
郑浩
zhenghao@example.com
平台型 1,860 试用中 试用 free_trial 2026-08-03(试用到期)
欠费判定:余额 ≤ 0 → 每条消息阻断(前端横幅 + 服务端 gate);token 异步结算,对话进行中不拦截 共 1,284 个账户 · 欠费 23

积分包明细(FIFO 扣减顺序)

扣减序用户来源入账额度剩余 remaining有效期 expiresAt状态说明
1 郑浩 FREE_TRIAL 试用 10,000 1,860 2026-08-03 即将过期 注册自动发放 · 最先扣减
2 赵磊 ADJUST_ADMIN 管理员分配 1,000 640 2026-08-25 有效 7月配额 · by superadmin · 「7月市场部配额」
3 林晓 GIFT 赠送 100,000 36,400 2026-08-12 有效 赠送套餐附带 · 与会员排队对齐(FR-128)
4 林晓 RECHARGE 购买充值 40,000 40,000 永久 有效 null 排最后扣
5 陈伟 RECHARGE 购买充值 100,000 -1,240 永久 欠费(负余额) 异步结算超扣 · 下次入账自动冲抵至 0
赵磊 ADJUST_ADMIN 管理员分配 1,000 0 2026-07-25 已过期 6月配额 · 查询时过滤(无定时清理)
孙倩 ADJUST_ADMIN 管理员分配 1,000 -360 2026-08-25 欠费(负余额) 8月赠送 1,000 时先冲抵 360 · 实际可用 640
FIFO 扣减规则:按 expiresAt ASC(先过期先扣),null 永久包排最后;三种来源(RECHARGE / GIFT / ADJUST_ADMIN)扣减时完全平等,仅看过期时间。余额不足允许扣到负(欠费),新包入账后自动冲抵负包(offsetNegativePackages)。并发安全:PG advisory lock(同用户串行)+ 乐观锁。

会员记录(购买 / 赠送排队)

排队叠加 FR-127
订单号用户套餐金额类型会员窗口状态
ORD-20260728-8840林晓basic¥39.00购买07-13 → 08-12生效中
GIFT-20260728-0092林晓pro¥0.00赠送08-12 → 09-11 排队中待生效
ORD-20260720-8712周敏enterprise¥199.00购买07-20 → 09-15生效中
FREE-20260727-0311郑浩free_trial¥0.00试用07-27 → 08-03试用中
ORD-20260620-8201王芳enterprise¥199.00购买06-20 → 07-20已过期
赠送 = 0 元 COMPLETED 订单(GIFT 前缀),与购买在会员排队中完全等价;试用 = FREE 前缀订单,注册自动发放(幂等)。

套餐管理(MembershipPlan)

编码名称类型价格会员天数附带积分积分有效期状态操作
free_trial新用户试用FREE_TRIAL¥07 天100,0007 天
basic基础版PAID¥39/月30 天40,000随会员
pro 热销专业版PAID¥99/月30 天100,000随会员
enterprise企业版PAID¥199/月30 天200,000随会员
topup_50加油包 ¥50TOPUP¥50—(纯积分)50,000永久
planType:PAID 时间型会员 / TOPUP 纯积分充值 / FREE_TRIAL 试用 · 功能清单 JSON 存储 · 下单写 planSnapshot 防穿越

订单列表

订单号用户套餐金额积分状态渠道时间操作
ORD-20260728-8841陈伟pro¥99.00+100,000PENDINGmanual
ORD-20260728-8840林晓basic¥39.00+40,000COMPLETEDalipay14:02:11
GIFT-20260728-0092林晓pro¥0.00+100,000COMPLETEDgift · by superadmin13:55:02
FREE-20260727-0311郑浩free_trial¥0.00+100,000COMPLETEDfree · 注册自动昨日 09:12
ORD-20260728-8838赵磊pro¥99.00-99,000REFUNDEDalipay11:05:22
ORD-20260728-8837孙倩basic¥39.00CANCELLED
订单 TTL 30 分钟(懒超时)· 钱到必发货 · GIFT/FREE 订单直接 COMPLETED 无需支付

三种客户类型的计费差异(ENABLED_MODULES 控制,代码无差异)

平台型

MOD-BILLING + MOD-PAYMENT 全开。终端用户自助购买套餐 / 充值积分;额度来源 = 用户付费 + 平台赠送 / 试用。阻断文案:「积分不足,请充值后继续对话」。

乙方型

MOD-BILLING 开、MOD-PAYMENT 关。乙方统一充值 → 管理员分配给甲方人员。阻断文案:「额度不足,请联系管理员为您分配额度」。

甲方型

MOD-BILLING 开、MOD-PAYMENT 关。企业统一充值 → 管理员按部门分配额度(赠送 + 有效期 = 配额),员工消耗计入成本核算(costActual),不对员工收费。