fix(ws2-migration): 補 enum types + 執行 prod migration

- 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 <noreply@anthropic.com>
This commit is contained in:
Your Name
2026-04-25 01:49:28 +08:00
parent 6d5fd3c124
commit ed3ba730a1

View File

@@ -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 typesSQLEnum 預設 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 '[]',