-- 迁移：为 dwd.dim_table_ex 新增 14 个字段
-- 来源：site_tables_master ODS 表中已有同名列（部分驼峰式在 PG 中已小写化）
-- 关联需求：dataflow-field-completion Requirements 9.1, 9.2

BEGIN;

-- 1. 新增列
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS create_time TIMESTAMPTZ;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS light_status INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS tablestatusname TEXT;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS sitename TEXT;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS applet_qr_code_url TEXT;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS audit_status INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS charge_free INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS delay_lights_time INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS is_rest_area INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS only_allow_groupon INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS order_delay_time INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS self_table INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS temporary_light_second INTEGER;
ALTER TABLE dwd.dim_table_ex ADD COLUMN IF NOT EXISTS virtual_table INTEGER;

-- 2. 添加列注释
COMMENT ON COLUMN dwd.dim_table_ex.create_time IS
    '【说明】台桌配置的创建时间或最近一次创建/复制时间。     【示例】2025-07-15 17:52:54。     【ODS来源】site_tables_master - create_time。     【JSON字段】site_tables_master.json - data.siteTables - create_time。';
COMMENT ON COLUMN dwd.dim_table_ex.light_status IS
    '【说明】台灯状态枚举（如 2=已开灯），用于标识台桌灯光当前状态。     【示例】2。     【ODS来源】site_tables_master - light_status。     【JSON字段】site_tables_master.json - data.siteTables - light_status。';
COMMENT ON COLUMN dwd.dim_table_ex.tablestatusname IS
    '【说明】台桌状态中文名称（如"空闲中""使用中"），仅展示用途。     【示例】空闲中。     【ODS来源】site_tables_master - tablestatusname。     【JSON字段】site_tables_master.json - data.siteTables - tableStatusName。';
COMMENT ON COLUMN dwd.dim_table_ex.sitename IS
    '【说明】门店名称快照，冗余字段，配合 site_id 使用。     【示例】朗朗桌球。     【ODS来源】site_tables_master - sitename。     【JSON字段】site_tables_master.json - data.siteTables - siteName。';
COMMENT ON COLUMN dwd.dim_table_ex.applet_qr_code_url IS
    '【说明】小程序二维码 URL，用于扫码开台等场景。     【ODS来源】site_tables_master - appletQrCodeUrl。     【JSON字段】site_tables_master.json - data.siteTables - appletQrCodeUrl。';
COMMENT ON COLUMN dwd.dim_table_ex.audit_status IS
    '【说明】审核状态枚举（当前全部为 2，含义待确认）。     【示例】2。     【ODS来源】site_tables_master - audit_status。     【JSON字段】site_tables_master.json - data.siteTables - audit_status。';
COMMENT ON COLUMN dwd.dim_table_ex.charge_free IS
    '【说明】是否免费台（0=收费，1=免费），当前全部为 0。     【示例】0。     【ODS来源】site_tables_master - charge_free。     【JSON字段】site_tables_master.json - data.siteTables - charge_free。';
COMMENT ON COLUMN dwd.dim_table_ex.delay_lights_time IS
    '【说明】台灯熄灭延迟时间（单位秒或分钟），结账后延时关灯。     【示例】0。     【ODS来源】site_tables_master - delay_lights_time。     【JSON字段】site_tables_master.json - data.siteTables - delay_lights_time。';
COMMENT ON COLUMN dwd.dim_table_ex.is_rest_area IS
    '【说明】是否休息区台桌（0=否，1=是），当前全部为 0。     【示例】0。     【ODS来源】site_tables_master - is_rest_area。     【JSON字段】site_tables_master.json - data.siteTables - is_rest_area。';
COMMENT ON COLUMN dwd.dim_table_ex.only_allow_groupon IS
    '【说明】是否仅允许团购开台（0/1/2 枚举）。     【示例】2。     【ODS来源】site_tables_master - only_allow_groupon。     【JSON字段】site_tables_master.json - data.siteTables - only_allow_groupon。';
