## Why 后台对设备停机或复机时会设置 1 小时保护期,保护期内阻止相反的人工操作,`protect` 轮询发现方向不一致时强制停复机。但自动停复机不检查保护期,保护期内会出现"自动停机 → 保护期强制复机 → 再自动停机"的反复翻转,且与"只要符合规则就自动停复机"的原则冲突。本 Change 是《轮询按运营商账户限流技术方案》第五部分第 3 节第 3 步:整体下线保护期,为后续调度与停复机改造减负。 ## What Changes - **BREAKING** 后台设备停机、复机不再设置保护期,也不再因保护期拒绝相反操作;单卡手动停复机去掉保护期检查。 - **BREAKING** 下线 `polling:protect` 轮询任务类型:不再注册、调度、统计与监控;轮询并发配置与任务类型名称不再包含保护期检查。 - 轮询配置的 `protect_check_interval` 不再读写,接口不再接受与返回该字段;数据库列保留,列注释标记已废弃。 - 卡字段 `last_protect_check_at` 不再读写;数据库列保留,列注释标记已废弃。 - 资产接口(后台与 C 端)的 `device_protect_status` **字段保留**,固定返回"无保护期"并在接口文档标记废弃,待前端与老版本小程序不再读取后另行删除。 - 停机原因常量 `protect_period` 保留(历史数据与对外开放接口映射仍需要),不再产生新值;删除 `RedisDeviceProtectKey`、`DeviceProtectPeriodDuration`。 - 存量保护期 Redis key 上线后自然过期(TTL 1 小时),不做迁移。 ## Capabilities ### New Capabilities (无) ### Modified Capabilities - `polling-operations`:"轮询并发配置覆盖实际任务"去掉 `protect`;"轮询任务类型名称可读"去掉"保护期检查"。 - `asset-device`:新增"设备停复机不设保护期"要求,并约定 `device_protect_status` 字段的兼容返回。 ## Impact - 依赖:无前置 Change。第 4 个 Change 改写通道阈值规范时一并去掉"保护期强制复机"表述。 - 数据库:新增成对迁移,只更新 `tb_polling_config.protect_check_interval`、`tb_iot_card.last_protect_check_at` 的列注释(标记废弃);不删列、不改数据。 - 代码:删除 `internal/task/polling_protect_handler.go` 与 `pkg/queue/handler.go` 中的注册;`internal/service/device/service.go`(不设、不查保护期);`internal/service/iot_card/stop_resume_service.go`(手动停复机去掉保护期检查);`stop_resume_unified.go` 删除 `ProtectCheckSkipsForRealname`;`internal/polling/config_manager.go`、`initializer.go`、调度器去掉 `protect` 类型;`internal/model/dto/polling_config_dto.go`、`asset_dto.go`、`client_asset_dto.go`、`internal/service/asset/service.go`;`pkg/constants`。 - 接口:`/polling-configs` 不再含 `protect_check_interval`;`/polling-concurrency` 不再含 `protect`;资产详情 `device_protect_status` 固定为无保护期并标记废弃。重新生成接口文档。 - 前端:轮询配置页去掉保护期间隔;资产详情(后台与 C 端)不再展示保护期状态。