# 轮询触发日志状态常量规范

## ADDED Requirements

### Requirement: 轮询手动触发日志状态常量

系统应在 `pkg/constants/polling.go` 中定义轮询手动触发日志的四种状态常量，避免硬编码字符串。

**常量定义**：
- `PollingManualTriggerStatusPending = "pending"`
- `PollingManualTriggerStatusProcessing = "processing"`
- `PollingManualTriggerStatusCompleted = "completed"`
- `PollingManualTriggerStatusCancelled = "cancelled"`

#### Scenario: 轮询触发日志记录使用常量

- **WHEN** 系统记录轮询手动触发日志（插入、更新状态）
- **THEN** 系统使用 `constants.PollingManualTriggerStatusPending` 等常量，而不是直接写字符串 `"pending"`

#### Scenario: 轮询触发日志查询使用常量

- **WHEN** 系统查询轮询日志（按状态筛选、状态转移判断等）
- **THEN** 系统使用常量进行比较，而不是硬编码 `status == "pending"`

#### Scenario: 常量修改时自动重构

- **WHEN** 业务要求修改某个状态值（如 `"pending"` → `"awaiting"`）
- **THEN** 开发者修改 `pkg/constants/polling.go` 中的常量定义
- **THEN** IDE 自动检测所有使用该常量的代码，支持一键重构替换
- **THEN** 无需手动搜索和替换散落在各文件中的硬编码字符串

### Requirement: 轮询触发日志字段描述

轮询手动触发日志模型（`tb_polling_manual_trigger_log`）应包含 `status` 字段，并在 DTO 中加入 `status_name` 文字字段。

#### Scenario: 查询轮询触发日志返回状态文本

- **WHEN** API 返回轮询手动触发日志列表（`GET /api/admin/polling/manual-triggers`）
- **THEN** 响应中的 `status` 字段（int）对应状态常量值
- **THEN** 响应中的 `status_name` 字段（string）显示该状态的中文描述
  - `"pending"` → `"待处理"`
  - `"processing"` → `"处理中"`
  - `"completed"` → `"已完成"`
  - `"cancelled"` → `"已取消"`
