WebSocket cleanup alert / manual replay 最小骨架

这页先把 cleanup dead-letter 之后的最小告警与人工回放语义收清楚。

当前先把 alerts / deadLetters / manual replay 串起来,让 retry 失败后也能走到下一层治理动作。

当前最小 alert / replay 语义

先把告警与回放的边界说清楚。

GET /api/coach/token-cleanup-alerts:查看 alerts / pendingRetries / deadLetters
POST /api/coach/token-cleanup-alerts + action=send-alert:发送最小告警预览,并可带 operator_label / note
POST /api/coach/token-cleanup-alerts + action=manual-replay:把 dead-letter 回放成一条新的 pending retry,并可带 replay note
POST /api/coach/token-cleanup-alerts + action=confirm-alert:补一次最小人工确认,并可带 confirm_reason / confirm_result
alert_channel:当前固定为 admin-banner / ops-mail-preview 预览语义
operator_label:当前开始记录最小操作者身份
confirm_result:当前开始区分 keep-current-plan / replay-approved / dismiss-alert

执行边界

这层已经开始有 alert / replay 语义,但仍不是正式告警与补偿系统。

这层是最小 cleanup alert / manual replay 骨架,不是正式告警平台、工单系统或补偿调度器。
先把 alert 与 dead-letter 回放语义串起来,让 cleanup 失败后的治理动作更完整。
后面如果继续推进,再补真实通知渠道、人工确认流、replay 审计导出和归档。