Files
urbanLifeline/urbanLifelineServ/.bin/database/postgres/sql/createTableCrontab.sql
2025-12-05 15:34:02 +08:00

153 lines
8.6 KiB
SQL
Raw Permalink 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.

-- ====================================================
-- 定时任务表
-- ====================================================
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:是)';