Files
junhong_cmp_fiber/openspec/changes/remove-device-protect-period/tasks.md
邹进 fad7dbfdff
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 1m39s
docs: 设备保护期下线测试环境验证通过
2026-10-25 17:35:54 +09:00

3.2 KiB
Raw Blame History

1. 迁移

  • 1.1 新增成对迁移:更新 tb_polling_config.protect_check_interval、tb_iot_card.last_protect_check_at 列注释为"已废弃";down 恢复原注释。(000249_deprecate_device_protect_columns)

2. 设备与单卡停复机

  • 2.1 internal/service/device/service.go:设备停机、复机不再设置保护期,不再因保护期拒绝相反操作。
  • 2.2 internal/service/iot_card/stop_resume_service.go:手动停复机单卡(第 969、1036 行附近)去掉保护期检查。(同时删除只服务于保护期轮询的 ForceStopCard、ForceStartCard)
  • 2.3 删除 RedisDeviceProtectKey、DeviceProtectPeriodDuration;保留 StopReasonProtectPeriod 并在注释说明不再产生新值。

3. 下线保护期轮询

  • 3.1 删除 internal/task/polling_protect_handler.go;pkg/queue/handler.go 对 polling:protect 改为空处理函数直接成功(下一次发布再移除)。(TaskTypePollingProtect 常量与队列权重暂留,用于消化存量任务)
  • 3.2 调度器、初始化器、生命周期、监控与统计去掉 protect 类型;删除 ProtectCheckSkipsForRealname。
  • 3.3 轮询并发配置与任务类型名称去掉 protect,提交 protect 时拒绝。(数据库 protect 行保留,服务层过滤:列表不返回,查询、更新、重置返回参数错误)
  • 3.4 PollingConfig 模型与 DTO 去掉 ProtectCheckInterval;config_manager.go 匹配去掉保护期;IotCard 模型去掉 LastProtectCheckAt 的读写。

4. 资产接口兼容

  • 4.1 后台与 C 端资产详情的 device_protect_status 固定返回 none,DTO 说明标记已废弃;internal/service/asset/service.go 不再读取保护期 key。(三个字段加 deprecated:"true",接口文档显示已废弃)
  • 4.2 重新生成接口文档。

5. 编译与规范校验

  • 5.1 gofmt -w;go build ./cmd/api ./cmd/worker 通过;全仓检索无残留的保护期 key 读写。
  • 5.2 openspec validate remove-device-protect-period 与 openspec doctor --json 通过。(validate 通过;当前 openspec 无 doctor 命令)

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

  • 6.1 设备停机后立即复机成功,不被保护期拒绝;单卡手动停复机同样。(2026-10-25:设备 10 停机后立即单卡复机 8027 成功,未被保护期拒绝;设备整体复机被上游"两次请求时间间隔过短""3 分钟内状态管理接口限 1 次"拒绝,4 分钟后复机成功,均为运营商限制)
  • 6.2 不再产生 polling:protect 任务与 protect_period 停机原因;历史 protect_period 记录正常展示。(新 Worker 启动后不再派发 polling:protect,库中无新 protect_period;测试库无 protect_period 历史数据,开放接口映射保留在代码中;已清理测试 Redis 残留保护期分片队列与统计 17 个 key)
  • 6.3 资产详情 device_protect_status 恒为 none;轮询配置接口不含保护期间隔;并发配置不含 protect。(资产详情返回 none;轮询配置无 protect_check_interval;并发配置仅 4 类,查询与更新 protect 返回"保护期检查已下线";监控、队列、手动触发不含保护期)