docs: 同步能力规范 — 新增购买/重置后复机 spec,更新停复机和排队激活规范
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:
2026-03-31 18:12:52 +08:00
parent 8b5cd50576
commit ad095d73f3
4 changed files with 160 additions and 0 deletions

View File

@@ -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`(已停用)