- 重构勘察业务:移除SOP相关表,新增勘察明细表支持建筑/楼层/房间/照片管理 - 新增定时任务人性化频率配置,支持分钟/小时/天/周/月/自定义六种模式 - 新增频率预览接口,支持配置转换为cron表达式与执行时间预览 - 更新系统品牌名称为鑫潼智电,修改全局标题与登录页文案
54 lines
3.0 KiB
PL/PgSQL
54 lines
3.0 KiB
PL/PgSQL
-- 定时任务人性化频率配置
|
|
-- 背景:定时任务配置目前只有裸 cron 输入框,不直观。本次为 sys_job 增加
|
|
-- freq_type / freq_config 结构化字段,cron_expression 仍作为调度唯一真值,
|
|
-- freq_type / freq_config 仅用于配置界面回填与展示(不参与调度判断)。
|
|
-- 幂等:列用 ADD COLUMN IF NOT EXISTS;存量回填按 job_key 且仅在该行仍是默认值时更新。
|
|
BEGIN;
|
|
|
|
-- ------------------------------------------------------------
|
|
-- 1) sys_job 新增频率配置字段
|
|
-- ------------------------------------------------------------
|
|
ALTER TABLE sys_job
|
|
ADD COLUMN IF NOT EXISTS freq_type VARCHAR(16) NOT NULL DEFAULT 'custom', -- 频率类型: minute/hour/day/week/month/custom
|
|
ADD COLUMN IF NOT EXISTS freq_config JSONB NOT NULL DEFAULT '{}'::jsonb; -- 频率配置(人性化配置表单回填用)
|
|
|
|
COMMENT ON COLUMN sys_job.freq_type IS '频率类型: minute每N分钟 hour每N小时 day每天 week每周 month每月 custom自定义';
|
|
COMMENT ON COLUMN sys_job.freq_config IS '频率配置(JSONB,仅用于配置界面回填与展示,不参与调度判断)';
|
|
|
|
-- ------------------------------------------------------------
|
|
-- 2) 存量任务回填
|
|
-- 仅在仍是默认值(custom + 空配置)时更新,避免覆盖运维已在页面上的修改;
|
|
-- 未命中的行保持 custom,配置界面会以「自定义」展示原 cron 表达式。
|
|
-- ------------------------------------------------------------
|
|
UPDATE sys_job
|
|
SET freq_type = 'minute', freq_config = '{"interval":5}'::jsonb
|
|
WHERE job_key = 'demo_heartbeat' AND freq_type = 'custom' AND freq_config = '{}'::jsonb
|
|
AND cron_expression = '*/5 * * * *';
|
|
|
|
UPDATE sys_job
|
|
SET freq_type = 'day', freq_config = '{"times":["03:00"]}'::jsonb
|
|
WHERE job_key = 'log_clean' AND freq_type = 'custom' AND freq_config = '{}'::jsonb
|
|
AND cron_expression IN ('0 3 * * *', '0 0 3 * * *');
|
|
|
|
UPDATE sys_job
|
|
SET freq_type = 'day', freq_config = '{"times":["08:00"]}'::jsonb
|
|
WHERE job_key = 'notice_scan' AND freq_type = 'custom' AND freq_config = '{}'::jsonb
|
|
AND cron_expression IN ('0 8 * * *', '0 0 8 * * *');
|
|
|
|
-- ------------------------------------------------------------
|
|
-- 3) cron 段数归一:notice_scan 原为 6 段带秒表达式,秒=0 时与 5 段等价,
|
|
-- 统一为 5 段便于配置界面回填(行为不变,仍为每天 08:00)
|
|
-- ------------------------------------------------------------
|
|
UPDATE sys_job
|
|
SET cron_expression = '0 8 * * *'
|
|
WHERE job_key = 'notice_scan' AND cron_expression = '0 0 8 * * *';
|
|
|
|
-- ------------------------------------------------------------
|
|
-- 4) 兜底:自定义类型的 freq_config 同步为当前表达式,保证配置界面可回填
|
|
-- (应用侧每次保存都会同时写入两者,此处仅覆盖历史数据)
|
|
-- ------------------------------------------------------------
|
|
UPDATE sys_job
|
|
SET freq_config = jsonb_build_object('expression', cron_expression)
|
|
WHERE freq_type = 'custom';
|
|
|
|
COMMIT; |