docs: 同步能力规范 — 新增购买/重置后复机 spec,更新停复机和排队激活规范
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m8s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m8s
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -381,3 +381,33 @@ CREATE INDEX idx_package_usage_priority ON tb_package_usage(iot_card_id, status,
|
||||
| | 轮询系统宕机 | 恢复后自动激活过期套餐 |
|
||||
| **性能场景** | 单个套餐激活延迟 | < 20 秒 |
|
||||
| | 10000 个套餐同时过期 | P99 < 5 分钟 |
|
||||
| **Depleted 场景** | 已耗尽套餐到期 + 有排队套餐 | 耗尽套餐→Expired,激活下一个 |
|
||||
| | 已耗尽套餐到期 + 无排队套餐 | 耗尽套餐→Expired,载体进入无套餐状态 |
|
||||
|
||||
---
|
||||
|
||||
## 迭代更新(fix-stop-resume-lifecycle-engine)
|
||||
|
||||
### MODIFIED Requirement: 同时只能有一个生效中的主套餐
|
||||
|
||||
**到期检测扩展**:过期检测 SHALL 同时覆盖 `status=1`(生效中)和 `status=2`(已耗尽)的主套餐。当 `expires_at <= now` 时,无论套餐当前是生效中还是已耗尽,均视为到期,触发下一个排队套餐激活。
|
||||
|
||||
查询条件:`WHERE status IN (1,2) AND expires_at <= now AND master_usage_id IS NULL`
|
||||
|
||||
#### Scenario: 已耗尽(Depleted)主套餐到期后触发下一个激活
|
||||
- **GIVEN** 卡 C2 有已耗尽主套餐(`status=2 Depleted`,`expires_at=过去时间`)和一个预购排队套餐(`status=0`)
|
||||
- **WHEN** 过期检测任务扫描(查询条件:`status IN (1,2) AND expires_at <= now AND master_usage_id IS NULL`)
|
||||
- **THEN** 耗尽套餐更新为 `status=3 Expired`,加油包级联失效,预购排队套餐激活为 `status=1`
|
||||
- **AND** 如卡因流量耗尽停机且已实名,触发自动复机
|
||||
|
||||
#### Scenario: 已耗尽套餐到期时加油包级联失效
|
||||
- **GIVEN** 卡 C3 有耗尽主套餐(`status=2`,`expires_at=过去时间`),以及绑定到该主套餐的 1 个加油包(`status=1`,尚有剩余流量)
|
||||
- **WHEN** 过期检测任务处理该主套餐
|
||||
- **THEN** 主套餐更新为 `status=3`,加油包更新为 `status=4 Invalidated`(即使尚有剩余流量)
|
||||
- **AND** 下一个排队主套餐激活
|
||||
|
||||
#### Scenario: 已耗尽套餐到期且无下一个排队套餐
|
||||
- **GIVEN** 卡 C4 有耗尽主套餐(`status=2`,`expires_at=过去时间`),无排队套餐
|
||||
- **WHEN** 过期检测任务处理该主套餐
|
||||
- **THEN** 耗尽套餐更新为 `status=3`,加油包级联失效,无新套餐激活
|
||||
- **AND** 卡的业务状态更新为 `IotCardStatusSuspended=4`(已停用)
|
||||
|
||||
Reference in New Issue
Block a user