feat: restore credit limits and harden SMS sending
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
| 模板 | 验证码模板 `验证码为 ${code}`,营销模板 `尊敬的${name},优惠活动开始`,分别准备草稿、待审核、通过、驳回。 |
|
||||
| 通道 | active CMPP 通道、disabled 通道、备用通道;通道组包含主备优先级。 |
|
||||
| 号码 | 合法号码、重复号码、非法号码、企业黑名单号码、全局黑名单号码。 |
|
||||
| 账户 | 现金余额充足、现金余额不足;不配置套餐余量或授信额度。 |
|
||||
| 账户 | 现金余额与授信额度组合后的和为正数、0、负数;授信额度覆盖正数、负数和 0;不配置套餐余量。 |
|
||||
| 企业认证 | 未认证、待审核、已通过、已驳回四类企业认证资料。 |
|
||||
| 客户 | 正常客户、停用客户、欠费客户、未认证客户、跨租户客户、客户联系人和开票资料。 |
|
||||
| 导入文件 | UTF-8 CSV、GBK CSV、TXT、超 20 MB 文件、含空行/重复/非法号码/非法字符文件。 |
|
||||
@@ -805,6 +805,19 @@
|
||||
- jobId 使用 messageRecordId,避免重复入队。
|
||||
- 批量任务状态变为 queued。
|
||||
|
||||
### TC-SEND-002A 生产发送 Worker 配置门禁
|
||||
|
||||
- 优先级:P0
|
||||
- 前置条件:使用生产环境文件执行发布脚本。
|
||||
- 步骤:
|
||||
1. 删除或关闭 `API_ENABLE_SEND_WORKER`,执行发布脚本。
|
||||
2. 配置 `API_ENABLE_SEND_WORKER=true` 和正整数 `API_SEND_WORKER_CONCURRENCY`,重新发布。
|
||||
3. 创建一条 queued 短信并观察 Redis BullMQ 与数据库提交记录。
|
||||
- 预期结果:
|
||||
- 步骤 1 在构建、迁移和服务重启前终止,明确提示发送 Worker 未启用。
|
||||
- 步骤 2 发布成功,API 启动发送 Worker。
|
||||
- 步骤 3 的 job 不长时停留在 `prioritized/wait`,且真实生成 `SmsSubmitRecord` 并进入 Gateway。
|
||||
|
||||
### TC-SEND-003 通道路由和 Gateway SubmitCommand
|
||||
|
||||
- 优先级:P0
|
||||
@@ -3205,12 +3218,13 @@ npm run verify:phase8
|
||||
| 用例 | 细化执行点 | 必查断言 |
|
||||
| --- | --- | --- |
|
||||
| TC-BILLING-006 | 运营端人工充值现金金额,客户端查看 Dashboard 和充值记录。 | RechargeOrder 状态为 paid/manual_topup;TenantAccount 现金余额同步增加;AccountTransaction 类型 recharge;充值记录“充值后余额”必须等于该订单关联 AccountTransaction.balanceAfter,不能用当前账户余额替代;运营日志可追溯。 |
|
||||
| TC-BILLING-007 | 分别填写正数金额和负数金额执行充值、冲正;提交 0 或非法金额。 | 正负金额方向正确;0 和非法金额被拒绝;数据模型和接口不存在短信条数、套餐或授信字段。 |
|
||||
| TC-BILLING-007 | 分别填写正数金额和负数金额执行充值、冲正;提交 0 或非法金额;将授信额度配置为正数、负数和 0。 | 充值正负金额方向正确;0 和非法充值金额被拒绝;三种授信值都能保存并写操作日志;数据模型和接口不存在短信套餐条数字段。 |
|
||||
| TC-BILLING-008 | 对已充值记录执行撤销/冲正,分别覆盖未消费和已部分消费。 | 未消费可全额回退;已消费按规则拒绝或生成人工调整;原订单状态和反向流水清晰;日志记录原因。 |
|
||||
| TC-BILLING-009 | 无权限用户、审核员、管理员分别执行充值;大额人工充值不走审批。 | 权限不足被拒绝并写失败日志;有权限用户确认后立即入账;不产生 pending 审批态;充值订单、账户余额、流水和日志同步完成。 |
|
||||
| TC-BILLING-010 | 余额不足发送失败,人工充值后重试发送并模拟 delivered。 | 充值前不扣费;充值后发送成功;冻结、扣费、短信计费记录完整;reconciliation diff 为 0。 |
|
||||
| TC-BILLING-011 | 账户现金余额 100 分,预估费用 5 分,且数据库不存在套餐和授信数据;再将余额改为 4 分重试。 | 100 分时可发送,4 分时提示“企业账户余额不足”;判断只依赖 TenantAccount.balanceCents。 |
|
||||
| TC-BILLING-011 | 分别准备 `余额+授信` 为正数、0 和负数的账户,使用相同短信费用发起发送。 | 和为正数时允许发送;和为 0 或负数时提示余额不足。判断公式为 `balanceCents + creditCents > 0`,与本次费用和套餐无关。 |
|
||||
| TC-BILLING-012 | 已扣费短信收到最终失败回执;另一个未提交成功任务只释放冻结。 | 前者只生成一条 refunded 流水并计入“今日返还”;重复回执不重复退款;后者的 released 流水不计入“今日返还”。 |
|
||||
| TC-BILLING-013 | 准备已提交扣费但 72 小时完全无回执的 `submitted` 短信,以及有 `UNKNOWN` 回执且超过 72 小时的短信;启动 API 定时扫描并模拟重复扫描。 | 两类短信都转为 timeout 并退款;任务进度刷新;同一短信只退款一次;定时扫描默认启用且每 5 分钟执行。 |
|
||||
|
||||
### 17.6 系统日志细化
|
||||
|
||||
|
||||
Reference in New Issue
Block a user