Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
根因(盤點後確認): 所有 webhook 建立 approval 的路徑(webhooks.py:908/1426/1566)均未傳 expires_at,DB 欄位為 NULL。get_pending_approvals() 的自動過期邏輯 WHERE expires_at < now 對 NULL 永遠為 False → 殭屍 PENDING 永不清理。 修正策略: 在 create_approval_with_fingerprint()(告警 approval 唯一共用入口) 注入預設 48h TTL,一次覆蓋全部 3 個 webhook 呼叫點。 手動 API 建立(approvals.py)自行傳 expires_at,不受影響。 與 2026-04-15 24h PENDING_TTL_HOURS 補丁協同工作: - 24h: find_by_fingerprint 不再收斂過期 PENDING → 新告警重新觸發通知 - 48h: get_pending_approvals auto-expire → UI 殭屍記錄自動清除 2026-04-15 ogt + Claude Sonnet 4.6(亞太):完整盤點後補完 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>