All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m37s
- 轮询配置新增套餐状态、资产状态、重置日前窗口与窗口内流量间隔(迁移 248),间隔三态:正数按间隔、0 不检查、空继承 - 配置按 priority, id 排序合并;在库与已销售无套餐未匹配时告警不入队 - 新增优先级整体重排、匹配预览、立即重算到期时间(异步只提前)、分层统计与重置日前加密统计接口 - 已切换日快照计量的卡流量按观测时间归属,激活前用量只记已结算 - 订单购买与实名激活补齐资产级激活锁,激活前对已切换卡结算一次流量,失败只告警不阻塞,结算不触发通道阈值判定
29 lines
3.2 KiB
SQL
29 lines
3.2 KiB
SQL
-- 分层轮询与重置日前加密查流量(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 继承优先级更低的配置';
|