package constants

// PollingShardCount 轮询队列默认分片数
// 千万级规模下，16 分片可将单队列深度控制在 ~60 万以内
const PollingShardCount = 16

// PollingBackpressureThreshold 单分片队列背压阈值
// 超过此深度时，Scheduler 跳过该分片本轮出队，防止 Asynq 积压过载
// 默认 50 万，可根据 Asynq Worker 处理速度调整
const PollingBackpressureThreshold = 500_000

// PollingDequeueMaxBatchSize Lua 脚本单次出队上限
// 受 Lua unpack() 的 LUAI_MAXCSTACK 约 8000 限制，保守取 7000
const PollingDequeueMaxBatchSize = 7000

// PollingDefaultMaxConcurrency 并发信号量默认上限
// 读取 Redis 配置 key 失败时使用，作为安全兜底值
// 300：支撑 10M 卡、2小时 carddata 间隔（Gateway 200ms → 300并发 = 1500任务/秒/类型）
const PollingDefaultMaxConcurrency = 300

// PollingConcurrencyKeyTTL 并发计数 key 的过期时间（秒）
// 保证 Worker 意外崩溃（defer Decr 未执行）时计数器在此时间内自动归零
const PollingConcurrencyKeyTTL = 600 // 10 分钟

// 轮询手动触发日志状态常量
const (
	// PollingManualTriggerStatusPending 轮询手动触发日志状态-待处理
	PollingManualTriggerStatusPending = "pending"
	// PollingManualTriggerStatusProcessing 轮询手动触发日志状态-处理中
	PollingManualTriggerStatusProcessing = "processing"
	// PollingManualTriggerStatusCompleted 轮询手动触发日志状态-已完成
	PollingManualTriggerStatusCompleted = "completed"
	// PollingManualTriggerStatusCancelled 轮询手动触发日志状态-已取消
	PollingManualTriggerStatusCancelled = "cancelled"
)
