feat: gift card breakdown - migrations, fdw queries, finance recharge task, board-finance page updates
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
-- =============================================================================
|
||||
-- 迁移:重建 RLS 视图 app.v_dws_finance_recharge_summary,新增赠送卡细分字段
|
||||
-- 日期:2026-03-20
|
||||
-- 关联 SPEC:gift-card-breakdown(赠送卡矩阵细分数据)
|
||||
-- 前置:ETL 库已执行 2026-03-20_add_gift_breakdown_fields.sql(DWS 表新增 6 列)
|
||||
-- =============================================================================
|
||||
|
||||
CREATE OR REPLACE VIEW app.v_dws_finance_recharge_summary AS
|
||||
SELECT id,
|
||||
site_id,
|
||||
tenant_id,
|
||||
stat_date,
|
||||
recharge_count,
|
||||
recharge_total,
|
||||
recharge_cash,
|
||||
recharge_gift,
|
||||
first_recharge_count,
|
||||
first_recharge_cash,
|
||||
first_recharge_gift,
|
||||
first_recharge_total,
|
||||
renewal_count,
|
||||
renewal_cash,
|
||||
renewal_gift,
|
||||
renewal_total,
|
||||
recharge_member_count,
|
||||
new_member_count,
|
||||
total_card_balance,
|
||||
cash_card_balance,
|
||||
gift_card_balance,
|
||||
-- 赠送卡细分字段(6 个新增)
|
||||
gift_liquor_balance,
|
||||
gift_table_fee_balance,
|
||||
gift_voucher_balance,
|
||||
gift_liquor_recharge,
|
||||
gift_table_fee_recharge,
|
||||
gift_voucher_recharge,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM dws.dws_finance_recharge_summary
|
||||
WHERE site_id = (current_setting('app.current_site_id'::text))::bigint;
|
||||
|
||||
-- =============================================================================
|
||||
-- 回滚(恢复为不含细分字段的原始视图)
|
||||
-- =============================================================================
|
||||
-- CREATE OR REPLACE VIEW app.v_dws_finance_recharge_summary AS
|
||||
-- SELECT id, site_id, tenant_id, stat_date,
|
||||
-- recharge_count, recharge_total, recharge_cash, recharge_gift,
|
||||
-- first_recharge_count, first_recharge_cash, first_recharge_gift, first_recharge_total,
|
||||
-- renewal_count, renewal_cash, renewal_gift, renewal_total,
|
||||
-- recharge_member_count, new_member_count,
|
||||
-- total_card_balance, cash_card_balance, gift_card_balance,
|
||||
-- created_at, updated_at
|
||||
-- FROM dws.dws_finance_recharge_summary
|
||||
-- WHERE site_id = (current_setting('app.current_site_id'::text))::bigint;
|
||||
|
||||
-- =============================================================================
|
||||
-- 验证
|
||||
-- =============================================================================
|
||||
-- 1. 确认视图包含新字段
|
||||
-- SELECT column_name FROM information_schema.columns
|
||||
-- WHERE table_schema = 'app' AND table_name = 'v_dws_finance_recharge_summary'
|
||||
-- AND column_name LIKE 'gift_%'
|
||||
-- ORDER BY ordinal_position;
|
||||
-- 预期:gift_card_balance + 6 个新字段 = 7 行
|
||||
|
||||
-- 2. 确认 RLS 过滤生效(需先 SET app.current_site_id)
|
||||
-- SET app.current_site_id = '12345';
|
||||
-- SELECT COUNT(*) FROM app.v_dws_finance_recharge_summary;
|
||||
|
||||
-- 3. 确认新字段可查询且有默认值
|
||||
-- SET app.current_site_id = '12345';
|
||||
-- SELECT gift_liquor_balance, gift_table_fee_balance, gift_voucher_balance,
|
||||
-- gift_liquor_recharge, gift_table_fee_recharge, gift_voucher_recharge
|
||||
-- FROM app.v_dws_finance_recharge_summary LIMIT 1;
|
||||
@@ -0,0 +1,58 @@
|
||||
-- =============================================================================
|
||||
-- 迁移:刷新 FDW 外部表 v_dws_finance_recharge_summary,同步赠送卡细分字段
|
||||
-- 日期:2026-03-20
|
||||
-- 关联 SPEC:gift-card-breakdown(赠送卡矩阵细分数据)
|
||||
-- 前置:
|
||||
-- 1. ETL 库已执行 DDL 迁移(DWS 表新增 6 列)
|
||||
-- 2. ETL 库已执行 RLS 视图重建(app.v_dws_finance_recharge_summary 包含 6 个新字段)
|
||||
-- 幂等策略:先 DROP 外部表再 IMPORT FOREIGN SCHEMA,支持重复执行不报错
|
||||
-- =============================================================================
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 1. 删除旧的外部表(IF EXISTS 保证幂等)
|
||||
-- -----------------------------------------------------------------------------
|
||||
DROP FOREIGN TABLE IF EXISTS fdw_etl.v_dws_finance_recharge_summary;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 2. 重新导入外部表(从 ETL 库 app schema 获取最新列定义)
|
||||
-- LIMIT TO 仅导入目标视图,避免影响其他外部表
|
||||
-- -----------------------------------------------------------------------------
|
||||
IMPORT FOREIGN SCHEMA app
|
||||
LIMIT TO (v_dws_finance_recharge_summary)
|
||||
FROM SERVER etl_feiqiu_server
|
||||
INTO fdw_etl;
|
||||
|
||||
|
||||
-- =============================================================================
|
||||
-- 回滚(恢复为旧版外部表,需重新导入)
|
||||
-- =============================================================================
|
||||
-- DROP FOREIGN TABLE IF EXISTS fdw_etl.v_dws_finance_recharge_summary;
|
||||
-- IMPORT FOREIGN SCHEMA app
|
||||
-- LIMIT TO (v_dws_finance_recharge_summary)
|
||||
-- FROM SERVER etl_feiqiu_server
|
||||
-- INTO fdw_etl;
|
||||
-- 注意:回滚前需先将 ETL 库的 RLS 视图恢复为不含细分字段的版本
|
||||
|
||||
-- =============================================================================
|
||||
-- 验证 SQL
|
||||
-- =============================================================================
|
||||
-- 1. 确认外部表存在且包含新字段(应有 6 个 gift_* 细分字段)
|
||||
-- SELECT column_name, data_type
|
||||
-- FROM information_schema.columns
|
||||
-- WHERE table_schema = 'fdw_etl'
|
||||
-- AND table_name = 'v_dws_finance_recharge_summary'
|
||||
-- AND column_name LIKE 'gift_%'
|
||||
-- ORDER BY ordinal_position;
|
||||
-- 预期:gift_card_balance + 6 个新字段 = 7 行
|
||||
|
||||
-- 2. 确认外部表可查询
|
||||
-- SELECT gift_liquor_balance, gift_table_fee_balance, gift_voucher_balance,
|
||||
-- gift_liquor_recharge, gift_table_fee_recharge, gift_voucher_recharge
|
||||
-- FROM fdw_etl.v_dws_finance_recharge_summary
|
||||
-- LIMIT 1;
|
||||
|
||||
-- 3. 确认外部表总列数正确(原有列 + 6 个新列)
|
||||
-- SELECT COUNT(*) AS column_count
|
||||
-- FROM information_schema.columns
|
||||
-- WHERE table_schema = 'fdw_etl'
|
||||
-- AND table_name = 'v_dws_finance_recharge_summary';
|
||||
Reference in New Issue
Block a user