## Why 轮询系统目前缺少对卡开停机状态(NetworkStatus)的主动轮询:已有实名状态、流量、套餐、保护期四类轮询,但从未通过 `polling:card_status` 任务主动向 Gateway 查询卡的实时开停机状态。此外,所有轮询 handler 在成功查询上游数据后均无日志输出,测试和线上排查时无法判断轮询是否正常运转。 ## What Changes - **新增** `polling:card_status` 轮询任务类型:定期调用 Gateway `QueryCardStatus` 接口,将返回的卡状态(准备/正常/停机)同步到 `tb_iot_card.network_status` 字段,状态发生变化时触发停复机评估 - **新增** `polling.verbose_log` 配置开关:开启后,所有轮询 handler 在成功获取上游数据时以 `Info` 级别输出详细日志(ICCID、返回值、是否发生变化),关闭时保持现有行为(仅记录变更和错误) - **新增** `tb_polling_config.card_status_check_interval` 列:配置卡状态检查间隔(秒),NULL 表示不启用该轮询类型 - **新增** `tb_iot_card.last_card_status_check_at` 列:记录最后一次卡状态检查时间,与其他 `last_*_check_at` 字段保持一致 ## Capabilities ### New Capabilities - `polling-card-status-task`: 卡开停机状态轮询——新的任务类型常量、handler 实现、队列注册、调度器集成、生命周期管理、初始化器支持 ### Modified Capabilities - `polling-task-handlers`: 在所有现有 handler(realname、carddata、package、protect)的成功查询路径上添加 verbose log 支持;`PollingBase` 新增 `verboseLog bool` 字段 ## Impact - **新文件**: `internal/task/polling_cardstatus_handler.go` - **修改文件**: - `pkg/constants/constants.go` — 新增任务类型常量 - `pkg/config/config.go` — 新增 `PollingConfig` 结构体(含 `VerboseLog`) - `pkg/config/defaults/config.yaml` — 新增 `polling.verbose_log` 默认值 - `internal/model/polling.go` — `PollingConfig` 新增 `CardStatusCheckInterval` - `internal/model/iot_card.go` — 新增 `LastCardStatusCheckAt` 字段 - `internal/task/polling_base.go` — 新增 `verboseLog bool` 字段 - `internal/task/polling_realname_handler.go` — 添加 verbose log - `internal/task/polling_carddata_handler.go` — 添加 verbose log - `internal/task/polling_package_handler.go` — 添加 verbose log - `internal/task/polling_protect_handler.go` — 添加 verbose log - `internal/task/polling_utils.go` — `getIntervalByTaskType` 新增 case - `internal/polling/queue_manager.go` — `allTaskTypes` 追加新类型 - `internal/polling/lifecycle_service.go` — `getEnabledTaskTypes` + `calcInitialDelay` 新增 case - `internal/polling/initializer.go` — 初始化时加入 card_status 队列 - `pkg/queue/handler.go` — 注册新 handler - `cmd/worker/main.go` — `NewPollingBase` 传入 `verboseLog` 参数 - **数据库迁移**: `tb_polling_config` 加列 + `tb_iot_card` 加列 - **无 API 变更**,无破坏性改动