-- 运营商账户调度参数(add-carrier-polling-scheduler)。 -- 背景:新调度按运营商账户领取与执行卡任务,每个账户的执行上限、每进程并发、优先占比需要可单独配置。 -- -- 设计选择: -- 1. carrier_id 唯一,一个账户一行;未配置的账户没有记录、使用 yaml 全局默认,不改 tb_carrier。 -- 2. 各参数可空,空表示该项使用全局默认。 -- 3. stop_resume_* 与 sr_inflight_limit 供停复机指令队列(add-stop-resume-command-queue)使用,本次只建列。 -- 4. 不使用数据库外键(ENG-MODEL-001);软删除,后台维护。 CREATE TABLE tb_carrier_polling_param ( id BIGSERIAL PRIMARY KEY, carrier_id BIGINT NOT NULL, inflight_limit INTEGER, card_max_in_flight INTEGER, stop_resume_max_in_flight INTEGER, sr_inflight_limit INTEGER, priority_max_ratio NUMERIC(4, 3), stop_resume_min_interval INTEGER, stop_resume_confirm_delay INTEGER, creator BIGINT NOT NULL DEFAULT 0, updater BIGINT NOT NULL DEFAULT 0, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), deleted_at TIMESTAMPTZ, CONSTRAINT ck_carrier_polling_param_positive CHECK ( (inflight_limit IS NULL OR inflight_limit > 0) AND (card_max_in_flight IS NULL OR card_max_in_flight > 0) AND (stop_resume_max_in_flight IS NULL OR stop_resume_max_in_flight > 0) AND (sr_inflight_limit IS NULL OR sr_inflight_limit > 0) AND (stop_resume_min_interval IS NULL OR stop_resume_min_interval > 0) AND (stop_resume_confirm_delay IS NULL OR stop_resume_confirm_delay > 0)), CONSTRAINT ck_carrier_polling_param_ratio CHECK (priority_max_ratio IS NULL OR (priority_max_ratio > 0 AND priority_max_ratio <= 1)) ); CREATE UNIQUE INDEX uk_carrier_polling_param_carrier ON tb_carrier_polling_param (carrier_id) WHERE deleted_at IS NULL; COMMENT ON TABLE tb_carrier_polling_param IS '运营商账户调度参数:未配置的账户使用全局默认'; COMMENT ON COLUMN tb_carrier_polling_param.carrier_id IS '运营商账户ID'; COMMENT ON COLUMN tb_carrier_polling_param.inflight_limit IS '该账户同时执行卡任务的上限(跨 Worker 实例)'; COMMENT ON COLUMN tb_carrier_polling_param.card_max_in_flight IS '每个 Worker 进程消费该账户卡任务 topic 的 max_in_flight'; COMMENT ON COLUMN tb_carrier_polling_param.stop_resume_max_in_flight IS '每个 Worker 进程消费该账户停复机 topic 的 max_in_flight'; COMMENT ON COLUMN tb_carrier_polling_param.sr_inflight_limit IS '该账户同时执行停复机指令的上限'; COMMENT ON COLUMN tb_carrier_polling_param.priority_max_ratio IS '卡任务每轮领取中优先队列的最大占比(0~1),空表示不限'; COMMENT ON COLUMN tb_carrier_polling_param.stop_resume_min_interval IS '单卡两次停复机网关调用的最小间隔(秒)'; COMMENT ON COLUMN tb_carrier_polling_param.stop_resume_confirm_delay IS '停复机结果未知后查卡状态确认的延迟(秒)';