feat: restore credit limits and harden SMS sending

This commit is contained in:
hectorzhao
2026-07-14 18:46:35 +08:00
parent 3e3b7a9d1a
commit c1a17699db
23 changed files with 796 additions and 56 deletions
@@ -4,7 +4,7 @@
本文基于当前前端设计原型整理,用于交给 Codex 或开发团队执行第一版落地开发。
当前确认:第一版保留短信业务,排除彩信功能;账户按现金余额计费,人工充值和充值记录进入第一版开发范围,套餐、短信余量、授信额度、账单流水页面和公开交易查询 API 不进入第一版。彩信服务、彩信应用/签名/模板 Tab,以及运营端彩信相关菜单标记为“待开发”;业务性能指标为“平台可稳定入队并调度 500 条短信/秒,实际向通道 submit 受通道限速配置控制”。
当前确认:第一版保留短信业务,排除彩信功能;账户按现金余额和授信额度计费,人工充值和充值记录进入第一版开发范围,套餐、短信余量、账单流水页面和公开交易查询 API 不进入第一版。彩信服务、彩信应用/签名/模板 Tab,以及运营端彩信相关菜单标记为“待开发”;业务性能指标为“平台可稳定入队并调度 500 条短信/秒,实际向通道 submit 受通道限速配置控制”。
## 1. 项目目标
@@ -17,7 +17,7 @@
- 支持通道级限速、失败重试、回执同步和发送记录追踪。
- 支持企业、应用、签名、模板、通道、通道组、报备任务等核心配置数据的后台维护。
- 彩信功能仅保留菜单占位或隐藏,不进入第一版开发范围。
- 账户现金余额计费、人工充值充值记录进入第一版范围,并与发送记录形成可对账闭环;不提供套餐短信余量和授信额度
- 账户现金余额、授信额度、人工充值充值记录进入第一版范围,并与发送记录形成可对账闭环;不提供套餐短信余量。
## 2. 角色与权限
@@ -329,13 +329,14 @@
1. 客户端可查看现金余额和充值记录;充值由运营端人工入账。
2. 发送创建时按短信内容计费条数和企业应用客户单价生成预估费用,计费条数只按 70/67 字规则拆分;不按移动、联通、电信配置不同客户价。
3. 平台发送前只检查企业现金余额,余额大于等于预估费用即可发送。
3. 平台发送前只判断 `现金余额 + 授信额度 > 0`;授信额度可为正数、负数或 0,和小于等于 0 时禁止发送。
4. 发送链路需记录计费条数、计费单价、计费金额、账务状态。
5. 账单流水与短信记录可追溯关联,支持按企业、应用、任务、手机号、时间对账。
6. 最终失败、超时失败需要退费。
7. 三网通道成本只用于平台内部成本核算,不影响客户扣费金额。
8. 当前版本计费口径固定为提交 accepted 扣费、最终 failed receipt/timeout 退款。
9. 所有面向用户展示的金额、余额、充值金额和单价统一以人民币元展示并固定保留三位小数;内部仍使用分或最小计费单位持久化,不以展示精度改变账务计算。
10. API 必须定时扫描提交成功但超过 72 小时仍未收到明确最终回执的短信,转为 timeout 并退还已扣金额;扫描需覆盖 `submitted``unknown`,且用条件更新避免多实例重复退款。
## 5. 功能需求
@@ -503,7 +504,7 @@
- 充值记录:支持运营人员人工充值和负数冲正。
- 账单流水:支持冻结、扣费、退费、解冻、人工调整、失败返还。
- 计费规则:支持按短信计费条数和企业应用单价计算费用发送额度仅取现金余额
- 计费规则:支持按短信计费条数和企业应用单价计算费用发送准入额度为现金余额加授信额度。
- 账务流水必须与短信记录形成可追溯关系,支持对账导出。
- 最终失败、超时失败需要退费。
- 计费口径可配置为按提交成功计费或按回执成功计费。
@@ -1225,7 +1226,7 @@
验收标准:
- 客户端账户余额和充值记录进入第一版。
- 发送前校验企业现金余额。
- 发送前校验企业现金余额与授信额度之和必须大于 0
- 每条短信记录可追溯到账务流水。
### 阶段 6:风控与审核