Files
junhong_cmp_fiber/openspec/changes/add-carrier-channel-traffic-thresholds/proposal.md
break 15bbb953db
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 13m29s
fix(通道流量阈值): AUG26-011 修复失败/未知结果收敛、锁定 carrier 缺失出路与审计回归
2026-09-16 16:41:25 +08:00

2.2 KiB
Raw Blame History

Scope

  • 迭代编号:AUG26-011

Why

运营商通道需按其计费周期流量自动停复机,不能与套餐预警混用。

What Changes

  • 新增通道阈值、周期和停机锁。
  • 达量可靠停机,新周期按套餐和其他锁条件复机。

Capabilities

New Capabilities

  • carrier-channel-traffic-threshold: 通道流量阈值控制。

Modified Capabilities

  • package-lifecycle: 「套餐状态流转」新增一条复机前置条件——载体在当前计费周期内持有运营商通道流量阈值停机锁时,支付后异步自动复机与套餐激活/重置复机 MUST NOT 调用上游复机流程,并保留该锁(以 specs/package-lifecycle/spec.md 的 MODIFIED delta 建模;主 Spec 同步在归档时进行)。

Impact

影响通道、卡状态、可靠任务、外部运营商调用和 Schema。具体落点

  • tb_carrier 扩列:traffic_threshold_enabledtraffic_threshold_valuetraffic_threshold_unit(周期起始日复用既有 data_reset_day,不新增列)。
  • 新增周期阈值停机锁表:(carrier_id, card_id, period_start) 唯一键、任务状态组、提交认领字段、anomaly_flag;成对迁移。
  • 新增 2 个 Outbox 事件类型停机、复机各一worker 消费。
  • 新增 2 个 cron 与 worker 装配点:周期处理(解锁/条件复机)、恢复扫描(只查询回填),均 @every 1m + asynq.Unique(10m),照 TaskTypeRefundChannelRecovery 形态注册。
  • 新增停因常量 channel_threshold4 个复机入口(resumeSingleCardManualStartCardForceStartCardStartMachineSeparatedCard)新增持锁拒绝,因而改变了既有套餐生命周期自动复机路径的可观察行为(见 Modified Capabilities
  • 停机/复机调用明确失败或结果未知的子任务不退出收敛链路:恢复扫描的未决集合为 {submitted, unknown, failed}(只读状态查询,绝不重试外呼),超 30 分钟仍不可确认转人工;锁行引用的运营商缺失或重置日非法时,周期处理按跨期语义解锁并标记异常转人工。
  • carrier 管理接口字段级守卫与响应过滤(阈值字段仅平台账号可见可写)。