Files
junhong_cmp_fiber/migrations/000248_add_polling_config_tier_columns.up.sql
邹进 98017ac053
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m37s
feat: 分层轮询、重置日前加密与激活前流量结算
- 轮询配置新增套餐状态、资产状态、重置日前窗口与窗口内流量间隔(迁移 248),间隔三态:正数按间隔、0 不检查、空继承
- 配置按 priority, id 排序合并;在库与已销售无套餐未匹配时告警不入队
- 新增优先级整体重排、匹配预览、立即重算到期时间(异步只提前)、分层统计与重置日前加密统计接口
- 已切换日快照计量的卡流量按观测时间归属,激活前用量只记已结算
- 订单购买与实名激活补齐资产级激活锁,激活前对已切换卡结算一次流量,失败只告警不阻塞,结算不触发通道阈值判定
2026-10-24 17:06:38 +09:00

29 lines
3.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 分层轮询与重置日前加密查流量(add-tiered-polling-and-pre-activation-settlement)。
-- 背景:轮询配置只能按网络、实名、卡类别、运营商账户匹配,库存卡、无套餐卡与在用卡同频调网关;
-- 每张卡重置日清零前最后一次查流量到清零之间的用量查不到。
--
-- 设计选择:
-- 1. package_state:套餐状态匹配维度 active-有生效套餐 / depleted-套餐已用完 / pending-只有待生效套餐 / none-无套餐;为空不限。
-- 绑定设备的卡按设备、独立卡按卡计算(与停复机"是否有有效套餐"口径一致)。
-- 2. asset_status:资产状态匹配维度,取值同 tb_iot_card.asset_status(1-在库 2-已销售 3-已换货 4-已停用);为空不限。
-- 3. pre_reset_window / pre_reset_carddata_interval:重置日前窗口长度与窗口内流量检查间隔(秒);任一为空表示该配置不加密。
-- 4. 只加可空列,存量配置行为不变。间隔字段的取值约定同步修正为:正数按间隔、0 不检查(停止向下继承)、NULL 继承。
ALTER TABLE tb_polling_config ADD COLUMN package_state VARCHAR(20);
ALTER TABLE tb_polling_config ADD COLUMN asset_status SMALLINT;
ALTER TABLE tb_polling_config ADD COLUMN pre_reset_window INTEGER;
ALTER TABLE tb_polling_config ADD COLUMN pre_reset_carddata_interval INTEGER;
ALTER TABLE tb_polling_config ADD CONSTRAINT ck_polling_config_package_state CHECK (package_state IS NULL OR package_state IN ('active', 'depleted', 'pending', 'none'));
ALTER TABLE tb_polling_config ADD CONSTRAINT ck_polling_config_asset_status CHECK (asset_status IS NULL OR asset_status IN (1, 2, 3, 4));
ALTER TABLE tb_polling_config ADD CONSTRAINT ck_polling_config_pre_reset CHECK ((pre_reset_window IS NULL OR pre_reset_window > 0) AND (pre_reset_carddata_interval IS NULL OR pre_reset_carddata_interval > 0));
COMMENT ON COLUMN tb_polling_config.package_state IS '套餐状态匹配:active-有生效套餐 depleted-套餐已用完 pending-只有待生效套餐 none-无套餐,NULL 不限';
COMMENT ON COLUMN tb_polling_config.asset_status IS '资产状态匹配:1-在库 2-已销售 3-已换货 4-已停用,NULL 不限';
COMMENT ON COLUMN tb_polling_config.pre_reset_window IS '重置日前加密窗口长度(秒),NULL 表示不加密';
COMMENT ON COLUMN tb_polling_config.pre_reset_carddata_interval IS '重置日前窗口内的流量检查间隔(秒),NULL 表示不加密';
COMMENT ON COLUMN tb_polling_config.realname_check_interval IS '实名检查间隔(秒):正数按间隔,0 不检查(停止继承),NULL 继承优先级更低的配置';
COMMENT ON COLUMN tb_polling_config.carddata_check_interval IS '流量检查间隔(秒):正数按间隔,0 不检查(停止继承),NULL 继承优先级更低的配置';
COMMENT ON COLUMN tb_polling_config.package_check_interval IS '套餐检查间隔(秒):正数按间隔,0 不检查(停止继承),NULL 继承优先级更低的配置';
COMMENT ON COLUMN tb_polling_config.card_status_check_interval IS '卡状态检查间隔(秒):正数按间隔,0 不检查(停止继承),NULL 继承优先级更低的配置';