diff --git a/apps/api/migrations/adr093_notification_routing.sql b/apps/api/migrations/adr093_notification_routing.sql index 22946a52..34a87175 100644 --- a/apps/api/migrations/adr093_notification_routing.sql +++ b/apps/api/migrations/adr093_notification_routing.sql @@ -17,14 +17,23 @@ GRANT CONNECT ON DATABASE awoooi_prod TO awoooi_migrator; GRANT USAGE ON SCHEMA public TO awoooi_migrator; GRANT CREATE ON SCHEMA public TO awoooi_migrator; +-- SQLAlchemy native enum types(SQLEnum 預設 native_enum=True) +DO $$ BEGIN + CREATE TYPE approvalstatus AS ENUM ('pending','approved','rejected','expired','execution_success','execution_failed'); +EXCEPTION WHEN duplicate_object THEN NULL; END $$; + +DO $$ BEGIN + CREATE TYPE risklevel AS ENUM ('low','medium','high','critical'); +EXCEPTION WHEN duplicate_object THEN NULL; END $$; + -- approval_records 主表(全新建立,直接用 BIGINT) -- 注意:test schema setup_test_schema.sql 同步更新為 BIGINT CREATE TABLE IF NOT EXISTS approval_records ( id VARCHAR(36) PRIMARY KEY, action VARCHAR(500) NOT NULL, description TEXT NOT NULL, - status VARCHAR(20) NOT NULL DEFAULT 'PENDING', - risk_level VARCHAR(20) NOT NULL, + status approvalstatus NOT NULL DEFAULT 'pending', + risk_level risklevel NOT NULL, required_signatures INTEGER DEFAULT 1, current_signatures INTEGER DEFAULT 0, signatures JSON DEFAULT '[]',