-- ADR-092 B4 — Playbook 學習閉環斷鏈修復（DB Schema）
-- 根因：approval_records 缺 matched_playbook_id → 人工審核後 EWMA 無法更新 Playbook trust score
--       timeline_events 缺 incident_id → pre_decision_investigator MCP 呼叫稽核每天+1 靜默錯誤
--
-- 執行方式（需人工執行一次）：
--   psql $DATABASE_URL -f apps/api/migrations/adr092_p1_learning_chain_fix.sql
--
-- 2026-04-24 ogt + Claude Sonnet 4.6（亞太）

BEGIN;

-- ─────────────────────────────────────────────────────────────────────────────
-- approval_records: 新增 matched_playbook_id 欄位（B2 fix）
-- ─────────────────────────────────────────────────────────────────────────────

ALTER TABLE approval_records
    ADD COLUMN IF NOT EXISTS matched_playbook_id VARCHAR(36) DEFAULT NULL;

CREATE INDEX IF NOT EXISTS ix_approval_matched_playbook
    ON approval_records (matched_playbook_id)
    WHERE matched_playbook_id IS NOT NULL;

COMMENT ON COLUMN approval_records.matched_playbook_id
    IS 'Playbook ID 命中時紀錄，學習服務讀取以更新 EWMA trust score';

-- ─────────────────────────────────────────────────────────────────────────────
-- timeline_events: 新增 incident_id 欄位（P1.6 fix）
-- ─────────────────────────────────────────────────────────────────────────────

ALTER TABLE timeline_events
    ADD COLUMN IF NOT EXISTS incident_id VARCHAR(64) DEFAULT NULL;

CREATE INDEX IF NOT EXISTS ix_timeline_incident_id
    ON timeline_events (incident_id)
    WHERE incident_id IS NOT NULL;

COMMENT ON COLUMN timeline_events.incident_id
    IS 'MCP 工具呼叫稽核時關聯的 Incident ID';

COMMIT;
