-- ==================================================== -- 定时任务表 -- ==================================================== CREATE SCHEMA IF NOT EXISTS crontab; DROP TABLE IF EXISTS crontab.tb_crontab_task CASCADE; CREATE TABLE crontab.tb_crontab_task ( id VARCHAR(64) NOT NULL, task_id VARCHAR(64) NOT NULL, task_name VARCHAR(100) NOT NULL, task_group VARCHAR(50) NOT NULL DEFAULT 'DEFAULT', meta_id VARCHAR(64) NOT NULL, default_recipient SMALLINT NOT NULL DEFAULT 0, -- 是否使用默认接收人(0:否 1:是) bean_name VARCHAR(100) NOT NULL, method_name VARCHAR(100) NOT NULL, method_params VARCHAR(500) DEFAULT NULL, cron_expression VARCHAR(100) NOT NULL, status SMALLINT NOT NULL DEFAULT 0, -- 任务状态(0:暂停 1:运行中) description VARCHAR(500) DEFAULT NULL, concurrent SMALLINT NOT NULL DEFAULT 0, -- 是否允许并发执行(0:否 1:是) misfire_policy SMALLINT NOT NULL DEFAULT 1, -- 错过执行策略(1:立即执行 2:执行一次 3:放弃执行) creator VARCHAR(64) DEFAULT NULL, updater VARCHAR(64) DEFAULT NULL, create_time TIMESTAMPTZ NOT NULL DEFAULT now(), update_time TIMESTAMPTZ DEFAULT NULL, delete_time TIMESTAMPTZ DEFAULT NULL, deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除(0:否 1:是) PRIMARY KEY (id) ); CREATE INDEX IF NOT EXISTS idx_task_name ON crontab.tb_crontab_task(task_name); CREATE INDEX IF NOT EXISTS idx_bean_name ON crontab.tb_crontab_task(bean_name); CREATE INDEX IF NOT EXISTS idx_status ON crontab.tb_crontab_task(status); CREATE INDEX IF NOT EXISTS idx_deleted ON crontab.tb_crontab_task(deleted); COMMENT ON TABLE crontab.tb_crontab_task IS '定时任务配置表'; COMMENT ON COLUMN crontab.tb_crontab_task.id IS '主键ID'; COMMENT ON COLUMN crontab.tb_crontab_task.task_id IS '任务ID'; COMMENT ON COLUMN crontab.tb_crontab_task.task_name IS '任务名称'; COMMENT ON COLUMN crontab.tb_crontab_task.task_group IS '任务分组'; COMMENT ON COLUMN crontab.tb_crontab_task.meta_id IS '任务元数据ID'; COMMENT ON COLUMN crontab.tb_crontab_task.default_recipient IS '是否使用默认接收人(0:否 1:是)'; COMMENT ON COLUMN crontab.tb_crontab_task.bean_name IS 'Bean名称'; COMMENT ON COLUMN crontab.tb_crontab_task.method_name IS '方法名称'; COMMENT ON COLUMN crontab.tb_crontab_task.method_params IS '方法参数'; COMMENT ON COLUMN crontab.tb_crontab_task.cron_expression IS 'Cron表达式'; COMMENT ON COLUMN crontab.tb_crontab_task.status IS '任务状态(0:暂停 1:运行中)'; COMMENT ON COLUMN crontab.tb_crontab_task.description IS '任务描述'; COMMENT ON COLUMN crontab.tb_crontab_task.concurrent IS '是否允许并发执行(0:否 1:是)'; COMMENT ON COLUMN crontab.tb_crontab_task.misfire_policy IS '错过执行策略(1:立即执行 2:执行一次 3:放弃执行)'; COMMENT ON COLUMN crontab.tb_crontab_task.creator IS '创建者'; COMMENT ON COLUMN crontab.tb_crontab_task.updater IS '更新者'; COMMENT ON COLUMN crontab.tb_crontab_task.create_time IS '创建时间'; COMMENT ON COLUMN crontab.tb_crontab_task.update_time IS '更新时间'; COMMENT ON COLUMN crontab.tb_crontab_task.delete_time IS '删除时间'; COMMENT ON COLUMN crontab.tb_crontab_task.deleted IS '是否删除(0:否 1:是)'; -- ==================================================== -- 定时任务执行日志表 -- ==================================================== DROP TABLE IF EXISTS crontab.tb_crontab_log CASCADE; CREATE TABLE crontab.tb_crontab_log ( id VARCHAR(64) NOT NULL, task_id VARCHAR(64) NOT NULL, task_name VARCHAR(100) NOT NULL, task_group VARCHAR(50) NOT NULL DEFAULT 'DEFAULT', bean_name VARCHAR(100) NOT NULL, method_name VARCHAR(100) NOT NULL, method_params VARCHAR(500) DEFAULT NULL, execute_status SMALLINT NOT NULL, -- 执行状态(0:失败 1:成功) execute_message TEXT DEFAULT NULL, exception_info TEXT DEFAULT NULL, start_time TIMESTAMPTZ NOT NULL, end_time TIMESTAMPTZ DEFAULT NULL, execute_duration INT DEFAULT NULL, create_time TIMESTAMPTZ NOT NULL DEFAULT now(), update_time TIMESTAMPTZ DEFAULT NULL, delete_time TIMESTAMPTZ DEFAULT NULL, deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除(0:否 1:是) PRIMARY KEY (id) ); CREATE INDEX IF NOT EXISTS idx_task_id ON crontab.tb_crontab_log(task_id); CREATE INDEX IF NOT EXISTS idx_log_task_name ON crontab.tb_crontab_log(task_name); CREATE INDEX IF NOT EXISTS idx_execute_status ON crontab.tb_crontab_log(execute_status); CREATE INDEX IF NOT EXISTS idx_start_time ON crontab.tb_crontab_log(start_time); CREATE INDEX IF NOT EXISTS idx_log_deleted ON crontab.tb_crontab_log(deleted); COMMENT ON TABLE crontab.tb_crontab_log IS '定时任务执行日志表'; COMMENT ON COLUMN crontab.tb_crontab_log.id IS '主键ID'; COMMENT ON COLUMN crontab.tb_crontab_log.task_id IS '任务ID'; COMMENT ON COLUMN crontab.tb_crontab_log.task_name IS '任务名称'; COMMENT ON COLUMN crontab.tb_crontab_log.task_group IS '任务分组'; COMMENT ON COLUMN crontab.tb_crontab_log.bean_name IS 'Bean名称'; COMMENT ON COLUMN crontab.tb_crontab_log.method_name IS '方法名称'; COMMENT ON COLUMN crontab.tb_crontab_log.method_params IS '方法参数'; COMMENT ON COLUMN crontab.tb_crontab_log.execute_status IS '执行状态(0:失败 1:成功)'; COMMENT ON COLUMN crontab.tb_crontab_log.execute_message IS '执行结果信息'; COMMENT ON COLUMN crontab.tb_crontab_log.exception_info IS '异常信息'; COMMENT ON COLUMN crontab.tb_crontab_log.start_time IS '开始时间'; COMMENT ON COLUMN crontab.tb_crontab_log.end_time IS '结束时间'; COMMENT ON COLUMN crontab.tb_crontab_log.execute_duration IS '执行时长(毫秒)'; COMMENT ON COLUMN crontab.tb_crontab_log.create_time IS '创建时间'; COMMENT ON COLUMN crontab.tb_crontab_log.update_time IS '更新时间'; COMMENT ON COLUMN crontab.tb_crontab_log.delete_time IS '删除时间'; COMMENT ON COLUMN crontab.tb_crontab_log.deleted IS '是否删除(0:否 1:是)'; -- ==================================================== -- 定时任务元数据表(存储爬虫任务的元数据配置) -- ==================================================== DROP TABLE IF EXISTS crontab.tb_crontab_task_meta CASCADE; CREATE TABLE crontab.tb_crontab_task_meta ( id VARCHAR(64) NOT NULL, meta_id VARCHAR(64) NOT NULL, name VARCHAR(100) NOT NULL, description VARCHAR(500) DEFAULT NULL, category VARCHAR(50) NOT NULL, bean_name VARCHAR(100) NOT NULL, method_name VARCHAR(100) NOT NULL, script_path VARCHAR(255) DEFAULT NULL, param_schema TEXT DEFAULT NULL, auto_publish SMALLINT NOT NULL DEFAULT 0, -- 是否自动发布 sort_order INT DEFAULT 0, creator VARCHAR(64) DEFAULT NULL, updater VARCHAR(64) DEFAULT NULL, create_time TIMESTAMPTZ NOT NULL DEFAULT now(), update_time TIMESTAMPTZ DEFAULT NULL, delete_time TIMESTAMPTZ DEFAULT NULL, deleted SMALLINT NOT NULL DEFAULT 0, -- 是否删除(0:否 1:是) PRIMARY KEY (id), UNIQUE (meta_id) ); CREATE INDEX IF NOT EXISTS idx_category ON crontab.tb_crontab_task_meta(category); CREATE INDEX IF NOT EXISTS idx_meta_deleted ON crontab.tb_crontab_task_meta(deleted); COMMENT ON TABLE crontab.tb_crontab_task_meta IS '定时任务元数据表'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.id IS '主键ID'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.meta_id IS '元数据ID'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.name IS '任务名称'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.description IS '任务描述'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.category IS '任务分类(如:人民日报新闻爬取)'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.bean_name IS 'Bean名称(执行器类名)'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.method_name IS '执行方法名'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.script_path IS 'Python脚本路径(相对于basePath)'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.param_schema IS '参数模板(JSON格式,定义参数名、类型、描述、默认值等)'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.auto_publish IS '是否自动发布'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.sort_order IS '排序号'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.creator IS '创建者'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.updater IS '更新者'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.create_time IS '创建时间'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.update_time IS '更新时间'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.delete_time IS '删除时间'; COMMENT ON COLUMN crontab.tb_crontab_task_meta.deleted IS '是否删除(0:否 1:是)';