计费中心
积分包 + 套餐 双原语计费 · FIFO 扣减 · 负余额欠费冲抵(FR-AIP-04/05/08)
所有额度来源统一为「创建一个积分包」:购买充值 RECHARGE / 赠送 GIFT / 管理员分配 ADJUST_ADMIN / 试用 FREE_TRIAL。每包独立 remainingAmount + expiresAt,按过期时间 FIFO 扣减,允许扣到负(欠费),入账自动冲抵。
会员是时间存续窗口:由 COMPLETED 订单排队推导,多次购买 / 赠送时长接续叠加(FR-127)。套餐可附带积分(发放为 GIFT 积分包),发放后会员与积分各自独立消耗。
对话放行 = 会员有效(isActive) AND 积分余额 > 0。会员=门(能不能用),积分=燃料(还有多少额度)。任一不满足 → 每条消息阻断(前端预检 + 服务端 gate)。
管理员操作
赠送 / 试用 / 配额分配 —— 三种客户类型通用(平台型自助付费 · 乙方型统一充值分配 · 甲方型内部成本核算)正向 = 新建包(INSERT);负向 = FIFO 逐包扣减(持锁可扣到负)。入账后自动冲抵欠费。
会员时长排队叠加(接续当前到期之后);积分有效期与会员排队对齐(FR-128)。
「配额」= 赠送 + 有效期(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(试用到期) |
积分包明细(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 |
会员记录(购买 / 赠送排队)
排队叠加 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 | 已过期 |
套餐管理(MembershipPlan)
| 编码 | 名称 | 类型 | 价格 | 会员天数 | 附带积分 | 积分有效期 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|
| free_trial | 新用户试用 | FREE_TRIAL | ¥0 | 7 天 | 100,000 | 7 天 | ||
| basic | 基础版 | PAID | ¥39/月 | 30 天 | 40,000 | 随会员 | ||
| pro 热销 | 专业版 | PAID | ¥99/月 | 30 天 | 100,000 | 随会员 | ||
| enterprise | 企业版 | PAID | ¥199/月 | 30 天 | 200,000 | 随会员 | ||
| topup_50 | 加油包 ¥50 | TOPUP | ¥50 | —(纯积分) | 50,000 | 永久 |
订单列表
| 订单号 | 用户 | 套餐 | 金额 | 积分 | 状态 | 渠道 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|---|
| ORD-20260728-8841 | 陈伟 | pro | ¥99.00 | +100,000 | PENDING | manual | — | |
| ORD-20260728-8840 | 林晓 | basic | ¥39.00 | +40,000 | COMPLETED | alipay | 14:02:11 | |
| GIFT-20260728-0092 | 林晓 | pro | ¥0.00 | +100,000 | COMPLETED | gift · by superadmin | 13:55:02 | |
| FREE-20260727-0311 | 郑浩 | free_trial | ¥0.00 | +100,000 | COMPLETED | free · 注册自动 | 昨日 09:12 | |
| ORD-20260728-8838 | 赵磊 | pro | ¥99.00 | -99,000 | REFUNDED | alipay | 11:05:22 | |
| ORD-20260728-8837 | 孙倩 | basic | ¥39.00 | — | CANCELLED | — | — |
三种客户类型的计费差异(ENABLED_MODULES 控制,代码无差异)
MOD-BILLING + MOD-PAYMENT 全开。终端用户自助购买套餐 / 充值积分;额度来源 = 用户付费 + 平台赠送 / 试用。阻断文案:「积分不足,请充值后继续对话」。
MOD-BILLING 开、MOD-PAYMENT 关。乙方统一充值 → 管理员分配给甲方人员。阻断文案:「额度不足,请联系管理员为您分配额度」。
MOD-BILLING 开、MOD-PAYMENT 关。企业统一充值 → 管理员按部门分配额度(赠送 + 有效期 = 配额),员工消耗计入成本核算(costActual),不对员工收费。