update
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m49s

This commit is contained in:
2026-09-03 09:28:28 +08:00
parent dbfeeee253
commit 370fd3e67f
150 changed files with 64402 additions and 247 deletions

View File

@@ -0,0 +1,21 @@
## ADDED Requirements
### Requirement: 套餐生命周期自动优先入队
系统 SHALL 在下列业务事实提交成功后,将关联资产对应卡自动加入优先轮询队列:无有效套餐、新购套餐首次成为有效套餐、已过期套餐完成续购、流量用尽后购买的加油包完成生效,及普通轮询出现既有异常补偿条件。具备既有轮询手动触发权限的后台账号也可为其数据范围内资产手动入队并必须填写原因。入队必须等待订单、支付、套餐使用记录提交成功;失败或取消订单不得入队。队列项记录触发类型(新购、过期续购、加油包)、来源订单/套餐使用记录、触发时间及执行结果。
同一卡只能有一条活动优先项。多个触发同时到达时,系统合并来源事实、保留最近触发时间,且最多执行一次未完成优先轮询;不得因重复支付回调、任务重放或相同订单重试重复入队。手动入队不允许修改调度优先级或绕过既有并发上限;它与自动/异常触发合并到同一卡活动项。
#### Scenario: 人工与异常补偿触发合并
- **WHEN** 同一卡已有自动入队活动项,管理员手动触发或普通轮询异常补偿再次触发
- **THEN** 系统仅追加触发来源、次数和最近时间,不创建第二项或重复调用轮询
#### Scenario: 重复支付成功回调
- **WHEN** 已生效套餐订单的支付成功回调重复投递
- **THEN** 系统仅创建或更新一条关联该卡的活动优先队列项
### Requirement: 优先领取、执行与出队审计
Worker SHALL 先领取活动优先项,再执行既有套餐、流量和卡状态轮询;普通轮询不得与已领取优先项并发。领取时使用行锁跳过已锁项,同一卡由队列状态互斥。轮询成功后标记完成并出队;可恢复失败按既有策略重试,超过策略标记失败并保留安全失败原因。入队、领取、每次失败、重试、完成和失败出队均记录触发来源、操作来源、时间和结果;仅具有既有轮询任务权限的后台账号可查询记录。
#### Scenario: 普通轮询遇到优先项
- **WHEN** 普通轮询准备处理一张存在活动或已领取优先项的卡
- **THEN** 普通轮询跳过该卡,直到优先项完成或失败出队