Files
junhong_cmp_fiber/internal/polling/carrierqueue/sr_queue.go
邹进 934a3a27a1
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
feat: 停复机指令队列与设备维度判断
自动停复机统一经停复机指令队列执行(全局开关 polling.stop_resume.queue_enabled,默认关闭):
- 统一判断函数 decideCard,新旧路径共用;暂停轮询的卡在套餐到期、退款场景照常停机
- 同卡一条指令、版本号覆盖;领取校验单卡最小重试间隔;先于卡任务领取,不受 scheduler_mode 限制
- 执行器只调用一次网关,按错误分类退避与告警,结果未知在队列内确认
- 设备维度判断合并请求与场景,版本变化再判断,旧路径持设备锁时推后
- 套餐激活、重置、订单、流量扣减、套餐到期、退款、实名管控修改改为请求评估
- 监控增加停复机队列与近 1 小时执行计数,单卡轮询状态返回当前指令
- 迁移 000255 插入开关与告警、退避参数

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 00:36:26 +09:00

30 lines
1.0 KiB
Go

package carrierqueue
import "context"
// CommandQueue 是停复机指令队列写入端:开关读取受控系统配置,写入走共享缓存 Lua。
type CommandQueue struct {
store *Store
settings *SettingsProvider
}
// NewCommandQueue 创建停复机指令队列写入端。
func NewCommandQueue(store *Store, settings *SettingsProvider) *CommandQueue {
return &CommandQueue{store: store, settings: settings}
}
// Enabled 返回停复机出口开关 polling.stop_resume.queue_enabled。
func (q *CommandQueue) Enabled(ctx context.Context) bool {
return q != nil && q.store != nil && q.settings.Current(ctx).StopResumeQueueEnabled
}
// WriteCommand 写入或覆盖卡的停复机指令。
func (q *CommandQueue) WriteCommand(ctx context.Context, cmd StopResumeCommand) (int64, error) {
return q.store.WriteCommand(ctx, cmd)
}
// RequestDeviceEval 请求一次设备维度判断。
func (q *CommandQueue) RequestDeviceEval(ctx context.Context, deviceID uint, scenes []string) error {
return q.store.RequestDeviceEval(ctx, deviceID, scenes)
}