-- ADR-090 capacity_violation_event metric violation types
-- 日期：2026-05-07（台北）
-- 目的：讓 capacity_scanner_job.py 寫入的 cpu/mem/swap 細項違規符合 DB constraint。
--
-- 背景：
--   capacity_scanner_job.py 會寫入：
--     - cpu_over_threshold
--     - mem_over_threshold
--     - swap_over_threshold
--   但原始 ADR-090 DDL 只允許較粗的 host_saturation，導致 production 出現
--   capacity_violation_event_type_valid check violation，容量治理事件漏記。

BEGIN;

ALTER TABLE capacity_violation_event
    DROP CONSTRAINT IF EXISTS capacity_violation_event_type_valid;

ALTER TABLE capacity_violation_event
    ADD CONSTRAINT capacity_violation_event_type_valid
    CHECK (violation_type IN (
        'no_limit_set',
        'over_request',
        'over_limit',
        'host_saturation',
        'over_sla_budget',
        'unauthorized_new_deploy',
        'cpu_over_threshold',
        'mem_over_threshold',
        'swap_over_threshold',
        'load_over_threshold'
    ));

COMMIT;

-- Rollback（需人工確認後執行）：
-- BEGIN;
-- ALTER TABLE capacity_violation_event
--     DROP CONSTRAINT IF EXISTS capacity_violation_event_type_valid;
-- ALTER TABLE capacity_violation_event
--     ADD CONSTRAINT capacity_violation_event_type_valid
--     CHECK (violation_type IN (
--         'no_limit_set',
--         'over_request',
--         'over_limit',
--         'host_saturation',
--         'over_sla_budget',
--         'unauthorized_new_deploy'
--     ));
-- COMMIT;
