CREATE TABLE timing_task
(
    id                  BIGSERIAL PRIMARY KEY,              -- 主键ID，自动递增
    task_name           VARCHAR(255) NOT NULL,              -- 任务名称，不允许为空
    inspector_ids       VARCHAR(255) NOT NULL,              -- 巡检人ids，不允许为空
    inspection_location VARCHAR(255) NOT NULL,              -- 巡检地点，不允许为空
    -- 定时配置
    frequency_type      VARCHAR(20)  NOT NULL CHECK (frequency_type IN ('DAILY', 'WEEKLY', 'MONTHLY', 'QUARTERLY')),
    frequency_detail    VARCHAR(100),                       -- 具体时间配置

    -- 每日任务配置示例：frequency_type='DAILY', frequency_detail='14:30'
    -- 每周任务配置示例：frequency_type='WEEKLY', frequency_detail='MON;14:30'
    -- 每月任务配置示例：frequency_type='MONTHLY', frequency_detail='15;14:30' (每月15日14:30)
    -- 每季度任务配置示例：frequency_type='QUARTERLY', frequency_detail='15;14:30' (每季度第一个月15日14:30)

    next_execution_time TIMESTAMP,                          -- 下次执行时间
    last_execution_time TIMESTAMP,                          -- 最后执行时间
    is_active           BOOLEAN               DEFAULT TRUE, -- 是否激活
    remarks             TEXT,                               -- 备注
    registrant_id       BIGINT,                             -- 登记人id，不允许为空
    registrant          VARCHAR(255) NOT NULL,              -- 登记人，不允许为空
    registration_date   DATE         NOT NULL,              -- 登记日期，不允许为空

    deleted             INT          NOT NULL DEFAULT 0,    -- 软删除标志：0=未删除，1=已删除
    create_by           VARCHAR(255),                       -- 创建人用户名
    create_time         TIMESTAMP WITHOUT TIME ZONE,        -- 创建时间，默认当前时间
    update_by           VARCHAR(255),                       -- 最后更新人用户名
    update_time         TIMESTAMP WITHOUT TIME ZONE         -- 最后更新时间，默认当前时间
);

-- 为表添加注释
COMMENT
ON TABLE timing_task IS '定时巡检任务表';

-- 为字段添加注释
COMMENT
ON COLUMN timing_task.id IS '主键ID';
COMMENT
ON COLUMN timing_task.task_name IS '任务名称';
COMMENT
ON COLUMN timing_task.inspector_ids IS '巡检人';
COMMENT
ON COLUMN timing_task.inspection_location IS '巡检地点';
COMMENT
ON COLUMN timing_task.frequency_type IS '频次';
COMMENT
ON COLUMN timing_task.remarks IS '备注';
COMMENT
ON COLUMN timing_task.registrant_id IS '登记人id';
COMMENT
ON COLUMN timing_task.registrant IS '登记人';
COMMENT
ON COLUMN timing_task.registration_date IS '登记日期';
COMMENT
ON COLUMN timing_task.deleted IS '软删除标志，0=未删除，1=已删除';
COMMENT
ON COLUMN timing_task.create_by IS '创建该记录的用户';
COMMENT
ON COLUMN timing_task.create_time IS '记录创建时间';
COMMENT
ON COLUMN timing_task.update_by IS '最后修改该记录的用户';
COMMENT
ON COLUMN timing_task.update_time IS '记录最后更新时间';