feat: 套餐系统升级 - Worker 重构、流量重置、文档与规范更新
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m54s

- 重构 Worker 启动流程,引入 bootstrap 模块统一管理依赖注入
- 实现套餐流量重置服务(日/月/年周期重置)
- 新增套餐激活排队、加油包绑定、囤货待实名激活逻辑
- 新增订单创建幂等性防重(Redis 业务键 + 分布式锁)
- 更新 AGENTS.md/CLAUDE.md:新增注释规范、幂等性规范,移除测试要求
- 添加套餐系统升级完整文档(API文档、使用指南、功能总结、运维指南)
- 归档 OpenSpec package-system-upgrade 变更,同步 specs 到主目录
- 新增 queue types 抽象和 Redis 常量定义
This commit is contained in:
2026-02-12 14:24:15 +08:00
parent 655c9ce7a6
commit c665f32976
51 changed files with 7289 additions and 424 deletions

View File

@@ -0,0 +1,49 @@
# Spec Delta: IoT卡轮询系统扩展
## MODIFIED Requirements
### Requirement: 流量检查任务支持新的扣减优先级
系统 SHALL 在轮询系统的流量检查任务HandleCarddataCheck实现新的流量扣减优先级机制。
#### Scenario: 优先扣减加油包流量
- **WHEN** 轮询系统检测到卡流量增加,卡有主套餐和加油包
- **THEN** 系统优先更新加油包的 data_usage_mb再更新主套餐
#### Scenario: 按 Priority 顺序扣减多个加油包
- **WHEN** 卡有多个加油包,流量增加
- **THEN** 系统按 priority 从小到大顺序扣减流量
### Requirement: 停机条件检查调整
系统 SHALL 在轮询系统中,仅当主套餐和所有加油包流量都用完时触发停机。
#### Scenario: 主套餐用完但加油包有剩余不停机
- **WHEN** 主套餐 data_usage_mb >= data_limit_mb但加油包有剩余流量
- **THEN** 系统不触发停机操作
#### Scenario: 所有套餐流量用完触发停机
- **WHEN** 主套餐和所有加油包 data_usage_mb >= data_limit_mb
- **THEN** 系统触发停机操作
## ADDED Requirements
### Requirement: 套餐激活检查任务
系统 SHALL 新增套餐激活检查任务HandlePackageActivation定期检查待激活的主套餐。
#### Scenario: 定期检查待激活主套餐
- **WHEN** 轮询系统每分钟执行一次套餐激活检查
- **THEN** 系统查询所有已过期主套餐,激活 priority 最小的待生效主套餐
#### Scenario: 激活延迟小于1分钟
- **WHEN** 主套餐在 00:00:00 过期
- **THEN** 系统在 00:01:00 之前完成下一个主套餐的激活
### Requirement: 流量重置调度任务
系统 SHALL 新增流量重置调度任务HandleDataReset根据套餐的 data_reset_cycle 定期重置流量。
#### Scenario: 每日0点触发日重置任务
- **WHEN** 系统时间到达 00:00:00
- **THEN** 系统重置所有 data_reset_cycle=daily 的套餐 data_usage_mb=0
#### Scenario: 每月1号触发月重置任务
- **WHEN** 系统时间到达每月1号 00:00:00
- **THEN** 系统重置所有 data_reset_cycle=monthly 的套餐 data_usage_mb=0