From ed3ba730a1015d66c6b125e947ef74b0e2be331c Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 25 Apr 2026 01:49:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(ws2-migration):=20=E8=A3=9C=20enum=20types?= =?UTF-8?q?=20+=20=E5=9F=B7=E8=A1=8C=20prod=20migration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CREATE TYPE approvalstatus / risklevel(SQLAlchemy native_enum) - approval_records 已在 prod awoooi_prod 建立 - telegram_chat_id BIGINT(支援 -1003711974679) - status approvalstatus enum(非 VARCHAR) - awoooi_migrator 角色需 superuser 才能建,留 backlog Co-Authored-By: Claude Sonnet 4.6 --- apps/api/migrations/adr093_notification_routing.sql | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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 '[]',