Files
邹进 42e881576d
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m33s
feat: 卡网关按运营商账户限流并记录停复机调用
- 新增网关限流:按本系统运营商账户(卡 carrier_id)→ 限流组 → 操作限制每秒请求数,每次 HTTP 尝试计量,默认限流、仅后台人工点击/通道阈值/自动续费/手动刷新豁免;支持只统计与拦截两种模式,默认只统计
- Asynq 遇限流不计失败、固定短延迟重试;轮询任务与停复机业务重试遇限流短延迟重排
- 停机、复机不再使用网关内部重试,只发一次请求
- 网关返回结构化错误;新增上游错误分类规则表与测试接口
- 新增按月分区的停复机记录表:系统自动停复机只写记录,不再写统一审计与集成日志;普通轮询查询不再写集成日志
- 新增限流组、错误分类、停复机记录、按账户调用统计与枚举后台接口
- 迁移 000243~000246;同步 OpenSpec 提案(含后续 6 个 change)与技术方案、工程约束
2026-10-24 15:06:41 +09:00

1.4 KiB

MODIFIED Requirements

Requirement: 优先调度与执行提示通道

优先轮询项 MUST 以持久化事实为权威;执行提示 MUST 通过把该卡对应检查类型设为立即到期、并把卡放入其所属运营商账户的优先队列下发;卡正在执行时只打优先标记,本次执行结束后立即再执行一次。同一张卡在一个账户中只占一个队列成员,多次提示 MUST 合并。手动触发队列取出的卡 MUST 设为立即到期并放入所属账户的普通队列。分发器 MUST 在每轮领取中先领优先队列、再领普通队列,优先领取数受账户 priority_max_ratio 约束。提示 MUST NOT 作为活动、权限或尝试次数的判定依据。优先 MUST NOT 绕过运营商账户限流与执行上限。

Scenario: 提示丢失

  • WHEN 优先提示因缓存服务重启丢失
  • THEN 后续普通轮询执行仍按活动优先轮询项认领并执行,仅退化为延迟到该卡下一次到期,不丢事实也不产生第二套补偿

Scenario: 同一轮的领取顺序

  • WHEN 同一账户的优先队列与普通队列都有已到期的卡
  • THEN 分发器先领优先队列,在优先占比内领取后再领普通队列

Scenario: 执行中收到优先提示

  • WHEN 卡正在执行卡任务时收到优先提示
  • THEN 系统打优先标记,本次执行结束后该卡立即再执行一次,不并行执行