Files
junhong_cmp_fiber/openspec/changes/add-polling-pause-list-and-batch-toggle/tasks.md
邹进 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

3.5 KiB
Raw Blame History

0. 前置确认

  • 0.1 停机被拒视图实施前确认第 5、6 个 Change 已上线;开关与清单部分可先行。

1. 迁移与模型

  • 1.1 新增成对迁移:建 tb_card_polling_pause(资产类型、资产 ID、ICCID 或 IMEI、运营商账户、状态、关闭来源、原因、操作人、关闭时间、导入任务 ID、恢复来源、恢复人、恢复时间;部分唯一索引 (asset_type, asset_id) WHERE status = 已关闭);down 删表。
  • 1.2 同迁移补写存量:enable_polling = false 的卡与设备,风险停机或已销户记"风险停机或已销户自动关闭",其余记"历史数据"。
  • 1.3 新增 model 与 Store。

2. 统一的轮询开关写入

  • 2.1 新增"改轮询开关(资产、目标状态、来源、原因、操作人)":同事务写 enable_polling、清单与审计,提交后调用生命周期移入或移出。
  • 2.2 改造全部入口经此函数:单资产接口、风险停机或已销户自动关闭(network.go)、设备级联、自动恢复、告警页关闭。

3. 批量与导入

  • 3.1 POST /iot-cards/batch-update-polling-status、POST /devices/batch-update-polling-status:单次 500、数据权限、逐项事务与结果、批量开启跳过风险停机与已销户。
  • 3.2 文件导入:POST /polling-status-imports、GET /polling-status-imports、GET /polling-status-imports/:id;异步逐行处理与结果。

4. 自动恢复轮询

  • 4.1 order/service.go activatePackage 套餐生效后:关闭轮询且非风险停机、已销户的卡或设备先恢复轮询(来源"支付或下单生效"),再请求评估(第 6 个 Change 前为现有复机路径)。
  • 4.2 改有效期接口:保存后资产有生效套餐时同样恢复(来源"改有效期")。

5. 查询、筛选与导出

  • 5.1 GET /card-polling-pauses(筛选与分页);导出场景 polling_pause;清单页勾选批量开启复用 3.1。
  • 5.2 卡列表、设备列表 Query 增加 enable_polling 筛选,导出带该字段。
  • 5.3 开关轮询影响说明随接口文档与返回提供。

6. 停机被拒视图

  • 6.1 GET /polling-failure-alerts?view=stop_refused 与展示字段;导出场景 polling_stop_refused_alert。
  • 6.2 POST /polling-failure-alerts/close-polling:单次 500,经统一开关写入,来源"停机被拒告警处理",告警状态改为已关闭轮询。

7. 编译与规范校验

  • 7.1 gofmt -w;go build ./cmd/api ./cmd/worker 通过;重新生成接口文档。
  • 7.2 openspec validate add-polling-pause-list-and-batch-toggle 与 openspec doctor --json 通过。

8. 测试环境验证(自动化测试为 N/A,按 ENG-TEST-001)

  • 8.1 批量关闭与开启:逐项结果正确;风险停机与已销户跳过;超过 500 被拒;越权项返回无权限。
  • 8.2 文件导入部分成功不回滚,逐行原因正确。
  • 8.3 清单:每个入口改开关都写清单;同一资产只有一条已关闭;恢复后保留历史;存量补写数量与生产关闭轮询的卡设备数一致。
  • 8.4 自动恢复:支付、后台下单、批量下单、OpenAPI 下单、改有效期后恢复轮询并按规则复机;已销户不恢复;排队激活不恢复。
  • 8.5 卡与设备列表是否轮询筛选与导出字段正确;清单导出与停机被拒导出可用。
  • 8.6 告警页批量关闭轮询后清单来源与告警状态正确。