-- ADR-090-C: automation_operation_log.operation_type 擴充 notification_formatted
-- 建立時間: 2026-04-18 下午 (台北時區)
-- 建立者: ogt + Claude Opus 4.7 (1M)
--
-- 上游:
--   - ADR-090 主 schema (adr090_asset_inventory_foundation.sql)
--   - drift_narrator_service B 方案（LLM 摘要取代 str()[:30]）
--
-- 目的:
--   drift_narrator 每次呼叫 LLM 生成摘要 + 寫 Telegram,
--   這是一個 AI 動作，必須在 automation_operation_log 留痕。
--   現有 CHECK 沒有合適的 operation_type,新增 notification_formatted。
--
-- Idempotent:
--   先 DROP CONSTRAINT IF EXISTS 再 ADD,重複執行安全。
--
-- 執行: PGPASSWORD="$MIGRATOR_PWD" psql -U awoooi_migrator -d awoooi_prod -f 本檔
-- 回滾: 把 notification_formatted 從 IN 清單移除後重跑。

-- ============================================================================

ALTER TABLE automation_operation_log
    DROP CONSTRAINT IF EXISTS automation_operation_log_type_valid;

ALTER TABLE automation_operation_log
    ADD CONSTRAINT automation_operation_log_type_valid CHECK (operation_type IN (
        'monitor_configured','monitor_removed',
        'alert_fired','alert_suppressed','alert_routed',
        'rule_created','rule_updated','rule_matched','rule_rejected','rule_deprecated',
        'playbook_generated','playbook_updated','playbook_executed',
        'remediation_executed','remediation_verified','remediation_rolled_back',
        'self_correction_attempted',
        'km_created','km_updated','km_linked',
        'asset_discovered','coverage_recalculated',
        'capacity_recommendation','quota_enforced',
        'notification_formatted'  -- ADR-090-C 新增 (drift_narrator / 未來其他通知格式化 AI 動作)
    ));

-- 驗收查詢 (apply 後可手動跑):
-- SELECT pg_get_constraintdef(oid) FROM pg_constraint
-- WHERE conname='automation_operation_log_type_valid';
-- 應包含 'notification_formatted'
