59 lines
2.9 KiB
PL/PgSQL
59 lines
2.9 KiB
PL/PgSQL
-- 迁移:DWS 层 ratio/margin/multiplier 字段精度扩展
|
||
-- 原因:numeric(5,4) 只能存 ±0.9999,当比率 ≥ 1 或 < -1 时溢出(P1 已爆 gross_margin)
|
||
-- 日期:2026-03-01
|
||
-- 注意:需先 DROP 依赖视图,ALTER 后重建
|
||
|
||
BEGIN;
|
||
|
||
-- 1. DROP 依赖视图(app schema 的 RLS 视图)
|
||
DROP VIEW IF EXISTS app.v_cfg_performance_tier CASCADE;
|
||
DROP VIEW IF EXISTS app.v_dws_assistant_finance_analysis CASCADE;
|
||
DROP VIEW IF EXISTS app.v_dws_assistant_recharge_commission CASCADE;
|
||
DROP VIEW IF EXISTS app.v_dws_assistant_salary_calc CASCADE;
|
||
DROP VIEW IF EXISTS app.v_dws_finance_discount_detail CASCADE;
|
||
DROP VIEW IF EXISTS app.v_dws_finance_income_structure CASCADE;
|
||
DROP VIEW IF EXISTS app.v_dws_member_assistant_intimacy CASCADE;
|
||
|
||
-- 2. ALTER 列类型:numeric(5,4)/numeric(6,4) → numeric(7,4)
|
||
ALTER TABLE dws.cfg_performance_tier
|
||
ALTER COLUMN bonus_deduction_ratio TYPE numeric(7,4);
|
||
ALTER TABLE dws.dws_assistant_finance_analysis
|
||
ALTER COLUMN gross_margin TYPE numeric(7,4);
|
||
ALTER TABLE dws.dws_assistant_recharge_commission
|
||
ALTER COLUMN commission_ratio TYPE numeric(7,4);
|
||
ALTER TABLE dws.dws_assistant_salary_calc
|
||
ALTER COLUMN bonus_deduction_ratio TYPE numeric(7,4);
|
||
ALTER TABLE dws.dws_finance_discount_detail
|
||
ALTER COLUMN discount_ratio TYPE numeric(7,4);
|
||
ALTER TABLE dws.dws_finance_income_structure
|
||
ALTER COLUMN income_ratio TYPE numeric(7,4);
|
||
ALTER TABLE dws.dws_member_assistant_intimacy
|
||
ALTER COLUMN burst_multiplier TYPE numeric(7,4);
|
||
|
||
-- 3. 重建视图(使用 pg_get_viewdef 保存的原始定义)
|
||
-- 注意:实际执行时应从 _p1_migrate_with_views.py 自动保存/重建
|
||
-- 以下为手动重建模板,视图定义为 SELECT * FROM dws.xxx WHERE site_id = ...
|
||
CREATE OR REPLACE VIEW app.v_cfg_performance_tier AS
|
||
SELECT * FROM dws.cfg_performance_tier
|
||
WHERE site_id = current_setting('app.current_site_id')::bigint;
|
||
CREATE OR REPLACE VIEW app.v_dws_assistant_finance_analysis AS
|
||
SELECT * FROM dws.dws_assistant_finance_analysis
|
||
WHERE site_id = current_setting('app.current_site_id')::bigint;
|
||
CREATE OR REPLACE VIEW app.v_dws_assistant_recharge_commission AS
|
||
SELECT * FROM dws.dws_assistant_recharge_commission
|
||
WHERE site_id = current_setting('app.current_site_id')::bigint;
|
||
CREATE OR REPLACE VIEW app.v_dws_assistant_salary_calc AS
|
||
SELECT * FROM dws.dws_assistant_salary_calc
|
||
WHERE site_id = current_setting('app.current_site_id')::bigint;
|
||
CREATE OR REPLACE VIEW app.v_dws_finance_discount_detail AS
|
||
SELECT * FROM dws.dws_finance_discount_detail
|
||
WHERE site_id = current_setting('app.current_site_id')::bigint;
|
||
CREATE OR REPLACE VIEW app.v_dws_finance_income_structure AS
|
||
SELECT * FROM dws.dws_finance_income_structure
|
||
WHERE site_id = current_setting('app.current_site_id')::bigint;
|
||
CREATE OR REPLACE VIEW app.v_dws_member_assistant_intimacy AS
|
||
SELECT * FROM dws.dws_member_assistant_intimacy
|
||
WHERE site_id = current_setting('app.current_site_id')::bigint;
|
||
|
||
COMMIT;
|