COMMENT ON COLUMN dwd.dim_table_ex.order_delay_time IS
    '【说明】订单自动延时时长（到点后自动延长继续计费的时间）。     【示例】0。     【ODS来源】site_tables_master - order_delay_time。     【JSON字段】site_tables_master.json - data.siteTables - order_delay_time。';
COMMENT ON COLUMN dwd.dim_table_ex.self_table IS
    '【说明】是否自有台桌（1=自有），当前全部为 1。     【示例】1。     【ODS来源】site_tables_master - self_table。     【JSON字段】site_tables_master.json - data.siteTables - self_table。';
COMMENT ON COLUMN dwd.dim_table_ex.temporary_light_second IS
    '【说明】临时开灯秒数，用于短时照明场景。     【示例】0。     【ODS来源】site_tables_master - temporary_light_second。     【JSON字段】site_tables_master.json - data.siteTables - temporary_light_second。';
COMMENT ON COLUMN dwd.dim_table_ex.virtual_table IS
    '【说明】是否虚拟台桌（0=实体台，1=虚拟台）。     【示例】0。     【ODS来源】site_tables_master - virtual_table。     【JSON字段】site_tables_master.json - data.siteTables - virtual_table。';

COMMIT;

-- ============================================================
-- 回滚策略
-- ============================================================
-- BEGIN;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS create_time;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS light_status;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS tablestatusname;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS sitename;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS applet_qr_code_url;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS audit_status;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS charge_free;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS delay_lights_time;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS is_rest_area;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS only_allow_groupon;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS order_delay_time;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS self_table;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS temporary_light_second;
-- ALTER TABLE dwd.dim_table_ex DROP COLUMN IF EXISTS virtual_table;
-- COMMIT;

-- ============================================================
-- 验证 SQL
-- ============================================================

-- 1. 确认 14 个新列均已创建且类型正确
-- SELECT column_name, data_type
-- FROM information_schema.columns
-- WHERE table_schema = 'dwd'
--   AND table_name = 'dim_table_ex'
--   AND column_name IN (
--     'create_time', 'light_status', 'tablestatusname', 'sitename',
--     'applet_qr_code_url', 'audit_status', 'charge_free', 'delay_lights_time',
--     'is_rest_area', 'only_allow_groupon', 'order_delay_time', 'self_table',
--     'temporary_light_second', 'virtual_table'
--   )
-- ORDER BY column_name;

-- 2. 确认列注释已添加（应返回 14 行）
-- SELECT column_name,
--        col_description(
--            (SELECT oid FROM pg_class WHERE relname = 'dim_table_ex'
--             AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'dwd')),
--            attnum
--        ) AS comment
-- FROM pg_attribute
-- WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'dim_table_ex'
--       AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'dwd'))
--   AND attname IN (
--     'create_time', 'light_status', 'tablestatusname', 'sitename',
--     'applet_qr_code_url', 'audit_status', 'charge_free', 'delay_lights_time',
--     'is_rest_area', 'only_allow_groupon', 'order_delay_time', 'self_table',
--     'temporary_light_second', 'virtual_table'
--   );

-- 3. 确认 ODS 源表中对应列存在
-- SELECT column_name, data_type
-- FROM information_schema.columns
-- WHERE table_schema = 'ods'
--   AND table_name = 'site_tables_master'
--   AND column_name IN (
--     'create_time', 'light_status', 'tablestatusname', 'sitename',
--     'appletQrCodeUrl', 'audit_status', 'charge_free', 'delay_lights_time',
--     'is_rest_area', 'only_allow_groupon', 'order_delay_time', 'self_table',
--     'temporary_light_second', 'virtual_table'
--   )
-- ORDER BY column_name;

-- 4. 重新加载后抽样验证新列有数据
-- SELECT create_time, light_status, tablestatusname, sitename,
--        applet_qr_code_url, audit_status, charge_free, delay_lights_time,
--        is_rest_area, only_allow_groupon, order_delay_time, self_table,
--        temporary_light_second, virtual_table
-- FROM dwd.dim_table_ex
-- WHERE scd2_is_current = 1
-- LIMIT 10;
