修正数据
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m55s

This commit is contained in:
2026-04-27 18:10:08 +08:00
parent bb33232b1b
commit fe4c545308
57 changed files with 4477 additions and 226 deletions

View File

@@ -0,0 +1,140 @@
-- 流量模型统一改造手工验收脚本
-- 用途:验证 package_usage 快照、统一公式和 B/C 端 contract 改造后的数据库基线。
-- 1. 查看 package_usage 快照字段是否存在
SELECT
column_name,
data_type,
column_default,
is_nullable
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'tb_package_usage'
AND column_name IN (
'data_limit_mb',
'data_usage_mb',
'virtual_total_mb_snapshot',
'display_gain_ratio_snapshot',
'enable_virtual_data_snapshot'
)
ORDER BY column_name;
-- 2. 查看历史记录快照回填结果
SELECT
pu.id AS package_usage_id,
pu.package_id,
pu.data_limit_mb,
pu.data_usage_mb,
pu.virtual_total_mb_snapshot,
pu.display_gain_ratio_snapshot,
pu.enable_virtual_data_snapshot,
pu.status,
pu.master_usage_id,
pu.activated_at,
pu.expires_at
FROM tb_package_usage pu
ORDER BY pu.id DESC
LIMIT 50;
-- 3. 统一公式核验:启用虚流量时的五字段与 reduction_pct
SELECT
pu.id AS package_usage_id,
pu.data_limit_mb AS real_total_mb,
pu.data_usage_mb AS real_used_mb,
CASE
WHEN pu.enable_virtual_data_snapshot AND pu.virtual_total_mb_snapshot > 0 THEN pu.virtual_total_mb_snapshot
ELSE pu.data_limit_mb
END AS virtual_total_mb,
CASE
WHEN pu.enable_virtual_data_snapshot AND pu.virtual_total_mb_snapshot > 0
THEN LEAST(pu.data_usage_mb * pu.display_gain_ratio_snapshot, pu.data_limit_mb)
ELSE pu.data_usage_mb
END AS virtual_used_mb,
CASE
WHEN pu.enable_virtual_data_snapshot AND pu.virtual_total_mb_snapshot > 0
THEN pu.display_gain_ratio_snapshot - 1
ELSE 0
END AS reduction_pct
FROM tb_package_usage pu
ORDER BY pu.id DESC
LIMIT 50;
-- 4. 停机阈值核验:统一 effective_threshold_mb
SELECT
pu.id AS package_usage_id,
pu.data_limit_mb AS real_total_mb,
pu.data_usage_mb AS real_used_mb,
CASE
WHEN pu.enable_virtual_data_snapshot AND pu.virtual_total_mb_snapshot > 0 THEN pu.virtual_total_mb_snapshot
ELSE pu.data_limit_mb
END AS effective_threshold_mb,
CASE
WHEN pu.data_usage_mb >= CASE
WHEN pu.enable_virtual_data_snapshot AND pu.virtual_total_mb_snapshot > 0 THEN pu.virtual_total_mb_snapshot
ELSE pu.data_limit_mb
END THEN TRUE
ELSE FALSE
END AS is_depleted
FROM tb_package_usage pu
ORDER BY pu.id DESC
LIMIT 50;
-- 5. 样例一100 / 70 / 50 -> 71.43
WITH sample AS (
SELECT
100::bigint AS real_total_mb,
50::bigint AS real_used_mb,
70::bigint AS virtual_total_mb,
ROUND(100::numeric / 70::numeric, 6) AS display_gain_ratio
)
SELECT
real_total_mb,
real_used_mb,
virtual_total_mb,
display_gain_ratio,
ROUND(LEAST(real_used_mb * display_gain_ratio, real_total_mb)::numeric, 2) AS expected_virtual_used_mb,
ROUND((display_gain_ratio - 1)::numeric, 6) AS expected_reduction_pct
FROM sample;
-- 6. 样例二100 / 70 / 69 -> 98.57
WITH sample AS (
SELECT
100::bigint AS real_total_mb,
69::bigint AS real_used_mb,
70::bigint AS virtual_total_mb,
ROUND(100::numeric / 70::numeric, 6) AS display_gain_ratio
)
SELECT
real_total_mb,
real_used_mb,
virtual_total_mb,
display_gain_ratio,
ROUND(LEAST(real_used_mb * display_gain_ratio, real_total_mb)::numeric, 2) AS expected_virtual_used_mb,
ROUND((display_gain_ratio - 1)::numeric, 6) AS expected_reduction_pct
FROM sample;
-- 7. 样例三:未启用虚流量时应退化为真流量视图
WITH sample AS (
SELECT
100::bigint AS real_total_mb,
69::bigint AS real_used_mb,
FALSE AS enable_virtual_data_snapshot,
100::bigint AS virtual_total_mb_snapshot,
1.0::numeric AS display_gain_ratio_snapshot
)
SELECT
real_total_mb,
real_used_mb,
CASE
WHEN enable_virtual_data_snapshot AND virtual_total_mb_snapshot > 0 THEN virtual_total_mb_snapshot
ELSE real_total_mb
END AS expected_virtual_total_mb,
CASE
WHEN enable_virtual_data_snapshot AND virtual_total_mb_snapshot > 0 THEN LEAST(real_used_mb * display_gain_ratio_snapshot, real_total_mb)
ELSE real_used_mb
END AS expected_virtual_used_mb,
CASE
WHEN enable_virtual_data_snapshot AND virtual_total_mb_snapshot > 0 THEN display_gain_ratio_snapshot - 1
ELSE 0
END AS expected_reduction_pct
FROM sample;